浏览代码

全规则加载时去重

gaodm 4 年之前
父节点
当前提交
8d7b0760c4

+ 9 - 2
src/main/java/com/diagbot/aggregate/RuleAggregate.java

@@ -48,6 +48,7 @@ public class RuleAggregate {
                 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());
@@ -77,7 +78,10 @@ public class RuleAggregate {
                                         ruleConditionDTO1.setRuleGroup(ruleConditionDTO.getRuleGroup());
                                         ruleConditionDTO1.setMsg(ruleConditionDTO.getMsg());
                                         ruleConditionDTO1.getRuleBaseDTOList().addAll(ruleBaseDTOList);
-                                        ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO1);
+                                        if (!ruleConditionMap.containsKey(ruleConditionDTO1.toString())) {
+                                            ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO1);
+                                            ruleConditionMap.put(ruleConditionDTO1.toString(), 1);
+                                        }
                                     }
                                 }
 
@@ -90,7 +94,10 @@ public class RuleAggregate {
                         //无条件
                         ruleConditionDTO.setRuleGroup(ruleInitDTO.getRuleId() + "-1");
                         ruleConditionDTO.getRuleBaseDTOList().add(new RuleBaseDTO());
-                        ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO);
+                        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);

+ 2 - 0
src/main/java/com/diagbot/dto/RuleBaseDTO.java

@@ -2,6 +2,7 @@ package com.diagbot.dto;
 
 import lombok.Getter;
 import lombok.Setter;
+import lombok.ToString;
 
 /**
  * @Description:
@@ -10,6 +11,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
+@ToString(includeFieldNames = false)
 public class RuleBaseDTO {
     private String baseLibName = "";
     private Integer baseLibType = 0;

+ 2 - 0
src/main/java/com/diagbot/dto/RuleConditionDTO.java

@@ -2,6 +2,7 @@ package com.diagbot.dto;
 
 import lombok.Getter;
 import lombok.Setter;
+import lombok.ToString;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -13,6 +14,7 @@ import java.util.List;
  */
 @Getter
 @Setter
+@ToString(exclude = "ruleGroup", includeFieldNames = false)
 public class RuleConditionDTO {
     private Integer hasSubCond;
     private String ruleGroup;

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

@@ -439,6 +439,7 @@
         AND t5. STATUS = 1
         AND t3.concept_id = t5.id
         AND t5.lib_type BETWEEN 100 AND 299
+        ORDER BY t5.id
     </select>
 
     <select id="getRuleBaseInitDTOHaveClass" resultType="com.diagbot.dto.RuleBaseInitDTO">
@@ -476,5 +477,6 @@
         AND t11.is_deleted = "N"
         AND t10. STATUS = 1
         AND t11. STATUS = 1
+        ORDER BY t11.id
     </select>
 </mapper>