yangyj hace 1 año
padre
commit
ad4fb6b668

+ 24 - 19
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -63,14 +63,16 @@ public class ExecutorMeter extends FormulaExecutor {
 
    /**根据清单编号获取支付项目章节编号*/
     public String getPrefix(String fn){
-        for(InventoryForm itf:chapters){
-            String prefix=itf.getFormNumber();
+        if(fn!=null) {
             fn= fn.split("-")[0];
-            if(BaseUtils.isNumber(fn)){
-                fn=String.valueOf(100*(Integer.parseInt(fn)/100));
-            }
-            if(fn.equals(prefix)){
-                return prefix;
+            for (InventoryForm itf : chapters) {
+                String prefix = itf.getFormNumber();
+                if (BaseUtils.isNumber(fn)) {
+                    fn = String.valueOf(100 * (Integer.parseInt(fn) / 100));
+                }
+                if (fn.startsWith(prefix)) {
+                    return prefix;
+                }
             }
         }
         return fn;
@@ -289,6 +291,7 @@ public class ExecutorMeter extends FormulaExecutor {
                         )
                 ));
 
+
        private  Function<List<Payment>, Map<String, BigDecimal>> moneySum= data-> data.stream()
                 .collect(Collectors.groupingBy(
                         payment -> getPrefix(payment.getNumber()),
@@ -336,18 +339,20 @@ public class ExecutorMeter extends FormulaExecutor {
                  for(Map.Entry<String,BigDecimal[]> cm:contractMoney.entrySet()){
                        if(Func.isEmpty(cm.getKey()))continue;
                      InventoryForm inventoryForm=dictMap.get(cm.getKey());
-                      InterimPaymentCertificate ipc = new InterimPaymentCertificate(inventoryForm.getFormName());
-                      /*中期支付汇总的章次*/
-                      String ch=inventoryForm.getFormNumber();
-                      ipc.setChapterSeq(ch+(BaseUtils.isNumber(ch)?"章":""));
-                      BigDecimal[]  bmMoney =cm.getValue();
-                      ipc.setContractAmount(bmMoney[0].toString());
-                      ipc.setRevisedAmount(bmMoney[1].toString());
-                      ipc.setPreviousPeriodEndPay(StringUtils.handleNull(previousMoney.get(cm.getKey())));
-                      ipc.setCurrentPeriodPay(StringUtils.handleNull(currentMoney.get(cm.getKey())));
-                      /*由已知求未知*/
-                      ipc.calculate();
-                      dataList.add(ipc);
+                     if(inventoryForm!=null) {
+                         InterimPaymentCertificate ipc = new InterimPaymentCertificate(inventoryForm.getFormName());
+                         /*中期支付汇总的章次*/
+                         String ch = inventoryForm.getFormNumber();
+                         ipc.setChapterSeq(ch + (BaseUtils.isNumber(ch) ? "章" : ""));
+                         BigDecimal[] bmMoney = cm.getValue();
+                         ipc.setContractAmount(bmMoney[0].toString());
+                         ipc.setRevisedAmount(bmMoney[1].toString());
+                         ipc.setPreviousPeriodEndPay(StringUtils.handleNull(previousMoney.get(cm.getKey())));
+                         ipc.setCurrentPeriodPay(StringUtils.handleNull(currentMoney.get(cm.getKey())));
+                         /*由已知求未知*/
+                         ipc.calculate();
+                         dataList.add(ipc);
+                     }
                  }
              }
             /*数据获取end*/

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InterimPayCertificateController.java

@@ -45,6 +45,8 @@ import org.springblade.core.boot.ctrl.BladeController;
 @Api(value = "中期支付证书", tags = "中期支付证书接口")
 public class InterimPayCertificateController extends BladeController {
 
+	private final TaskController taskController;
+
 	private final IInterimPayCertificateService interimPayCertificateService;
 
 	/**
@@ -55,6 +57,7 @@ public class InterimPayCertificateController extends BladeController {
 	@ApiOperation(value = "新增", notes = "传入interimPayCertificate")
 	public R add(@Valid @RequestBody InterimPayCertificate interimPayCertificate) {
 		interimPayCertificateService.add(interimPayCertificate);
+		taskController.calculate(interimPayCertificate.getId().toString(),0);
 		return R.success("新增成功");
 	}
 
@@ -77,6 +80,7 @@ public class InterimPayCertificateController extends BladeController {
 	@ApiOperation(value = "修改", notes = "传入interimPayCertificate,只需要传入和新增时相同的参数")
 	public R update(@Valid @RequestBody InterimPayCertificate interimPayCertificate) {
 		interimPayCertificateService.update2(interimPayCertificate);
+		taskController.calculate(interimPayCertificate.getId().toString(),0);
 		return R.success("修改成功");
 	}
 

+ 7 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -2667,9 +2667,13 @@ public class TaskController extends BladeController {
     }
 
     public R<String> calculate(String reportId, Integer type) {
-        if (BaseUtils.isNumber(reportId) && BaseUtils.isNumber(type)) {
-            Report report = generateReport(Long.parseLong(reportId), type);
-            return generateReportsPdf(report);
+        try {
+            if (BaseUtils.isNumber(reportId) && BaseUtils.isNumber(type)) {
+                Report report = generateReport(Long.parseLong(reportId), type);
+                return generateReportsPdf(report);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
         }
         return R.fail("计算失败");
     }