Răsfoiți Sursa

中期汇总至上期累计支付

yangyj 1 an în urmă
părinte
comite
2a5a0391c7

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/InterimPaymentSummary.java

@@ -28,6 +28,9 @@ public class InterimPaymentSummary {
     /**变更后的金额*/
     @JSONField(name = "key_4",label="变更后的金额",ordinal = 4)
     private String revisedAmount;
+    /**上期累计支付*/
+    @JSONField(name = "key_11",label="至上期累计支付",ordinal = 5)
+    private String previousPeriodEndPay;
     /**本次批准支付金额*/
     @JSONField(name = "key_5",label="本次批准支付金额",ordinal = 5)
     private String currentPeriodPay;

+ 10 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -345,10 +345,10 @@ public class ExecutorMeter extends FormulaExecutor {
                        if(Func.isEmpty(cm.getKey()))continue;
                      InventoryForm inventoryForm=dictMap.get(cm.getKey());
                      if(inventoryForm!=null) {
-                         InterimPaymentCertificate ipc = new InterimPaymentCertificate(inventoryForm.getFormName());
                          /*中期支付汇总的章次*/
                          String ch = inventoryForm.getFormNumber();
-                         ipc.setChapterSeq(ch + (BaseUtils.isNumber(ch) ? "章" : ""));
+                         InterimPaymentCertificate ipc = new InterimPaymentCertificate(ch + (BaseUtils.isNumber(ch) ? "章" : ""));
+                         ipc.setChapterSeq(ipc.getItemName());
                          BigDecimal[] bmMoney = cm.getValue();
                          ipc.setContractAmount(bmMoney[0].toString());
                          ipc.setRevisedAmount(bmMoney[1].toString());
@@ -470,7 +470,7 @@ public class ExecutorMeter extends FormulaExecutor {
             /**支付金额*/
             private BigDecimal money=BigDecimal.ZERO;
             /**本次支付金额*/
-            private BigDecimal currentPeriodPay=BigDecimal.ZERO;
+           /* private BigDecimal currentPeriodPay=BigDecimal.ZERO;*/
             /**累计支付B金额*/
             private BigDecimal currentPeriodEndPay=BigDecimal.ZERO;
 
@@ -503,8 +503,7 @@ public class ExecutorMeter extends FormulaExecutor {
             /*当前期合并往期计算累计值*/
             public Summary merge(Summary previous){
                  if(previous!=null){
-                     this.currentPeriodPay=this.money;
-                     this.currentPeriodEndPay=this.currentPeriodPay.add(previous.money);
+                     this.currentPeriodEndPay=this.money.add(previous.money);
                      this.completed=this.completed+previous.completed;
                  }
                 return this;
@@ -539,7 +538,9 @@ public class ExecutorMeter extends FormulaExecutor {
             List<SubprojectInterimPaymentSummary> totalList = new ArrayList<>();
             List<String> numbers=  paymentsPeriodEnd.stream().map(Payment::getNumber).distinct().collect(Collectors.toList());
             numbers.forEach(number->{
+                /*往期汇总*/
                 Summary pre =preSummary.get(number);
+                /*本期汇总*/
                 Summary cur = currentSummary.get(number);
                 SubprojectInterimPaymentSummary sis = new SubprojectInterimPaymentSummary();
                 Summary main =cur;
@@ -553,7 +554,6 @@ public class ExecutorMeter extends FormulaExecutor {
                 sis.setChangeMoney(main.getChangeMoney().toString());
                 if(cur!=null){
                     sis.setCurrentPeriodCompleted(cur.getCompleted().toString());
-                    sis.setCurrentPeriodPay(cur.getCurrentPeriodPay().toString());
                 }
                 if(pre!=null){
                     sis.setPreviousPeriodPay(pre.getMoney().toString());
@@ -561,9 +561,12 @@ public class ExecutorMeter extends FormulaExecutor {
                 }
                 if(cur!=null&&pre!=null){
                     main.merge(pre);
+                }else{
+                    /*如果只有其中一项,则不需要合并金额*/
+                    main.setCurrentPeriodEndPay(main.getMoney());
                 }
                 sis.setCompleted(main.getCompleted().toString());
-                sis.setCurrentPeriodPay(main.getCurrentPeriodPay().toString());
+                sis.setCurrentPeriodPay(main.getMoney().toString());
                 sis.setCurrentPeriodEndPay(main.getCurrentPeriodEndPay().toString());
                 sis.setPayRatio(ratioFc.apply(sis.getCurrentPeriodEndPay(),sis.getChangeMoney()));
                 totalList.add(sis);