Просмотр исходного кода

规则分类直接展开到最细的层次

gaodm 3 лет назад
Родитель
Сommit
998700e130

+ 53 - 13
src/main/java/com/diagbot/aggregate/RuleAggregate.java

@@ -18,6 +18,7 @@ import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -37,7 +38,7 @@ public class RuleAggregate {
     public Map<String, RuleDTO> getAllRules(
             @DataConsumer("getRuleInit") Map<String, List<RuleInitDTO>> ruleInits,
             @DataConsumer("getRuleConditionInit") Map<Integer, Map<String, List<RuleConditionInitDTO>>> ruleConditionInits,
-            @DataConsumer("getRuleBaseInit") Map<Integer, RuleBaseInitDTO> ruleBaseInits) {
+            @DataConsumer("getRuleBaseInit") Map<Integer, List<RuleBaseInitDTO>> ruleBaseInits) {
         Map<String, RuleDTO> res = new HashMap();
         //结果判空第一层规则类型
         if (MapUtils.isNotEmpty(ruleInits)) {
@@ -52,15 +53,17 @@ public class RuleAggregate {
                         Map<String, List<RuleConditionInitDTO>> map = ruleConditionInits.get(ruleInitDTO.getRuleId());
                         //结果判空第二层条件组别
                         if (MapUtils.isNotEmpty(map)) {
-                            for (String key : map.keySet()) {
+                            for (String ruleGroup : map.keySet()) {
                                 RuleConditionDTO ruleConditionDTO = new RuleConditionDTO();
                                 ruleConditionDTO.setHasSubCond(ruleInitDTO.getHasSubCond());
-                                ruleConditionDTO.setRuleGroup(key);
+                                ruleConditionDTO.setRuleGroup(ruleGroup);
                                 //结果判空第三层条件明细
-                                if (ListUtil.isNotEmpty(map.get(key))) {
-                                    for (RuleConditionInitDTO ruleConditionInitDTO : map.get(key)) {
+                                if (ListUtil.isNotEmpty(map.get(ruleGroup))) {
+                                    for (RuleConditionInitDTO ruleConditionInitDTO : map.get(ruleGroup)) {
                                         ruleConditionDTO.setMsg(ruleConditionInitDTO.getMsg());
+                                        //todo
                                         RuleBaseDTO ruleBaseDTO = new RuleBaseDTO();
+                                        List<RuleBaseInitDTO> ruleBaseInitDTOList = ruleBaseInits.get(ruleConditionInitDTO.getRuleBaseId());
                                         BeanUtil.copyProperties(ruleBaseInits.get(ruleConditionInitDTO.getRuleBaseId()), ruleBaseDTO);
                                         ruleConditionDTO.getRuleBaseDTOList().add(ruleBaseDTO);
                                     }
@@ -85,8 +88,16 @@ public class RuleAggregate {
     }
 
     @DataProvider("getRuleInit")
-    public Map<String, List<RuleInitDTO>> getRuleInit() {
-        List<RuleInitDTO> list = klRuleFacade.getRuleInitDTO();
+    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");
     }
 
@@ -95,16 +106,45 @@ public class RuleAggregate {
         List<RuleConditionInitDTO> list = klRuleFacade.getRuleConditionInitDTO();
         Map<Integer, List<RuleConditionInitDTO>> map = EntityUtil.makeEntityListMap(list, "ruleId");
         Map<Integer, Map<String, List<RuleConditionInitDTO>>> res = new HashMap<>();
-        for (Integer key : map.keySet()) {
-            res.put(key, EntityUtil.makeEntityListMap(map.get(key), "ruleGroup"));
+        for (Integer ruleId : map.keySet()) {
+            res.put(ruleId, EntityUtil.makeEntityListMap(map.get(ruleId), "ruleGroup"));
         }
         return res;
     }
 
-
     @DataProvider("getRuleBaseInit")
-    public Map<Integer, RuleBaseInitDTO> getRuleBaseInit() {
-        List<RuleBaseInitDTO> list = klRuleFacade.getRuleBaseInitDTO();
-        return EntityUtil.makeEntityMap(list, "ruleBaseId");
+    public Map<Integer, List<RuleBaseInitDTO>> getRuleBaseInit(
+            @DataConsumer("getRuleBaseInitNotHaveClass") List<RuleBaseInitDTO> ruleBaseNotHaveClass,
+            @DataConsumer("getRuleBaseInitHaveClass") List<RuleBaseInitDTO> ruleBaseHaveClass) {
+        List<RuleBaseInitDTO> list = new ArrayList<>();
+        if (ListUtil.isNotEmpty(ruleBaseNotHaveClass)){
+            list.addAll(ruleBaseNotHaveClass);
+        }
+        if (ListUtil.isNotEmpty(ruleBaseHaveClass)){
+            list.addAll(ruleBaseHaveClass);
+        }
+        return EntityUtil.makeEntityListMap(list, "ruleBaseId");
+    }
+
+
+    @DataProvider("getRuleInitNotHaveClass")
+    public List<RuleInitDTO> getRuleInitNotHaveClass() {
+        return klRuleFacade.getRuleInitDTONotHaveClass();
     }
+
+    @DataProvider("getRuleInitHaveClass")
+    public List<RuleInitDTO> getRuleInitHaveClass() {
+        return klRuleFacade.getRuleInitDTOHaveClass();
+    }
+
+    @DataProvider("getRuleBaseInitNotHaveClass")
+    public List<RuleBaseInitDTO> getRuleBaseInitNotHaveClass() {
+        return klRuleFacade.getRuleBaseInitDTONotHaveClass();
+    }
+
+    @DataProvider("getRuleBaseInitHaveClass")
+    public List<RuleBaseInitDTO> getRuleBaseInitHaveClass() {
+        return klRuleFacade.getRuleBaseInitDTOHaveClass();
+    }
+
 }

+ 2 - 2
src/main/java/com/diagbot/config/CacheDeleteInit.java

@@ -33,8 +33,8 @@ public class CacheDeleteInit implements CommandLineRunner {
         cacheFacade.clear();
         log.info("CDSS-CORE服务启动清除redis缓存成功!");
 
-        cacheFacade.loadDrugTypeCache();
-        log.info("CDSS-CORE服务启动加载药品类型对应关系缓存成功!");
+//        cacheFacade.loadDrugTypeCache();
+//        log.info("CDSS-CORE服务启动加载药品类型对应关系缓存成功!");
 
         cacheFacade.getDiseaseCorrespondCache();
         log.info("CDSS-CORE服务启动加载疾病对应ICD10缓存成功!");

+ 8 - 0
src/main/java/com/diagbot/mapper/KlRuleMapper.java

@@ -38,4 +38,12 @@ public interface KlRuleMapper extends BaseMapper<KlRule> {
     List<RuleConditionInitDTO> getRuleConditionInitDTO();
 
     List<RuleBaseInitDTO> getRuleBaseInitDTO();
+
+    List<RuleInitDTO> getRuleInitDTONotHaveClass();
+
+    List<RuleInitDTO> getRuleInitDTOHaveClass();
+
+    List<RuleBaseInitDTO> getRuleBaseInitDTONotHaveClass();
+
+    List<RuleBaseInitDTO> getRuleBaseInitDTOHaveClass();
 }

+ 8 - 0
src/main/java/com/diagbot/service/KlRuleService.java

@@ -34,4 +34,12 @@ public interface KlRuleService extends IService<KlRule> {
     List<RuleConditionInitDTO> getRuleConditionInitDTO();
 
     List<RuleBaseInitDTO> getRuleBaseInitDTO();
+
+    List<RuleInitDTO> getRuleInitDTONotHaveClass();
+
+    List<RuleInitDTO> getRuleInitDTOHaveClass();
+
+    List<RuleBaseInitDTO> getRuleBaseInitDTONotHaveClass();
+
+    List<RuleBaseInitDTO> getRuleBaseInitDTOHaveClass();
 }

+ 21 - 0
src/main/java/com/diagbot/service/impl/KlRuleServiceImpl.java

@@ -61,4 +61,25 @@ public class KlRuleServiceImpl extends ServiceImpl<KlRuleMapper, KlRule> impleme
     public List<RuleBaseInitDTO> getRuleBaseInitDTO(){
         return baseMapper.getRuleBaseInitDTO();
     }
+
+
+    @Override
+    public List<RuleInitDTO> getRuleInitDTONotHaveClass(){
+        return baseMapper.getRuleInitDTONotHaveClass();
+    }
+
+    @Override
+    public List<RuleInitDTO> getRuleInitDTOHaveClass(){
+        return baseMapper.getRuleInitDTOHaveClass();
+    }
+
+    @Override
+    public List<RuleBaseInitDTO> getRuleBaseInitDTONotHaveClass(){
+        return baseMapper.getRuleBaseInitDTONotHaveClass();
+    }
+
+    @Override
+    public List<RuleBaseInitDTO> getRuleBaseInitDTOHaveClass(){
+        return baseMapper.getRuleBaseInitDTOHaveClass();
+    }
 }

+ 2 - 2
src/main/java/com/diagbot/web/CacheController.java

@@ -38,7 +38,7 @@ public class CacheController {
     @SysLogger("clear")
     public RespDTO<Boolean> clear() {
         cacheFacade.clear();
-        cacheFacade.loadDrugTypeCache();
+//        cacheFacade.loadDrugTypeCache();
         cacheFacade.getDiseaseCorrespondCache();
         cacheFacade.getdiseaseFilterCache();
         cacheFacade.loadPushModel(); // 重新加载推送类型
@@ -116,7 +116,7 @@ public class CacheController {
     public RespDTO<Boolean> clearStandRuleDrugAll() {
         cacheFacade.clearStandConvert();
         cacheFacade.loadAllRuleCache();
-        cacheFacade.loadDrugTypeCache();
+//        cacheFacade.loadDrugTypeCache();
         cacheFacade.loadAllBaseDiagnoseCache();
         // 加载大数据缓存
         boolean flag = cacheFacade.reloadPushDB();

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

@@ -356,4 +356,118 @@
         AND t5. STATUS = 1
         AND t3.concept_id = t5.id
     </select>
+
+    <select id="getRuleInitDTONotHaveClass" resultType="com.diagbot.dto.RuleInitDTO">
+        SELECT
+            CONCAT_WS("_",t1.concept_id,t1.rule_type) AS conceptGroup,
+            t1.id AS ruleId,
+            t4.lib_name AS libName,
+            t4.lib_type AS libType,
+            t1.rule_type AS ruleType,
+            t1.has_sub_cond AS hasSubCond
+        FROM
+            kl_rule t1,
+            kl_concept t4
+        WHERE
+            t1.is_deleted = "N"
+        AND t4.is_deleted = "N"
+        AND t1.concept_id = t4.id
+        AND t1. STATUS = 1
+        AND t4. STATUS = 1
+        AND t4.lib_type BETWEEN 100 AND 299
+    </select>
+
+    <select id="getRuleInitDTOHaveClass" resultType="com.diagbot.dto.RuleInitDTO">
+        SELECT
+            CONCAT_WS("_", t11.id, t1.rule_type) AS conceptGroup,
+            t1.id AS ruleId,
+            t11.lib_name AS libName,
+            t11.lib_type AS libType,
+            t1.rule_type AS ruleType,
+            t1.has_sub_cond AS hasSubCond
+        FROM
+            kl_rule t1,
+            kl_concept t4,
+            kl_relation t10,
+            kl_concept t11
+        WHERE
+            t1.is_deleted = "N"
+        AND t4.is_deleted = "N"
+        AND t1.concept_id = t4.id
+        AND t1. STATUS = 1
+        AND t4. STATUS = 1
+        AND t4.lib_type BETWEEN 300 AND 399
+        AND t10.start_id = t4.id
+        AND t10.relation_id = 600
+        AND t10.end_id = t11.id
+        AND t11.lib_type BETWEEN 100 AND 299
+        AND t10.is_deleted = "N"
+        AND t11.is_deleted = "N"
+        AND t10. STATUS = 1
+        AND t11. STATUS = 1
+    </select>
+
+    <select id="getRuleBaseInitDTONotHaveClass" resultType="com.diagbot.dto.RuleBaseInitDTO">
+        SELECT
+            t3.id AS ruleBaseId,
+            t5.lib_name AS baseLibName,
+            t5.lib_type AS baseLibType,
+            t3.type AS baseType,
+            t3.min_operator AS baseMinOperator,
+            t3.min_value AS baseMinValue,
+            t3.min_unit AS baseMinUnit,
+            t3.max_operator AS baseMaxOperator,
+            t3.max_value AS baseMaxValue,
+            t3.max_unit AS baseMaxUnit,
+            t3.eq_operator AS baseEqOperator,
+            t3.eq_value AS baseEqValue,
+            t3.eq_unit AS baseEqUnit
+        FROM
+            kl_rule_base t3,
+            kl_concept t5
+        WHERE
+            t3.is_deleted = "N"
+        AND t5.is_deleted = "N"
+        AND t3. STATUS = 1
+        AND t5. STATUS = 1
+        AND t3.concept_id = t5.id
+        AND t5.lib_type BETWEEN 100 AND 299
+    </select>
+
+    <select id="getRuleBaseInitDTOHaveClass" resultType="com.diagbot.dto.RuleBaseInitDTO">
+        SELECT
+            t3.id AS ruleBaseId,
+            t11.lib_name AS baseLibName,
+            t11.lib_type AS baseLibType,
+            t3.type AS baseType,
+            t3.min_operator AS baseMinOperator,
+            t3.min_value AS baseMinValue,
+            t3.min_unit AS baseMinUnit,
+            t3.max_operator AS baseMaxOperator,
+            t3.max_value AS baseMaxValue,
+            t3.max_unit AS baseMaxUnit,
+            t3.eq_operator AS baseEqOperator,
+            t3.eq_value AS baseEqValue,
+            t3.eq_unit AS baseEqUnit
+        FROM
+            kl_rule_base t3,
+            kl_concept t5,
+            kl_relation t10,
+            kl_concept t11
+        WHERE
+            t3.is_deleted = "N"
+        AND t5.is_deleted = "N"
+        AND t3. STATUS = 1
+        AND t5. STATUS = 1
+        AND t3.concept_id = t5.id
+        AND t5.lib_type BETWEEN 300 AND 399
+        AND t10.start_id = t5.id
+        AND t10.relation_id = 600
+        AND t10.end_id = t11.id
+        AND t11.lib_type BETWEEN 100 AND 299
+        AND t10.is_deleted = "N"
+        AND t11.is_deleted = "N"
+        AND t10. STATUS = 1
+        AND t11. STATUS = 1
+    </select>
 </mapper>