Parcourir la source

特殊公式格式調整

yangyj il y a 2 ans
Parent
commit
8cb0e647cf

+ 11 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/FormData.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.dto;
 
 import lombok.Data;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.entity.Formula;
 
@@ -62,7 +63,8 @@ public class FormData {
     private String position;
     /**是否更新数据*/
     private Integer update=0;
-
+    /**是否完成执行*/
+    private Boolean finished=false;
     public static final String CODE_REG="[^:]+:[^:]+";
 
     public FormData() {
@@ -95,5 +97,13 @@ public class FormData {
         }
     }
 
+    public Boolean verify(){
+        return !this.finished;
+    }
+
+    public Boolean empty(){
+      return  Func.isEmpty(this.values);
+    }
+
 
 }

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/FormulaBase.java

@@ -17,5 +17,6 @@ public class FormulaBase extends BaseEntity {
     private String name;
     private String template;
     private Integer type;
+    private String number;
     private String example;
 }

+ 5 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/FormulaMileage.java

@@ -9,6 +9,7 @@ import org.springblade.common.utils.BaseUtils;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.ElementData;
 import org.springblade.manager.dto.FormData;
+import org.springblade.manager.entity.Formula;
 import org.springblade.manager.formula.FormulaStrategy;
 import org.springframework.stereotype.Component;
 
@@ -111,7 +112,7 @@ public class FormulaMileage implements FormulaStrategy {
         }
         this.cur.getFormula().setFormula("");
     }
-    public static final Pattern MILE_P = Pattern.compile("(?<=MILE\\()([^,]+),([^,]+)(?=,)");
+    public static final Pattern MILE_P = Pattern.compile("(?<=FC.MILE\\()([^,]+),([^,]+)(?=,)");
 
     public  Map<String,String[]> getCoordinate(String tmp,List<FormData> fds,Long contractId){
         Matcher mile=MILE_P.matcher(tmp);
@@ -150,11 +151,11 @@ public class FormulaMileage implements FormulaStrategy {
 
     @Override
     public boolean accept(FormData fd) {
-        if(Func.isEmpty(fd.getFormula())){
+        if(!fd.verify()){
             return false;
         }
         this.cur=fd;
-        String f= fd.getFormula().getFormula();
-        return StringUtils.isNotEmpty(f)&&f.startsWith("MILE-");
+        Formula f= fd.getFormula();
+        return "MILE".equals(f.getNumber());
     }
 }

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/FormulaBaseMapper.xml

@@ -12,6 +12,7 @@
         <result column="isDeleted" property="is_deleted"/>
         <result column="name" property="name"/>
         <result column="template" property="template"/>
+        <result column="number" property="number"/>
         <result column="type" property="type"/>
         <result column="example" property="example"/>
     </resultMap>

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaService.java

@@ -28,5 +28,7 @@ public interface IFormulaService extends BaseService<Formula> {
     IFormulaService special();
     /**
      * 公式运算*/
-    void calculate();
+    IFormulaService calculate();
+    /*格式化*/
+    void format();
 }

+ 18 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -130,6 +130,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             for(FormData fd:this.env.formDataList){
                 /*预处理公式脚本*/
                 if(Func.isEmpty(fd.getFormula())){
+                    /*不存公式,则认为执行完成,不会再主动执行*/
+                    fd.setFinished(Boolean.TRUE);
                     continue;
                 }
                 String tmp =fd.getFormula().getFormula();
@@ -170,7 +172,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     }
 
     @Override
-    public void calculate() {
+    public IFormulaService calculate() {
         /*公式执行*/
         /*先处理聚合类的方法*/
         /*每次执行都会构造一个只有依赖的的集合*/
@@ -218,6 +220,21 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 }
             }
         }
+        return this;
+    }
+
+    @Override
+    public void format() {
+        for(FormData fd:this.env.formDataList){
+            if(fd.verify()){
+                    /*保留小数位*/
+                    Formula f = fd.getFormula();
+                    Integer scale =f.getScale();
+                    if(StringUtils.isNumber(scale)&&!fd.empty()){
+                        fd.setValues(fd.getValues().stream().peek(e-> e.setValue(StringUtils.number2String(e.getValue(),scale))).collect(Collectors.toList()));
+                    }
+            }
+        }
     }
 
     public  Map<String,Object> getMap(Map<String,Object> main,String key){