yangyj 11 месяцев назад
Родитель
Сommit
b44817ec5e

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

@@ -77,7 +77,7 @@ public class ConstructionSchedule implements  DataModel{
     private String itemProgress;
     /**单项计划完成*/
     @JSONField(name = "key_26",label="本期末累计占该合同金额-ZJ",ordinal = 12)
-    private String prePayPercent;
+    private String currentEndPayPercent;
     @JSONField(name = "key_19",label="本期占该合同金额-ZJ",ordinal = 12)
     private String currentPayPercent;
     /**本期末累计占变更后的总金额*/

+ 10 - 8
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -2253,8 +2253,9 @@ public class CustomFunction {
                             for (int i = 0; i < as.length; i++) {
                                 String s = as[i];
                                 cur = s;
-                                int scale = (int) Math.max(getScale(s) - Math.log10(xND), 0);
-                                d.append(StringUtils.number2String(Double.parseDouble(s) * xND, scale)).append(i != as.length - 1 && m != null ? m : "");
+                              /*  int scale = (int) Math.max(getScale(s) - Math.log10(xND), 0);
+                                d.append(StringUtils.number2String(Double.parseDouble(s) * xND, scale)).append(i != as.length - 1 && m != null ? m : "");*/
+                                d.append(BaseUtils.str2BigDecimal(s).scaleByPowerOfTen((int)Math.log10(xND)).stripTrailingZeros().toPlainString()).append(i != as.length - 1 && m != null ? m : "");
                             }
                             outList.add(d.toString());
                         }
@@ -2272,9 +2273,10 @@ public class CustomFunction {
                     if (ListUtils.isNotEmpty(datas)) {
                         for (Object e : datas) {
                             if (StringUtils.isNotEmpty(e)) {
-                                int scale = (int) Math.max(getScale(s) - Math.log10(xND), 0);
                                 cur = e.toString();
-                                outList.add(StringUtils.number2String(Double.parseDouble(e.toString()) * xND, scale));
+                               /* int scale = (int) Math.max(getScale(s) - Math.log10(xND), 0);
+                                outList.add(StringUtils.number2String(Double.parseDouble(e.toString()) * xND, scale));*/
+                                outList.add(BaseUtils.str2BigDecimal(e.toString()).scaleByPowerOfTen((int)Math.log10(xND)).stripTrailingZeros().toPlainString());
                             }
                         }
                     }
@@ -2296,10 +2298,10 @@ public class CustomFunction {
         return "";
     }
 
-/*    public static void main(String[] args) {
-         int x=12345678;
-        System.out.println(xN(x,0.00001));
-    }*/
+    public static void main(String[] args) {
+         int x=1234567800;
+        System.out.println(xN(x,0.0001));
+    }
 
     public static Object repeat(Object data) {
         List<Object> result = new ArrayList<>();

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

@@ -1720,6 +1720,11 @@ public class ExecutorMeter extends FormulaExecutor {
             ));
 
             BaseInfo baseInfo = tec.meterInfo.getBaseInfo();
+            /*String contractAmount = BaseUtils.str2BigDecimal(tec.meterInfo.getBaseInfo().getContractAmount()).toPlainString();*/
+            /*工程量清单金额(包含暂定金)*/
+            String meterAmount=dataList.stream().map(ConstructionSchedule::getContractMoney).map(BaseUtils::str2BigDecimal).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString();
+            /*工程量清单金额(包含暂定金)*/
+            String meterAmountChange=dataList.stream().map(ConstructionSchedule::getChangeMoney).map(BaseUtils::str2BigDecimal).reduce(BigDecimal.ZERO,BigDecimal::add).toPlainString();
             dictMap.forEach((k,v)-> {
                 ConstructionSchedule cs = new ConstructionSchedule(v.getFormName());
                 BigDecimal[] sum = contractMoney.get(k);
@@ -1730,11 +1735,12 @@ public class ExecutorMeter extends FormulaExecutor {
                 cs.setCurrentPeriodEndPay(StringUtils.handleNull(endMoney.get(k)));
                 cs.setItemPercent(ratioFc.apply(cs.getChangeMoney(), baseInfo.getContractAmount().toString()));
                 cs.setItemProgress(ratioFc.apply(cs.getCurrentPeriodEndPay(), cs.getChangeMoney()));
-                cs.setCurrentPayPercent(ratioFc.apply(cs.getCurrentPeriodPay(),cs.getChangeMoney()));
-                /* 本期末累计支付金额占合同比*/
-                cs.setPayPercent(ratioFc.apply(cs.getCurrentPeriodEndPay(),cs.getChangeMoney()));
+                /*本期占合同金额*/
+                cs.setCurrentPayPercent(ratioFc.apply(cs.getCurrentPeriodPay(),meterAmount));
+                /* 本期末累计支付金额占变更后合同比*/
+                cs.setPayPercent(ratioFc.apply(cs.getCurrentPeriodEndPay(),meterAmountChange));
                 /*本期末占合合同金额 */
-                cs.setPrePayPercent(ratioFc.apply(cs.getCurrentPeriodEndPay(),cs.getContractMoney()));
+                cs.setCurrentEndPayPercent(ratioFc.apply(cs.getCurrentPeriodEndPay(),meterAmount));
                 /*变更金额*/
                 cs.setChangeMoneyAll(subtractFc.apply(cs.getChangeMoney(),cs.getContractMoney()));
                 dataList.add(cs);
@@ -1903,7 +1909,7 @@ public class ExecutorMeter extends FormulaExecutor {
                 /* 本期末累计支付金额占合同比*/
                 sis.setPayPercent(ratioFc.apply(sis.getCurrentPeriodEndPay(),sis.getChangeMoney()));
                 /**上期末占合合同金额*/
-                sis.setPrePayPercent(ratioFc.apply(subtractFc.apply(sis.getCurrentPeriodEndPay(),sis.getCurrentPeriodPay()),sis.getContractMoney()));
+                sis.setCurrentEndPayPercent(ratioFc.apply(subtractFc.apply(sis.getCurrentPeriodEndPay(),sis.getCurrentPeriodPay()),sis.getContractMoney()));
                 /*变更金额*/
                 sis.setChangeMoneyAll(subtractFc.apply(sis.getChangeMoney(),sis.getContractMoney()));
                 /*变更金额*/