Преглед на файлове

动员付款 2-15排序

yangyj преди 6 месеца
родител
ревизия
90bd9f8168

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorInit.java

@@ -244,6 +244,8 @@ public class ExecutorInit extends FormulaExecutor {
         }
         return sort;
     };
+
+
     private void payment(){
         List<Payment> paymentList = paymentListFc.apply(tec.getContractId());
 

+ 40 - 18
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -1047,9 +1047,10 @@ public class ExecutorMeter extends FormulaExecutor {
                      if(tec.meterInfo.getStartPayFormAll()!=null){
                         List<StartPayForm> startPayForm = tec.getMeterInfo().getStartPayFormAll();
                         if(startPayForm.size()>0){
-                            if(tec.getPeriodInfo().getStartIds()!=null) {
+                            if(StringUtils.isNotEmpty(tec.getPeriodInfo().getStartIds())) {
                                 String[] startIds = tec.getPeriodInfo().getStartIds().split(",");
                                 if (Arrays.stream(startIds).anyMatch(BaseUtils::isNumber)) {
+                                    /*获取关联期*/
                                     List<StartPayForm> list = startPayForm.stream().sorted(Comparator.comparingInt(StartPayForm::getPeriodSort)).filter(e -> {
                                         for (String s : startIds) {
                                             if (StringUtils.isEquals(s, e.getMeterPeriodId())) {
@@ -1061,12 +1062,18 @@ public class ExecutorMeter extends FormulaExecutor {
                                     if (Func.isNotEmpty(list)) {
                                         StartPayForm relate = list.get(list.size() - 1);
                                         BigDecimal pre = startPayForm.stream().filter(s -> s.getPeriodSort() <= relate.getPeriodSort()).map(s -> BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);
-                                        BigDecimal cur = list.stream().filter(s -> s.getPeriodSort() <= relate.getPeriodSort()).map(s -> BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);
+                                        BigDecimal cur = list.stream().map(s -> BaseUtils.str2BigDecimal(s.getMeterMoney())).reduce(BigDecimal.ZERO, BigDecimal::add);
                                         startPay.setCurrentPeriodPay(cur.toPlainString());
                                         startPay.setPreviousPeriodEndPay(pre.toPlainString());
                                         startPay.setCurrentPeriodEndPay(addFc.apply(startPay.getCurrentPeriodPay(), startPay.getPreviousPeriodEndPay()));
                                     }
                                 }
+                            }else{
+                                InterimPayCertificateItem preStart = previousMap.get("动员预付款");
+                                if(preStart!=null) {
+                                    startPay.setPreviousPeriodEndPay(preStart.getCurrentPeriodEndPay());
+                                    startPay.setCurrentPeriodEndPay(preStart.getCurrentPeriodEndPay());
+                                }
                             }
                         }
                      }
@@ -2080,7 +2087,14 @@ public class ExecutorMeter extends FormulaExecutor {
             return pnb;
         };
 
-
+        private ToIntFunction<String> meterApplySortFc= number -> {
+            int sort=9999999;
+            if(number!=null&&!number.isEmpty()){
+                String[] arr = number.split("[^\\d.]+");
+                sort=IntStream.range(1,arr.length).boxed().mapToInt(i-> (int) (BaseUtils.obj2IntegerZero(arr[i])*Math.pow(10,(6-2*i)))).sum();
+            }
+            return sort;
+        };
 
         @Override
         public void parse() {
@@ -2100,21 +2114,29 @@ public class ExecutorMeter extends FormulaExecutor {
                    imps.setItemName(payment.getName());
                    imps.setFormNumber(payment.getNumber());
                    imps.setCompleted(ps.stream().map(e->BaseUtils.str2BigDecimal(e.getCompleted())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
-                   imps.setMoney(ps.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString());
-                   FormulaUtils.getScale(payment.getUnit()).ifPresent(scale->{
-                       imps.setCompleted(BaseUtils.str2BigDecimal(imps.getCompleted()).setScale(scale,RoundingMode.HALF_UP).toPlainString());
-                       imps.setMoney(BaseUtils.str2BigDecimal(multiFc.apply(imps.getCompleted(), imps.getPrice())).setScale(0,RoundingMode.HALF_UP).toPlainString());
-                   });
-                   imps.setMeterNumber("");
-                   addList.add(imps);
-                   /*部位显示*/
-                   for(Payment pay:ps){
-                       MeterApply meterApply = meterApplyGroup.get(pay.getMiddleMeterId());
-                       InterimMeterPaySummary part = new InterimMeterPaySummary();
-                       part.setItemName(meterApply.getEngineerDivide());
-                       part.setMeterNumber(meterApply.getMeterNumber());
-                       part.setCompleted(pay.getCompleted().toString());
-                       addList.add(part);
+                   if(BaseUtils.obj2DoubleZero(imps.getCompleted())>0) {
+                       imps.setMoney(ps.stream().map(e -> BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString());
+                       FormulaUtils.getScale(payment.getUnit()).ifPresent(scale -> {
+                           imps.setCompleted(BaseUtils.str2BigDecimal(imps.getCompleted()).setScale(scale, RoundingMode.HALF_UP).toPlainString());
+                           imps.setMoney(BaseUtils.str2BigDecimal(multiFc.apply(imps.getCompleted(), imps.getPrice())).setScale(0, RoundingMode.HALF_UP).toPlainString());
+                       });
+                       imps.setMeterNumber("");
+                       addList.add(imps);
+                       /*部位显示*/
+                       List<InterimMeterPaySummary> partList = new ArrayList<>();
+                       for (Payment pay : ps) {
+                           MeterApply meterApply = meterApplyGroup.get(pay.getMiddleMeterId());
+                           InterimMeterPaySummary part = new InterimMeterPaySummary();
+                           part.setItemName(meterApply.getEngineerDivide());
+                           part.setMeterNumber(meterApply.getMeterNumber());
+                           part.setCompleted(pay.getCompleted().toString());
+                           partList.add(part);
+                       }
+                       partList.removeIf(e->BaseUtils.obj2DoubleZero(e.getCompleted())<=0);
+                       if(partList.size()>0){
+                           partList.sort(Comparator.comparingInt(e->meterApplySortFc.applyAsInt(e.getMeterNumber())));
+                           addList.addAll(partList);
+                       }
                    }
                });
                dataList.addAll(addList);