Просмотр исходного кода

试验-规范管理-公式多重判断调整

LHB 2 месяцев назад
Родитель
Сommit
3f85c7a27e

+ 3 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/EqualNode.java

@@ -31,12 +31,14 @@ public class EqualNode extends OperatorResultNode {
                 Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
 
                 //如果是数字类型 第一个是float  第二个是整数所以不能使用equals
-                if(leftAndRight[0] instanceof Number && leftAndRight[1] instanceof Number){
+                if (leftAndRight[0] instanceof Number && leftAndRight[1] instanceof Number) {
                     return EqUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]);
                 }
 
                 boolean equals = StringUtils.isEquals(leftAndRight[0], leftAndRight[1]);
                 return leftAndRight == null ? null : equals;
+            } else if (leftValue instanceof Boolean || rightValue instanceof Boolean) {
+                return leftValue instanceof Boolean ? leftValue : rightValue;
             } else {
                 return leftValue.equals(rightValue);
             }

+ 6 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/GtNode.java

@@ -21,7 +21,12 @@ public class GtNode extends OperatorResultNode {
 //		if (rightValue == null) {
 //			return null;
 //		}
-        Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
+        Object calculate = leftOperand.calculate(variables);
+        if(calculate instanceof Boolean && !(Boolean) calculate){
+            return calculate;
+        }
+        Object calculate1 = rightOperand.calculate(variables);
+        Object[] leftAndRight = ValueUtil.obtain(calculate, calculate1);
         return leftAndRight == null ? null : GtUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]);
     }
 

+ 6 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/LtEqNode.java

@@ -21,7 +21,12 @@ public class LtEqNode extends OperatorResultNode {
 //		if (rightValue == null) {
 //			return null;
 //		}
-        Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
+        Object calculate = leftOperand.calculate(variables);
+        if(calculate instanceof Boolean && !(Boolean) calculate){
+            return calculate;
+        }
+        Object calculate1 = rightOperand.calculate(variables);
+        Object[] leftAndRight = ValueUtil.obtain(calculate, calculate1);
         return leftAndRight == null ? null : !((Boolean) GtUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]));
     }
 

+ 6 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/LtNode.java

@@ -22,7 +22,12 @@ public class LtNode extends OperatorResultNode {
 //		if (rightValue == null) {
 //			return null;
 //		}
-        Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
+        Object calculate = leftOperand.calculate(variables);
+        if(calculate instanceof Boolean && !(Boolean) calculate){
+            return calculate;
+        }
+        Object calculate1 = rightOperand.calculate(variables);
+        Object[] leftAndRight = ValueUtil.obtain(calculate, calculate1);
         return leftAndRight == null ? null : LtUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]);
     }
 

+ 3 - 1
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/NotEqualNode.java

@@ -31,12 +31,14 @@ public class NotEqualNode extends OperatorResultNode {
                 Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
 
                 //如果是数字类型 第一个是float  第二个是整数所以不能使用equals
-                if(leftAndRight[0] instanceof Number && leftAndRight[1] instanceof Number){
+                if (leftAndRight[0] instanceof Number && leftAndRight[1] instanceof Number) {
                     return !EqUtil.calculate((Number) leftAndRight[0], (Number) leftAndRight[1]);
                 }
 
                 boolean equals = !StringUtils.isEquals(leftAndRight[0], leftAndRight[1]);
                 return leftAndRight == null ? null : equals;
+            } else if (leftValue instanceof Boolean || rightValue instanceof Boolean) {
+                return leftValue instanceof Boolean ? leftValue : rightValue;
             } else {
                 return leftValue.equals(rightValue) == false;
             }

+ 1 - 0
blade-service/blade-manager/src/main/java/com/jfireel/expression/parse/impl/NumberParser.java

@@ -7,6 +7,7 @@ import com.jfireel.expression.parse.Invoker;
 import com.jfireel.expression.token.Operator;
 import com.jfireel.expression.token.Symbol;
 import com.jfireel.expression.token.Token;
+import com.jfireel.expression.token.TokenType;
 import com.jfireel.expression.util.CharType;
 
 import java.util.Deque;

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

@@ -5169,7 +5169,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                 }
 
                                                 operator = strReplace(operator);
-                                                String str = split1[1] + operator + extractPureNumbers(number);
+                                                number = extractPureNumbers(number);
+                                                String str = split1[1] + operator + (number != null && number.startsWith("-") ? "(" + number + ")" : number);
                                                 list.add(str);
                                             }
                                             if(isOr){
@@ -5188,8 +5189,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                 number = s3.substring(1);
                                             }
                                             operator = strReplace(operator);
-
-                                            formulaData = split1[1] + operator + extractPureNumbers(number);
+                                            number = extractPureNumbers(number);
+                                            formulaData = split1[1] + operator + (number !=null && number.startsWith("-") ? "(" + number + ")" : number);
                                         }
                                     }else if (pattern.matcher(s3).matches() && !pattern.matcher(s4).matches()){
                                         list1.set(0,s3);
@@ -5207,7 +5208,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                     number = string.substring(1);
                                                 }
                                                 operator = strReplace(operator);
-                                                String str = split1[0] + operator + extractPureNumbers(number);
+                                                number = extractPureNumbers(number);
+                                                String str = split1[0] + operator + (number !=null && number.startsWith("-") ? "(" + number + ")" : number);
                                                 list.add(str);
                                             }
                                             if(isOr){
@@ -5226,7 +5228,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                                 number = s4.substring(1);
                                             }
                                             operator = strReplace(operator);
-                                            formulaData = split1[0] + operator + extractPureNumbers(number);
+                                            //新值
+                                            number = extractPureNumbers(number);
+                                            formulaData = split1[0] + operator + (number !=null && number.startsWith("-") ? "(" + number + ")" : number);
                                         }
                                     } else{
                                         f = f.replace(el, "数据错误,无法比较");