浏览代码

Merge branch 'develop' into dev/ruleClass20210805

gaodm 3 年之前
父节点
当前提交
1043ef5133

+ 76 - 65
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,87 +41,96 @@ 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")
-    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);
-        }
+    public Map<String, List<RuleInitDTO>> getRuleInit() {
+        List<RuleInitDTO> list = klRuleFacade.getRuleInitDTO();
         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() {
         List<RuleConditionInitDTO> list = klRuleFacade.getRuleConditionInitDTO();

+ 1 - 1
src/main/java/com/diagbot/dto/RuleConditionDTO.java

@@ -14,7 +14,7 @@ import java.util.List;
  */
 @Getter
 @Setter
-@ToString(exclude = "ruleGroup", includeFieldNames = false)
+@ToString(exclude = { "ruleGroup", "msg" }, includeFieldNames = false)
 public class RuleConditionDTO {
     private Integer hasSubCond;
     private String ruleGroup;

+ 3 - 3
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -833,7 +833,7 @@ public class CommonFacade {
 
         try {
             for (T item : list) {
-                String name = item.getClass().getMethod("getName").invoke(item).toString();
+                String name = ReflectUtil.getProperty(item, "name");
                 if (StringUtil.isBlank(name)) {
                     retList.add(item);
                     continue;
@@ -841,7 +841,7 @@ public class CommonFacade {
 
 //                String uniqueName = item.getClass().getMethod("getUniqueName").invoke(item).toString();
 
-                String uniqueName = item.getClass().getMethod("get"+propertyName).invoke(item).toString();
+                String uniqueName = ReflectUtil.getProperty(item, "uniqueName");
                 if (StringUtil.isNotBlank(uniqueName) && !"StandName".equals(propertyName)) {
                     retList.add(item);
                     continue;
@@ -849,7 +849,7 @@ public class CommonFacade {
 
                 String hisDetailName = "";
                 if(type.equals(ConceptTypeEnum.LisPack.getKey())) {
-                    hisDetailName = item.getClass().getMethod("getDetailName").invoke(item).toString();
+                    hisDetailName = ReflectUtil.getProperty(item, "detailName");
                     if (StringUtil.isBlank(hisDetailName)) {
                         hisDetailName = "";
                     }

+ 71 - 24
src/main/resources/mapper/KlRuleMapper.xml

@@ -159,7 +159,7 @@
         <if test="parStatus!=null">
             AND ru.status = #{parStatus}
         </if>
-        ORDER BY ru.status DESC ,ru.gmt_modified DESC
+        ORDER BY ru.status DESC ,ru.gmt_modified DESC,ru.id DESC
     </select>
     <select id="getByIdRuleInfo" resultType="com.diagbot.dto.KlRuleByIdDTO">
         SELECT
@@ -300,26 +300,71 @@
 
     <select id="getRuleInitDTO" 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.msg AS msg,
-            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
+            (
+                SELECT
+                    t1.concept_id AS conceptId,
+                    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,
+                    t1.msg AS msg,
+                    t1.gmt_modified AS gmtModified
+                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
+                UNION
+                    SELECT
+                        t11.id AS conceptId,
+                        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,
+                        t1.msg AS msg,
+                        t1.gmt_modified AS gmtModified
+                    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
+            ) t12
         ORDER BY
-            t1.concept_id,
-            t1.rule_type,
-            t1.has_sub_cond
+            t12.conceptId,
+            t12.ruleType,
+            t12.hasSubCond,
+            t12.gmtModified DESC,
+            t12.ruleId DESC
     </select>
 
     <select id="getRuleConditionInitDTO" resultType="com.diagbot.dto.RuleConditionInitDTO">
@@ -330,10 +375,10 @@
             t2.msg as msg
         FROM
             kl_rule_condition t2
+        WHERE
+            t2.is_deleted = "N"
         ORDER BY
-            t2.rule_id,
-            t2.group_type,
-            t2.rule_base_id
+            t2.id DESC
     </select>
 
     <select id="getRuleBaseInitDTO" resultType="com.diagbot.dto.RuleBaseInitDTO">
@@ -438,7 +483,8 @@
         AND t3. STATUS = 1
         AND t5. STATUS = 1
         AND t3.concept_id = t5.id
-        AND t5.lib_type BETWEEN 100 AND 299
+        AND (t5.lib_type BETWEEN 100 AND 299
+		OR t5.lib_type= 410)
         ORDER BY t5.id
     </select>
 
@@ -472,7 +518,8 @@
         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 (t11.lib_type BETWEEN 100 AND 299
+		OR t11.lib_type = 410)
         AND t10.is_deleted = "N"
         AND t11.is_deleted = "N"
         AND t10. STATUS = 1