diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java index ee35b59d..de66f04e 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java @@ -118,7 +118,7 @@ public class QueryGenerator { //区间条件组装 模糊查询 高级查询组装 简单排序 权限查询 PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(searchObj); - Map ruleMap = getRuleMap(); + Map ruleMap = getRuleMap2(); //权限规则自定义SQL表达式 for (String c : ruleMap.keySet()) { @@ -727,6 +727,31 @@ public class QueryGenerator { } return ruleMap; } + public static Map getRuleMap2() { + Map ruleMap = new HashMap(); + List list = JeecgDataAutorUtils.loadDataSearchConditon(); + if (list != null && list.size() > 0) { + if (list.get(0) == null) { + return ruleMap; + } + for (SysPermissionDataRuleModel rule : list) { + String column = rule.getRuleColumn(); + if (QueryRuleEnum.SQL_RULES.getValue().equals(rule.getRuleConditions())) { + column = SQL_RULES_COLUMN + rule.getId(); + } + if (ruleMap.containsKey(column)) { + // 如果有相同的列权限规则,进行拼接 + SysPermissionDataRuleModel ruleTemp = ruleMap.get(column); + ruleTemp.setRuleConditions("IN"); + ruleTemp.setRuleValue(ruleTemp.getRuleValue() + "," + rule.getRuleValue()); + ruleMap.put(column, ruleTemp); + }else { + ruleMap.put(column, rule); + } + } + } + return ruleMap; + } private static void addRuleToQueryWrapper(SysPermissionDataRuleModel dataRule, String name, Class propertyType, QueryWrapper queryWrapper) { QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions());