Merge pull request #7 from qanson/master

feat: 规则增加数组判断支持
This commit is contained in:
FiboAI
2022-08-09 11:23:50 +08:00
committed by GitHub
2 changed files with 31 additions and 3 deletions

View File

@@ -63,8 +63,8 @@ public class RuleConditionInfo
@TableField(exist = false)
private String TempParentId;//插入时临时父id
@TableField(exist = false)
private Integer valueType;//字段值类型
// @TableField(exist = false)
// private Integer valueType;//字段值类型
@TableField(exist = false)
private List<RuleLoopGroupAction> loopGroupActions = new ArrayList<>();//循环组对应的条件

View File

@@ -1,5 +1,6 @@
package com.fibo.ddp.common.service.datax.runner;
import cn.hutool.core.util.ArrayUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -144,6 +145,33 @@ public class ExecuteUtils {
result = !map.containsKey(paramOne);
}
break;
//数组之间的比较
case "array contains":
JSONArray oneArray = JSON.parseArray(paramOne.toString());
JSONArray twoArray;
if(paramTwo!=null){
twoArray = (JSONArray) JSONArray.toJSON(paramTwo.toString().split(","));
}else{
return false;
}
List<String> oneList = oneArray.toJavaList(String.class);
List<String> twoList = twoArray.toJavaList(String.class);
//包含任意一个则返回true
result = oneList.stream().anyMatch(item-> twoList.contains(item));
break;
case "array not contains":
JSONArray oneArrayN = JSON.parseArray(paramOne.toString());
JSONArray twoArrayN;
if(paramTwo!=null){
twoArrayN = (JSONArray) JSONArray.toJSON(paramTwo.toString().split(","));
}else{
return false;
}
List<String> oneListN = oneArrayN.toJavaList(String.class);
List<String> twoListN = twoArrayN.toJavaList(String.class);
//全不包含则返回true
result = oneListN.stream().allMatch(item-> !twoListN.contains(item));
break;
}
return result;
}
@@ -223,7 +251,7 @@ public class ExecuteUtils {
//如果是数组取length
if (i == array.length - 2) {
if ("length()".equals(array[array.length - 1])) {
return JSON.toJavaObject(JSON.parseObject(JSON.toJSONString(o)), ArrayList.class).size();
return JSON.toJavaObject(JSON.parseArray(JSON.toJSONString(o)), ArrayList.class).size();
}
}
//未找到最后一个数组元素则将其识别为map