Selaa lähdekoodia

监理中期支付证书

yangyj 1 vuosi sitten
vanhempi
commit
2f580e6625

+ 4 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/MeterPeriodInfo.java

@@ -31,6 +31,8 @@ public class MeterPeriodInfo implements  DataModel{
     private LocalDate formPrintDate;
     @JSONField(name = "key_12",label="当期年份",ordinal = 3)
     private String year;
+    @JSONField(name = "key_13",label="当期月份",ordinal = 3)
+    private String month;
     /**上期累计金额*/
     @JSONField(name = "key_4",label="上期累计金额",ordinal = 4)
     private String  preTotal;
@@ -68,6 +70,7 @@ public class MeterPeriodInfo implements  DataModel{
     private LocalDate endDate;
 
     public void init(){
-       this.year= String.valueOf(formPrintDate.getYear());
+        this.month= String.valueOf(formPrintDate.getMonth());
+        this.year= String.valueOf(formPrintDate.getYear());
     }
 }

+ 10 - 9
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/SupervisionCertificate.java

@@ -15,22 +15,23 @@ public class SupervisionCertificate implements  DataModel{
     public static final String TBN_CH="监理服务费期中支付证书";
     @JSONField(name = "key_1",label="合同金额月数",ordinal = 1)
     private String month;
-    @JSONField(name = "key_1",label="合同金额单价",ordinal = 1)
+    @JSONField(name = "key_2",label="合同金额单价",ordinal = 1)
     private String price;
-    @JSONField(name = "key_1",label="合同金额",ordinal = 1)
+    @JSONField(name = "key_3",label="合同金额",ordinal = 1)
     private String contractAmount;
-    @JSONField(name = "key_1",label="本期末完成金额",ordinal = 1)
+    @JSONField(name = "key_4",label="本期末完成金额",ordinal = 1)
     private String periodEndAmount;
-    @JSONField(name = "key_1",label="本期末完成比例",ordinal = 1)
+    @JSONField(name = "key_5",label="本期末完成比例",ordinal = 1)
     private String periodEndRatio;
-    @JSONField(name = "key_1",label="上期末完成金额",ordinal = 1)
+    @JSONField(name = "key_6",label="上期末完成金额",ordinal = 1)
     private String previousEndAmount;
-    @JSONField(name = "key_1",label="上期末完成比例",ordinal = 1)
+    @JSONField(name = "key_7",label="上期末完成比例",ordinal = 1)
     private String previousEndRatio;
-    @JSONField(name = "key_1",label="本期完成金额",ordinal = 1)
+    @JSONField(name = "key_8",label="本期完成金额",ordinal = 1)
     private String currentAmount;
-    @JSONField(name = "key_1",label="本期完成比例",ordinal = 1)
+    @JSONField(name = "key_9",label="本期完成比例",ordinal = 1)
     private String currentRatio;
     private String itemName;
-
+    /**是否是汇总小结数据,输出的时候显示,计算的时候不参与*/
+    private Boolean isSummary=false;
 }

+ 28 - 15
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -376,25 +376,38 @@ public class ExecutorMeter extends FormulaExecutor {
             List<Payment> pre=tec.meterInfo.getPaymentListMap().get(MeterInfo.PRE);
             List<Payment> cur=tec.meterInfo.getPaymentListMap().get(MeterInfo.CUR);
             List<Payment> end=tec.meterInfo.getPaymentListMap().get(MeterInfo.END);
+            Map<SupervisionCertificate,Map<Function<SupervisionCertificate,String>,Consumer<String>>> summaryConfigMap = new HashMap<>();
             itemNamesMap.forEach((k,v)->{
                 SupervisionCertificate sc = new SupervisionCertificate();
                 sc.setItemName(k);
-                List<Payment> p = pre.stream().filter(e->getPrefix(e.getNumber()).equals("100")).collect(Collectors.toList());
-                List<Payment> c = cur.stream().filter(e->getPrefix(e.getNumber()).equals("100")).collect(Collectors.toList());
-                List<Payment> t = end.stream().filter(e->getPrefix(e.getNumber()).equals("100")).collect(Collectors.toList());
-                Payment sample=p.get(0);
-                sc.setPrice(sample.getPrice());
-                sc.setContractAmount(sample.getContractMoney());
-                /*本期*/
-                sc.setCurrentAmount(c.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
-                sc.setCurrentRatio(ratioFc.apply(sc.getCurrentAmount(),sc.getContractAmount()));
-                /*上期末*/
-                sc.setPreviousEndAmount(p.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
-                sc.setPreviousEndRatio(ratioFc.apply(sc.getPreviousEndAmount(),sc.getContractAmount()));
-                /*本期末*/
-                sc.setPeriodEndAmount(t.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
-                sc.setPeriodEndRatio(ratioFc.apply(sc.getPeriodEndAmount(),sc.getContractAmount()));
+                sc.setMonth(tec.periodInfo.getMonth());
+                if(!v.isEmpty()&&!v.equals("-1")){
+                    List<Payment> p = pre.stream().filter(e->getPrefix(e.getNumber()).equals(v)).collect(Collectors.toList());
+                    List<Payment> c = cur.stream().filter(e->getPrefix(e.getNumber()).equals(v)).collect(Collectors.toList());
+                    List<Payment> t = end.stream().filter(e->getPrefix(e.getNumber()).equals(v)).collect(Collectors.toList());
+                   t.stream().findFirst().ifPresent(sample->{
+                        sc.setPrice(sample.getPrice());
+                        sc.setContractAmount(sample.getContractMoney());
+                        /*本期*/
+                        sc.setCurrentAmount(c.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
+                        sc.setCurrentRatio(ratioFc.apply(sc.getCurrentAmount(),sc.getContractAmount()));
+                        /*上期末*/
+                        sc.setPreviousEndAmount(p.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
+                        sc.setPreviousEndRatio(ratioFc.apply(sc.getPreviousEndAmount(),sc.getContractAmount()));
+                        /*本期末*/
+                        sc.setPeriodEndAmount(t.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
+                        sc.setPeriodEndRatio(ratioFc.apply(sc.getPeriodEndAmount(),sc.getContractAmount()));
+                    });
+                }else if(v.equals("-1")){
+                    sc.setIsSummary(true);
+                    addGetSetConfig(sc,summaryConfigMap,SupervisionCertificate::getContractAmount,sc::setContractAmount);
+                    addGetSetConfig(sc,summaryConfigMap,SupervisionCertificate::getPeriodEndAmount,sc::setPeriodEndAmount);
+                    addGetSetConfig(sc,summaryConfigMap,SupervisionCertificate::getPreviousEndAmount,sc::setPreviousEndAmount);
+                    addGetSetConfig(sc,summaryConfigMap,SupervisionCertificate::getCurrentAmount,sc::setCurrentAmount);
+                }
             });
+            /*分行合计列*/
+            fieldGetSet(summaryConfigMap,x->!x.getIsSummary());
             putOut();
         }
     }