Преглед на файлове

试验管理-规范管理-公式调整 =、≠比较失效

LHB преди 2 месеца
родител
ревизия
f15f9c75f8

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

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

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

@@ -1,8 +1,11 @@
 package com.jfireel.expression.node.impl;
 
 import com.jfireel.expression.token.Operator;
+import com.jfireel.expression.util.ValueUtil;
 import com.jfireel.expression.util.number.EqUtil;
+import com.mixsmart.utils.StringUtils;
 
+import java.util.List;
 import java.util.Map;
 
 public class NotEqualNode extends OperatorResultNode {
@@ -24,6 +27,16 @@ public class NotEqualNode extends OperatorResultNode {
         } else {
             if (leftValue instanceof Number && rightValue instanceof Number) {
                 return EqUtil.calculate((Number) leftValue, (Number) rightValue) == false;
+            } else if (leftValue instanceof List || rightValue instanceof List) {
+                Object[] leftAndRight = ValueUtil.obtain(leftOperand.calculate(variables), rightOperand.calculate(variables));
+
+                //如果是数字类型 第一个是float  第二个是整数所以不能使用equals
+                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 {
                 return leftValue.equals(rightValue) == false;
             }

+ 48 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -5008,18 +5008,31 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                             String[] split2 = s3.split(" ");
                                             List<String> list = new ArrayList<>();
                                             for (String string : split2) {
+                                                String number = null;
                                                 //获取比较符
-                                                operator = string.substring(0, 1);
-                                                String number = string.substring(1);
+                                                if(string.contains("&lt;") || string.contains("&gt;")){
+                                                    operator = string.split(";")[0] + ";";
+                                                    number = string.split(";")[1];
+                                                }else{
+                                                    operator = string.substring(0, 1);
+                                                    number = string.substring(1);
+                                                }
+
                                                 operator = strReplace(operator);
                                                 String str = split1[1] + operator + extractPureNumbers(number);
                                                 list.add(str);
                                             }
                                             formulaData = String.join("&&",list);
                                         }else{
+                                            String number = null;
                                             //获取比较符
-                                            operator = s3.substring(0, 1);
-                                            String number = s3.substring(1);
+                                            if(s3.contains("&lt;") || s3.contains("&gt;")){
+                                                operator = s3.split(";")[0] + ";";
+                                                number = s3.split(";")[1];
+                                            }else{
+                                                operator = s3.substring(0, 1);
+                                                number = s3.substring(1);
+                                            }
                                             operator = strReplace(operator);
 
                                             formulaData = split1[1] + operator + extractPureNumbers(number);
@@ -5030,18 +5043,30 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                             String[] split2 = s4.split(" ");
                                             List<String> list = new ArrayList<>();
                                             for (String string : split2) {
+                                                String number = null;
                                                 //获取比较符
-                                                operator = string.substring(0, 1);
-                                                String number = string.substring(1);
+                                                if(string.contains("&lt;") || string.contains("&gt;")){
+                                                    operator = string.split(";")[0] + ";";
+                                                    number = string.split(";")[1];
+                                                }else{
+                                                    operator = string.substring(0, 1);
+                                                    number = string.substring(1);
+                                                }
                                                 operator = strReplace(operator);
                                                 String str = split1[0] + operator + extractPureNumbers(number);
                                                 list.add(str);
                                             }
                                             formulaData = String.join("&&",list);
                                         }else{
+                                            String number = null;
                                             //获取比较符
-                                            operator = s4.substring(0, 1);
-                                            String number = s4.substring(1);
+                                            if(s4.contains("&lt;") || s4.contains("&gt;")){
+                                                operator = s4.split(";")[0] + ";";
+                                                number = s4.split(";")[1];
+                                            }else{
+                                                operator = s4.substring(0, 1);
+                                                number = s4.substring(1);
+                                            }
                                             operator = strReplace(operator);
                                             formulaData = split1[0] + operator + extractPureNumbers(number);
                                         }
@@ -5136,6 +5161,21 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         if(Objects.equals("≠",s1)){
             s1 = "!=";
         }
+        if(Objects.equals("=",s1)){
+            s1 = "==";
+        }
+        if(Objects.equals("<",s1)){
+            s1 = "<";
+        }
+        if(Objects.equals("&lt;",s1)){
+            s1 = "<";
+        }
+        if(Objects.equals(">",s1)){
+            s1 = ">";
+        }
+        if(Objects.equals("&gt;",s1)){
+            s1 = ">";
+        }
         return s1;
     }