yangyj 6 months ago
parent
commit
0a29d81964

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

@@ -26,11 +26,11 @@ public class InventoryForm {
     private String currentPrice;
     /*中标价格*/
     private  String bidPrice;
-    /*合同数量*/
-    private Integer contractTotal;
-    /*合同金额*/
+    /**合同数量*/
+    private String contractTotal;
+    /**合同金额*/
     private String contractMoney;
-    /*变更后的金额*/
+    /**变更后的金额*/
     private String changeMoney;
 
 }

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

@@ -33,11 +33,11 @@ public class Payment {
     /**单位*/
     private String unit;
     /**合同数量*/
-    private Integer contractTotal;
+    private String contractTotal;
     /**变更数量*/
-    private Integer changeTotal;
+    private String changeTotal;
     /**完成数量*/
-    private Double completed;
+    private String completed;
     /**消费金额*/
     private String money;
     /**章节*/

+ 2 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/SubInterimMeterPaySummary.java

@@ -84,11 +84,11 @@ public class SubInterimMeterPaySummary implements  DataModel{
         this.setCurrentPeriodPay(list.stream().filter(BaseUtils::isNumber).map(BigDecimal::new).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
     }
 
-    public void completedAdd(Double n){
+    public void completedAdd(String n){
         List<Object> list = new ArrayList<>();
         list.add(this.getCompleted());
         list.add(n);
-        this.setCompleted(String.valueOf(list.stream().filter(BaseUtils::isNumber).map(Object::toString).mapToDouble(BaseUtils::obj2DoubleZero).sum()));
+        this.setCompleted(list.stream().map(BaseUtils::str2BigDecimal).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
     }
 
     /*获取分项工程元素码*/

+ 17 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -1535,9 +1535,9 @@ public class ExecutorMeter extends FormulaExecutor {
             /**计量单位*/
             private String unit;
             /**合同数量*/
-            private Integer contractTotal=0;
+            private BigDecimal contractTotal=BigDecimal.ZERO;
             /**变更数量*/
-            private Integer changeTotal =0;
+            private BigDecimal changeTotal =BigDecimal.ZERO;
             /**完成数量*/
             private BigDecimal completed=BigDecimal.ZERO;
             /**单价*/
@@ -1562,8 +1562,8 @@ public class ExecutorMeter extends FormulaExecutor {
                     this.formNumber=p.getNumber();
                     this.itemName=p.getName();
                     this.unit = p.getUnit();
-                    this.contractTotal=p.getContractTotal();
-                    this.changeTotal = p.getChangeTotal();
+                    this.contractTotal=BaseUtils.str2BigDecimal(p.getContractTotal());
+                    this.changeTotal = BaseUtils.str2BigDecimal(p.getChangeTotal());
                     this.completed =BaseUtils.str2BigDecimal(p.getCompleted());
                     this.contractMoney =new BigDecimal(p.getContractMoney());
                     this.changeMoney =new BigDecimal(p.getChangeMoney());
@@ -2280,6 +2280,9 @@ public class ExecutorMeter extends FormulaExecutor {
        private Function<Payment,String> chapterPreFixFc=payment -> {
             String pnb=  payment.getNumber().split("-")[0];
             if(BaseUtils.isNumber(pnb)){
+                if(payment.getNumber().contains(BTDL)){
+                   return  100 * (Integer.parseInt(pnb) / 100)+BTDL;
+                }
                 return 100 * (Integer.parseInt(pnb) / 100)+"";
             }
             return pnb;
@@ -2300,6 +2303,7 @@ public class ExecutorMeter extends FormulaExecutor {
             List<MeterApply> meterApplyList=tec.meterInfo.getMeterApplyList();
             Map<Long,MeterApply> meterApplyGroup = meterApplyList.stream().collect(Collectors.toMap(MeterApply::getId,m->m,(v1,v2)->v1));
            LinkedHashMap<String,List<Payment>>  group= current.stream().collect(Collectors.groupingBy(chapterPreFixFc,LinkedHashMap::new,Collectors.toList()));
+           String last= new LinkedList<>(group.keySet()).getLast();
            group.forEach((k,v)->{
                List<InterimMeterPaySummary> addList= new ArrayList<>();
                /*先按编号分组,再归集*/
@@ -2327,7 +2331,7 @@ public class ExecutorMeter extends FormulaExecutor {
                            InterimMeterPaySummary part = new InterimMeterPaySummary();
                            part.setItemName(meterApply.getEngineerDivide());
                            part.setMeterNumber(meterApply.getMeterNumber());
-                           part.setCompleted(pay.getCompleted().toString());
+                           part.setCompleted(pay.getCompleted());
                            partList.add(part);
                        }
                        partList.removeIf(e->BaseUtils.obj2DoubleZero(e.getCompleted())<=0);
@@ -2339,6 +2343,8 @@ public class ExecutorMeter extends FormulaExecutor {
                });
                dataList.addAll(addList);
                int add= capacity-addList.size()%capacity-1;
+               boolean isLast= last.equals(k);
+               if(isLast) add--;
                if(add>0){
                    dataList.addAll(Collections.nCopies(add,new InterimMeterPaySummary()));
                }
@@ -2346,6 +2352,12 @@ public class ExecutorMeter extends FormulaExecutor {
                String sum=addList.stream().map(InterimMeterPaySummary::getMoney).map(p->BaseUtils.str2BigDecimal(p).setScale(0,RoundingMode.HALF_UP)).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString();
                chapter.setMoney(sum);
                dataList.add(chapter);
+               if(isLast){
+                   InterimMeterPaySummary total = new InterimMeterPaySummary("合计");
+                   String st=dataList.stream().filter(s->"章小计".equals(s.getItemName())).map(InterimMeterPaySummary::getMoney).map(BaseUtils::str2BigDecimal).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString();
+                   total.setMoney(st);
+                   dataList.add(total);
+               }
            });
             tec.periodInfo.setSummaryNumber(String.valueOf(BaseUtils.sliceNumber(dataList.size(),capacity)));
             putOut(InterimMeterPaySummary.class);