Browse Source

公式调试

yangyj 3 years ago
parent
commit
23d1dadb0b

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

@@ -2052,6 +2052,24 @@ public class CustomFunction {
 		 ari=ari.toString().replace("X",designv.toString());
          return  Expression.parse(ari.toString()).calculate().toString();
 	}
+
+	public static Object ifelse(Object b,Object t,Object f){
+		if(b!=null&&Func.isNotBlank(b.toString())){
+			String s = b.toString();
+			boolean fi  = true;
+			if(s.contains("<")&&s.contains(">")){
+				 String[] arr=s.split("&&");
+				 for(String e:arr){
+					 if(!Boolean.parseBoolean(Expression.parse(e).calculate())){
+					 	fi=false;
+					 	break;
+					 };
+				 }
+			}
+			return fi?t:f;
+		}
+        return t;
+	}
 	/**
 	 * @Description  空白或者/都判断为空
 	 * @Param [data]

+ 5 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -85,8 +85,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                            for(int i=0;i<fd.getValues().size();i++){
                               tmpMap.put("p"+i,fd.getValues().get(i));
                            }
-                          variables.put(fd.getCode(),fd.getValues().get(0));
-
                            Map<String,Object> tableMap = (Map<String, Object>) variables.get(fd.getCode());
                            if(tableMap==null){
                                tableMap= new HashMap<>();
@@ -102,11 +100,11 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                         tmp= tmp.replace(m.group(),"'"+m.group()+"'");
                       }
                        Matcher m2 = P.matcher(tmp);
-                    while (m2.find()){
-                        tmp= tmp.replace(m2.group(),"'"+m2.group()+"'");
-                        fd.getRely().add(m2.group());
-                    }
-                      fd.getFormula().setFormula(tmp);
+                      while (m2.find()){
+                          tmp= tmp.replace(m2.group(),"'"+m2.group()+"'");
+                          fd.getRely().add(m2.group());
+                      }
+                        fd.getFormula().setFormula(tmp);
                 }
                 /*执行公式*/
                 /*集合公式预处理*/