浏览代码

常量比较表达式改造

0027005599 2 年之前
父节点
当前提交
1a80589bdf

+ 10 - 8
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/SPELUtil.java

@@ -96,7 +96,7 @@ public class SPELUtil {
             } else if (ColumnTypeEnum.ARRAY == eventColumnTypeEnum) {
                 if (ColumnTypeEnum.ARRAY == refEventColumnTypeEnum) {
                     spelStr = "!#isMemberListAndList(#" + eventAttr.getEnName() + ",#" + refEventAttr.getEnName() + ")";
-                }else if (ColumnTypeEnum.MAP == refEventColumnTypeEnum) {
+                } else if (ColumnTypeEnum.MAP == refEventColumnTypeEnum) {
                     spelStr = "!#isMemberLeftMapRightListObject(#" + refEventAttr.getEnName() + ",#" + eventAttr.getEnName() + ",'" + outKey + "')";
                 } else {
                     spelStr = "!#isMemberLeftObject(#" + refEventAttr.getEnName() + ",#" + eventAttr.getEnName() + ")";
@@ -106,8 +106,11 @@ public class SPELUtil {
             }
         } else {
             if (1 == factorCondRela.getRefAttrType()) {
-
-                spelStr = "#" + eventAttr.getEnName() + operaterEnum.getOperaterStr() + factorCondRela.getExtAttr1();
+                String rightValue = factorCondRela.getExtAttr1();
+                if (ColumnTypeEnum.STRING == eventColumnTypeEnum) {
+                    rightValue = "'" + rightValue + "'";
+                }
+                spelStr = "#" + eventAttr.getEnName() + operaterEnum.getOperaterStr() + rightValue;
 
             } else {
                 spelStr = "#" + eventAttr.getEnName() + operaterEnum.getOperaterStr() + "#" + refEventAttr.getEnName();
@@ -307,22 +310,21 @@ public class SPELUtil {
 
     public static boolean isNumeric(String str) {
         Pattern pattern = Pattern.compile("[0-9]*");
-        Matcher isNum = pattern.matcher(str.charAt(0)+"");
+        Matcher isNum = pattern.matcher(str.charAt(0) + "");
         if (!isNum.matches()) {
             return false;
         }
         return true;
     }
 
-    public static boolean startWithKey(String srcStr, String key){
-        if(StringUtils.isNotBlank(srcStr) && StringUtils.isNotBlank(key)){
+    public static boolean startWithKey(String srcStr, String key) {
+        if (StringUtils.isNotBlank(srcStr) && StringUtils.isNotBlank(key)) {
             return srcStr.startsWith(key);
         }
         return false;
     }
 
 
-
     public static void main(String[] args) {
         SPELUtil spelUtil = new SPELUtil();
 //        Map<String, Object> inMap = new HashMap<>();
@@ -346,7 +348,7 @@ public class SPELUtil {
         Map<String, Object> itemMap1 = new HashMap<>();
         itemMap1.put("medical_diagnose_code", Arrays.asList("1", "2", "3"));
         itemMap1.put("medical_ins_medicalDiagnoseCodeList", Arrays.asList("3", "5", "6"));
-        String condStr = "'1' != '1'";
+        String condStr = "'1' != 1";
         System.out.println(spelUtil.runSpelExpression(itemMap1, condStr));
 //        String test ="A0123123";
 //        System.out.println(isNumeric(test));