Browse Source

小数位格式化

yangyj 1 year ago
parent
commit
cd27b544e7

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

@@ -2284,8 +2284,8 @@ public class CustomFunction {
     }
 
 /*    public static void main(String[] args) {
-        List<Object> list = Arrays.asList(1,-1,"-4*8");
-        obj2ListNe(xN(list,10)).forEach(System.out::println);
+         int x=12345678;
+        System.out.println(xN(x,0.00001));
     }*/
 
     public static Object repeat(Object data) {

+ 12 - 11
blade-service/blade-manager/src/main/java/com/mixsmart/utils/StringUtils.java

@@ -1324,24 +1324,24 @@ public class StringUtils {
         return max;
     }
 
-/*    public static void main(String[] args) {
-        System.out.println(getScaleZero(152000,"±10.0"));
+    public static void main(String[] args) {
+     /*   System.out.println(getScaleZero(152000,"±10.0"));
         System.out.println(getScaleZero(152000,"-10.0,10"));
         System.out.println(getScaleZero(152000,"-10.0,10.0"));
         System.out.println(getScaleZero(Double.MAX_VALUE,"-10.0,10"));
-        System.out.println(getScaleZero(152000,"-10,10"));
-    }*/
+        System.out.println(getScaleZero(152000,"-10,10"));*/
+        System.out.println(getScale(152000,"1240.32563"));
+    }
 
     public static List<Object> scaleParam(Object ... number){
         return Arrays.stream(number).filter(StringUtils::isNotEmpty).flatMap(e-> CustomFunction.obj2ListNe(e).stream()).distinct().map(s->s.toString().replaceAll("±","")).filter(StringUtils::isNumber).map(e->{
             /*0.3999999999999986 检测到超长小数位先转double处理,再还原回String*/
-            String tg=e.toString();
-            int dot=tg.indexOf(StringPool.DOT);
-            boolean unlimited=dot>0&&(tg.length()-dot>6);
-            if(unlimited||tg.contains("e")){
-                return BigDecimal.valueOf(Double.parseDouble(tg)).setScale(2, RoundingMode.HALF_UP).toString();
+            int dot= e.indexOf(StringPool.DOT);
+            boolean unlimited=dot>0&&(e.length()-dot>6);
+            if(unlimited|| e.contains("e")){
+                return BigDecimal.valueOf(Double.parseDouble(e)).setScale(2, RoundingMode.HALF_UP).toString();
             }else {
-                return e.toString();
+                return e;
             }
         }).collect(Collectors.toList());
     }
@@ -1357,7 +1357,8 @@ public class StringUtils {
                         Matcher m = RegexUtils.matcher(SCALE_REG[zero], s);
                         if (m.find()) {
                             int cp = new StringBuilder(m.group()).reverse().toString().indexOf(".");
-                            if (cp < 5) {
+                            /*单位是万元的时候,可能存在五位小数*/
+                            if (cp <= 5) {
                                 max = Math.max(cp, max);
                             }
                         }

+ 6 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -1236,9 +1236,10 @@ public class ExecutorMeter extends FormulaExecutor {
                 summary.setMoney(StringUtils.number2StringZero(sum,tec.getScale()));
                 dataList.add(summary);
                 /*计量汇总表数量(浙江)*/
-                FormulaUtils.elementFindByCode(tec.getFormDataMap(),MeterPeriodInfo.TBN+":key_10").ifPresent(fd->{
+       /*         FormulaUtils.elementFindByCode(tec.getFormDataMap(),MeterPeriodInfo.TBN+":key_10").ifPresent(fd->{
                     elementWriter.write(fd,BaseUtils.sliceNumber(dataList.size(),capacity));
-                });
+                });*/
+                tec.periodInfo.setSummaryNumber(String.valueOf(BaseUtils.sliceNumber(dataList.size(),capacity)));
 
             }
             putOut(InterimMeterPaySummary.class);
@@ -1295,9 +1296,10 @@ public class ExecutorMeter extends FormulaExecutor {
             fieldDataFcMap.put(InterimMeter.TBN+":key_13",interimMeters2oListFc.apply(InterimMeter::getCompletedList));
            /*每条记录一页*/
             capacity=1;
-            FormulaUtils.elementFindByCode(tec.getFormDataMap(),MeterPeriodInfo.TBN+":key_11").ifPresent(fd->{
+         /*   FormulaUtils.elementFindByCode(tec.getFormDataMap(),MeterPeriodInfo.TBN+":key_11").ifPresent(fd->{
                 elementWriter.write(fd,BaseUtils.sliceNumber(dataList.size(),capacity));
-            });
+            });*/
+            tec.periodInfo.setMeterNumber(""+BaseUtils.sliceNumber(dataList.size(),capacity));
            putOut(InterimMeter.class);
         }
     }