Browse Source

全规则加载时去重以最新的一条为准

gaodm 3 years ago
parent
commit
d34e2885a2

+ 73 - 68
src/main/java/com/diagbot/aggregate/RuleAggregate.java

@@ -7,6 +7,8 @@ import com.diagbot.dto.RuleConditionInitDTO;
 import com.diagbot.dto.RuleDTO;
 import com.diagbot.dto.RuleInitDTO;
 import com.diagbot.enums.RedisEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.facade.KlRuleFacade;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
@@ -39,71 +41,74 @@ public class RuleAggregate {
             @DataConsumer("getRuleInit") Map<String, List<RuleInitDTO>> ruleInits,
             @DataConsumer("getRuleConditionInit") Map<Integer, Map<String, List<RuleConditionInitDTO>>> ruleConditionInits,
             @DataConsumer("getRuleBaseInit") Map<Integer, List<RuleBaseInitDTO>> ruleBaseInits) {
-        Map<String, RuleDTO> res = new HashMap();
-        //结果判空第一层规则类型
-        if (MapUtils.isNotEmpty(ruleInits)) {
-            for (String ruleKey : ruleInits.keySet()) {
-                RuleInitDTO ruleInitZeroDTO = ruleInits.get(ruleKey).get(0);
-                RuleDTO ruleDTO = new RuleDTO();
-                ruleDTO.setLibName(ruleInitZeroDTO.getLibName());
-                ruleDTO.setLibType(ruleInitZeroDTO.getLibType());
-                ruleDTO.setRuleType(ruleInitZeroDTO.getRuleType());
-                Map<String, Integer> ruleConditionMap = new HashMap<>();
-                for (RuleInitDTO ruleInitDTO : ruleInits.get(ruleKey)) {
-                    if (ruleInitDTO.getHasSubCond().equals(1)) {
-                        Map<String, List<RuleConditionInitDTO>> map = ruleConditionInits.get(ruleInitDTO.getRuleId());
-                        //结果判空第二层条件组别
-                        if (MapUtils.isNotEmpty(map)) {
-                            for (String ruleGroup : map.keySet()) {
-                                RuleConditionDTO ruleConditionDTO = new RuleConditionDTO();
-                                ruleConditionDTO.setHasSubCond(ruleInitDTO.getHasSubCond());
-                                ruleConditionDTO.setRuleGroup(ruleGroup);
-                                //结果判空第三层条件明细
-                                if (ListUtil.isNotEmpty(map.get(ruleGroup))) {
-                                    List<List<RuleBaseDTO>> ruleBaseList = new ArrayList<>();
-                                    for (RuleConditionInitDTO ruleConditionInitDTO : map.get(ruleGroup)) {
-                                        ruleConditionDTO.setMsg(ruleConditionInitDTO.getMsg());
-                                        List<RuleBaseInitDTO> ruleBaseInitDTOList = ruleBaseInits.get(ruleConditionInitDTO.getRuleBaseId());
-                                        if (ListUtil.isNotEmpty(ruleBaseInitDTOList)) {
-                                            List<RuleBaseDTO> ruleBaseDTOList = BeanUtil.listCopyTo(ruleBaseInitDTOList, RuleBaseDTO.class);
-                                            ruleBaseList.add(ruleBaseDTOList);
+        try {
+            Map<String, RuleDTO> res = new HashMap();
+            //结果判空第一层规则类型
+            if (MapUtils.isNotEmpty(ruleInits)) {
+                for (String ruleKey : ruleInits.keySet()) {
+                    RuleInitDTO ruleInitZeroDTO = ruleInits.get(ruleKey).get(0);
+                    RuleDTO ruleDTO = new RuleDTO();
+                    ruleDTO.setLibName(ruleInitZeroDTO.getLibName());
+                    ruleDTO.setLibType(ruleInitZeroDTO.getLibType());
+                    ruleDTO.setRuleType(ruleInitZeroDTO.getRuleType());
+                    Map<String, Integer> ruleConditionMap = new HashMap<>();
+                    for (RuleInitDTO ruleInitDTO : ruleInits.get(ruleKey)) {
+                        if (ruleInitDTO.getHasSubCond().equals(1)) {
+                            Map<String, List<RuleConditionInitDTO>> map = ruleConditionInits.get(ruleInitDTO.getRuleId());
+                            //结果判空第二层条件组别
+                            if (MapUtils.isNotEmpty(map)) {
+                                for (String ruleGroup : map.keySet()) {
+                                    RuleConditionDTO ruleConditionDTO = new RuleConditionDTO();
+                                    ruleConditionDTO.setHasSubCond(ruleInitDTO.getHasSubCond());
+                                    ruleConditionDTO.setRuleGroup(ruleGroup);
+                                    //结果判空第三层条件明细
+                                    if (ListUtil.isNotEmpty(map.get(ruleGroup))) {
+                                        List<List<RuleBaseDTO>> ruleBaseList = new ArrayList<>();
+                                        for (RuleConditionInitDTO ruleConditionInitDTO : map.get(ruleGroup)) {
+                                            ruleConditionDTO.setMsg(ruleConditionInitDTO.getMsg());
+                                            List<RuleBaseInitDTO> ruleBaseInitDTOList = ruleBaseInits.get(ruleConditionInitDTO.getRuleBaseId());
+                                            if (ListUtil.isNotEmpty(ruleBaseInitDTOList)) {
+                                                List<RuleBaseDTO> ruleBaseDTOList = BeanUtil.listCopyTo(ruleBaseInitDTOList, RuleBaseDTO.class);
+                                                ruleBaseList.add(ruleBaseDTOList);
+                                            }
                                         }
-                                    }
-                                    //笛卡尔积
-                                    List<List<RuleBaseDTO>> ruleBaseGroup = new ArrayList<>();
-                                    descartes(ruleBaseList, ruleBaseGroup, 0, new ArrayList<>());
-                                    for (List<RuleBaseDTO> ruleBaseDTOList : ruleBaseGroup) {
-                                        RuleConditionDTO ruleConditionDTO1 = new RuleConditionDTO();
-                                        ruleConditionDTO1.setHasSubCond(ruleConditionDTO.getHasSubCond());
-                                        ruleConditionDTO1.setRuleGroup(ruleConditionDTO.getRuleGroup());
-                                        ruleConditionDTO1.setMsg(ruleConditionDTO.getMsg());
-                                        ruleConditionDTO1.getRuleBaseDTOList().addAll(ruleBaseDTOList);
-                                        if (!ruleConditionMap.containsKey(ruleConditionDTO1.toString())) {
-                                            ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO1);
-                                            ruleConditionMap.put(ruleConditionDTO1.toString(), 1);
+                                        //笛卡尔积
+                                        List<List<RuleBaseDTO>> ruleBaseGroup = new ArrayList<>();
+                                        descartes(ruleBaseList, ruleBaseGroup, 0, new ArrayList<>());
+                                        for (List<RuleBaseDTO> ruleBaseDTOList : ruleBaseGroup) {
+                                            RuleConditionDTO ruleConditionDTO1 = new RuleConditionDTO();
+                                            ruleConditionDTO1.setHasSubCond(ruleConditionDTO.getHasSubCond());
+                                            ruleConditionDTO1.setRuleGroup(ruleConditionDTO.getRuleGroup());
+                                            ruleConditionDTO1.setMsg(ruleConditionDTO.getMsg());
+                                            ruleConditionDTO1.getRuleBaseDTOList().addAll(ruleBaseDTOList);
+                                            if (!ruleConditionMap.containsKey(ruleConditionDTO1.toString())) {
+                                                ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO1);
+                                                ruleConditionMap.put(ruleConditionDTO1.toString(), 1);
+                                            }
                                         }
                                     }
                                 }
-
                             }
-                        }
-                    } else {
-                        RuleConditionDTO ruleConditionDTO = new RuleConditionDTO();
-                        ruleConditionDTO.setHasSubCond(ruleInitDTO.getHasSubCond());
-                        ruleConditionDTO.setMsg(ruleInitDTO.getMsg());
-                        //无条件
-                        ruleConditionDTO.setRuleGroup(ruleInitDTO.getRuleId() + "-1");
-                        ruleConditionDTO.getRuleBaseDTOList().add(new RuleBaseDTO());
-                        if (!ruleConditionMap.containsKey(ruleConditionDTO.toString())) {
-                            ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO);
-                            ruleConditionMap.put(ruleConditionDTO.toString(), 1);
+                        } else {
+                            RuleConditionDTO ruleConditionDTO = new RuleConditionDTO();
+                            ruleConditionDTO.setHasSubCond(ruleInitDTO.getHasSubCond());
+                            ruleConditionDTO.setMsg(ruleInitDTO.getMsg());
+                            //无条件
+                            ruleConditionDTO.setRuleGroup(ruleInitDTO.getRuleId() + "-1");
+                            ruleConditionDTO.getRuleBaseDTOList().add(new RuleBaseDTO());
+                            if (!ruleConditionMap.containsKey(ruleConditionDTO.toString())) {
+                                ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO);
+                                ruleConditionMap.put(ruleConditionDTO.toString(), 1);
+                            }
                         }
                     }
+                    res.put(RedisEnum.allRule.getName() + ruleDTO.getLibType() + "_" + ruleDTO.getLibName() + "_" + ruleDTO.getRuleType(), ruleDTO);
                 }
-                res.put(RedisEnum.allRule.getName() + ruleDTO.getLibType() + "_" + ruleDTO.getLibName() + "_" + ruleDTO.getRuleType(), ruleDTO);
             }
+            return res;
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "全部规则加载出错:" + e.getMessage());
         }
-        return res;
     }
 
     @DataProvider("getRuleInit")
@@ -112,19 +117,19 @@ public class RuleAggregate {
         return EntityUtil.makeEntityListMap(list, "conceptGroup");
     }
 
-//    @DataProvider("getRuleInit")
-//    public Map<String, List<RuleInitDTO>> getRuleInit(
-//            @DataConsumer("getRuleInitNotHaveClass") List<RuleInitDTO> ruleNotHaveClass,
-//            @DataConsumer("getRuleInitHaveClass") List<RuleInitDTO> ruleHaveClass) {
-//        List<RuleInitDTO> list = new ArrayList<>();
-//        if (ListUtil.isNotEmpty(ruleNotHaveClass)) {
-//            list.addAll(ruleNotHaveClass);
-//        }
-//        if (ListUtil.isNotEmpty(ruleHaveClass)) {
-//            list.addAll(ruleHaveClass);
-//        }
-//        return EntityUtil.makeEntityListMap(list, "conceptGroup");
-//    }
+    //    @DataProvider("getRuleInit")
+    //    public Map<String, List<RuleInitDTO>> getRuleInit(
+    //            @DataConsumer("getRuleInitNotHaveClass") List<RuleInitDTO> ruleNotHaveClass,
+    //            @DataConsumer("getRuleInitHaveClass") List<RuleInitDTO> ruleHaveClass) {
+    //        List<RuleInitDTO> list = new ArrayList<>();
+    //        if (ListUtil.isNotEmpty(ruleNotHaveClass)) {
+    //            list.addAll(ruleNotHaveClass);
+    //        }
+    //        if (ListUtil.isNotEmpty(ruleHaveClass)) {
+    //            list.addAll(ruleHaveClass);
+    //        }
+    //        return EntityUtil.makeEntityListMap(list, "conceptGroup");
+    //    }
 
     @DataProvider("getRuleConditionInit")
     public Map<Integer, Map<String, List<RuleConditionInitDTO>>> getRuleConditionInit() {

+ 2 - 0
src/main/resources/mapper/KlRuleMapper.xml

@@ -375,6 +375,8 @@
             t2.msg as msg
         FROM
             kl_rule_condition t2
+        WHERE
+            t2.is_deleted = "N"
         ORDER BY
             t2.id DESC
     </select>