ソースを参照

将有效的规则ID插入到表里做搜索用

gaodm 3 年 前
コミット
d63366fa36

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

@@ -1,11 +1,13 @@
 package com.diagbot.aggregate;
 
+import com.diagbot.dto.AllRulesDTO;
 import com.diagbot.dto.RuleBaseDTO;
 import com.diagbot.dto.RuleBaseInitDTO;
 import com.diagbot.dto.RuleConditionDTO;
 import com.diagbot.dto.RuleConditionInitDTO;
 import com.diagbot.dto.RuleDTO;
 import com.diagbot.dto.RuleInitDTO;
+import com.diagbot.entity.KlRuleSearch;
 import com.diagbot.enums.BaseTypeEnum;
 import com.diagbot.enums.LexiconEnum;
 import com.diagbot.enums.RedisEnum;
@@ -26,6 +28,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 
@@ -43,14 +46,18 @@ public class RuleAggregate {
     private RedisUtil redisUtil;
 
     @DataProvider("getAllRules")
-    public Map<String, RuleDTO> getAllRules(
+    public AllRulesDTO getAllRules(
             @DataConsumer("getRuleInit") Map<String, List<RuleInitDTO>> ruleInits,
             @DataConsumer("getRuleConditionInit") Map<Integer, Map<String, List<RuleConditionInitDTO>>> ruleConditionInits,
             @DataConsumer("getRuleBaseInit") Map<Integer, List<RuleBaseInitDTO>> ruleBaseInits) {
         try {
-            Map<String, RuleDTO> res = new HashMap();
+            //有效规则Map
+            Map<String, RuleDTO> ruleDTOMap = new HashMap();
             //药物过敏源
             Map<String, Integer> drugAllergen = new HashMap<>();
+            //规则搜索有效的规则ID
+            HashSet<Long> ruleIdSet = new HashSet<>();
+            List<KlRuleSearch> klRuleSearchList = new ArrayList<>();
             //结果判空第一层规则类型
             if (MapUtils.isNotEmpty(ruleInits)) {
                 for (String ruleKey : ruleInits.keySet()) {
@@ -117,6 +124,13 @@ public class RuleAggregate {
                                                     }
                                                 }
                                                 ruleConditionMap.put(ruleConditionDTO1.toString(), 1);
+                                                //规则搜索有效的规则ID
+                                                if (!ruleIdSet.contains(ruleInitDTO.getRuleId())){
+                                                    ruleIdSet.add(ruleInitDTO.getRuleId());
+                                                    KlRuleSearch klRuleSearch = new KlRuleSearch();
+                                                    klRuleSearch.setId(ruleInitDTO.getRuleId());
+                                                    klRuleSearchList.add(klRuleSearch);
+                                                }
                                             }
                                         }
                                     }
@@ -133,17 +147,25 @@ public class RuleAggregate {
                             if (!ruleConditionMap.containsKey(ruleConditionDTO.toString())) {
                                 ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO);
                                 ruleConditionMap.put(ruleConditionDTO.toString(), 1);
+                                //规则搜索有效的规则ID
+                                if (!ruleIdSet.contains(ruleInitDTO.getRuleId())){
+                                    ruleIdSet.add(ruleInitDTO.getRuleId());
+                                    KlRuleSearch klRuleSearch = new KlRuleSearch();
+                                    klRuleSearch.setId(ruleInitDTO.getRuleId());
+                                    klRuleSearchList.add(klRuleSearch);
+                                }
                             }
                         }
                     }
-                    res.put(RedisEnum.allRule.getName() + ruleDTO.getLibType() + "_" + ruleDTO.getLibName() + "_" + ruleDTO.getRuleType(), ruleDTO);
-                }
-                //直接加载缓存
-                if (MapUtils.isNotEmpty(drugAllergen)) {
-                    redisUtil.set(RedisEnum.drugAllergen.getName(), drugAllergen);
+                    ruleDTOMap.put(RedisEnum.allRule.getName() + ruleDTO.getLibType() + "_" + ruleDTO.getLibName() + "_" + ruleDTO.getRuleType(), ruleDTO);
                 }
             }
-            return res;
+            //出参设置
+            AllRulesDTO allRulesDTO = new AllRulesDTO();
+            allRulesDTO.setRuleDTOMap(ruleDTOMap);
+            allRulesDTO.setDrugAllergen(drugAllergen);
+            allRulesDTO.setKlRuleSearchList(klRuleSearchList);
+            return allRulesDTO;
         } catch (Exception e) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "全部规则加载出错:" + e.getMessage());
         }
@@ -170,18 +192,18 @@ public class RuleAggregate {
     //    }
 
     @DataProvider("getRuleConditionInit")
-    public Map<Integer, Map<String, List<RuleConditionInitDTO>>> getRuleConditionInit() {
+    public Map<Long, Map<String, List<RuleConditionInitDTO>>> getRuleConditionInit() {
         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 ruleId : map.keySet()) {
+        Map<Long, List<RuleConditionInitDTO>> map = EntityUtil.makeEntityListMap(list, "ruleId");
+        Map<Long, Map<String, List<RuleConditionInitDTO>>> res = new HashMap<>();
+        for (Long ruleId : map.keySet()) {
             res.put(ruleId, EntityUtil.makeEntityListMap(map.get(ruleId), "ruleGroup"));
         }
         return res;
     }
 
     @DataProvider("getRuleBaseInit")
-    public Map<Integer, List<RuleBaseInitDTO>> getRuleBaseInit(
+    public Map<Long, List<RuleBaseInitDTO>> getRuleBaseInit(
             @DataConsumer("getRuleBaseInitNotHaveClass") List<RuleBaseInitDTO> ruleBaseNotHaveClass,
             @DataConsumer("getRuleBaseInitHaveClass") List<RuleBaseInitDTO> ruleBaseHaveClass) {
         List<RuleBaseInitDTO> list = new ArrayList<>();

+ 26 - 0
src/main/java/com/diagbot/dto/AllRulesDTO.java

@@ -0,0 +1,26 @@
+package com.diagbot.dto;
+
+import com.diagbot.entity.KlRuleSearch;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2022/2/22 14:21
+ */
+@Getter
+@Setter
+public class AllRulesDTO {
+    //有效规则Map
+    Map<String, RuleDTO> ruleDTOMap = new HashMap();
+    //药物过敏源
+    Map<String, Integer> drugAllergen = new HashMap<>();
+    //规则搜索有效的规则ID
+    List<KlRuleSearch> klRuleSearchList = new ArrayList<>();
+}

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

@@ -11,5 +11,5 @@ import lombok.Setter;
 @Getter
 @Setter
 public class RuleBaseInitDTO extends RuleBaseDTO {
-    private Integer ruleBaseId;
+    private Long ruleBaseId;
 }

+ 2 - 2
src/main/java/com/diagbot/dto/RuleConditionInitDTO.java

@@ -11,8 +11,8 @@ import lombok.Setter;
 @Getter
 @Setter
 public class RuleConditionInitDTO {
-    private Integer ruleId;
+    private Long ruleId;
     private String ruleGroup;
-    private Integer ruleBaseId;
+    private Long ruleBaseId;
     private String msg;
 }

+ 2 - 2
src/main/java/com/diagbot/dto/RuleInitDTO.java

@@ -15,8 +15,8 @@ import java.util.List;
 @Setter
 public class RuleInitDTO {
     private String conceptGroup;
-    private Integer conceptId;
-    private Integer ruleId;
+    private Long conceptId;
+    private Long ruleId;
     private String libName;
     private Integer libType;
     private Integer ruleType;

+ 102 - 0
src/main/java/com/diagbot/entity/KlRuleSearch.java

@@ -0,0 +1,102 @@
+package com.diagbot.entity;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 有效规则搜索表
+ * </p>
+ *
+ * @author gaodm
+ * @since 2022-02-22
+ */
+public class KlRuleSearch implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 规则id
+     */
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+
+    @Override
+    public String toString() {
+        return "KlRuleSearch{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+        "}";
+    }
+}

+ 13 - 0
src/main/java/com/diagbot/facade/KlRuleSearchFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.KlRuleSearchServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2022/2/22 15:04
+ */
+@Component
+public class KlRuleSearchFacade extends KlRuleSearchServiceImpl {
+}

+ 29 - 12
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -3,13 +3,13 @@ package com.diagbot.facade;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.StandConvertServiceClient;
+import com.diagbot.dto.AllRulesDTO;
 import com.diagbot.dto.BaseDiagnoseDTO;
 import com.diagbot.dto.BaseRegulationDTO;
 import com.diagbot.dto.DrugNameDTO;
 import com.diagbot.dto.DrugTypeCacheDTO;
 import com.diagbot.dto.DrugTypeDTO;
 import com.diagbot.dto.NeoPushDTO;
-import com.diagbot.dto.RuleDTO;
 import com.diagbot.entity.KlDiseaseCorresponding;
 import com.diagbot.entity.SymptomFeature;
 import com.diagbot.entity.TranHospitalFilter;
@@ -20,6 +20,7 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.model.entity.PD;
 import com.diagbot.service.KlDiseaseCorrespondingService;
+import com.diagbot.service.KlRuleSearchService;
 import com.diagbot.service.SymptomFeatureService;
 import com.diagbot.service.TranHospitalFilterService;
 import com.diagbot.util.ListUtil;
@@ -38,6 +39,7 @@ import io.github.lvyahui8.spring.facade.DataFacade;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -78,6 +80,9 @@ public class NeoFacade {
     private KlDiagnoseBaseFacade klDiagnoseBaseFacade;
     @Autowired
     private KlRegulationBaseFacade klRegulationBaseFacade;
+    @Autowired
+    @Qualifier("klRuleSearchServiceImpl")
+    private KlRuleSearchService klRuleSearchService;
 
     /**
      * 返回药品缓存信息
@@ -482,19 +487,31 @@ public class NeoFacade {
     }
 
     public void allRuleCache() {
-//        List<RuleDTO> ruleDTOList = klRuleFacade.getAllRule();
-//        if (ListUtil.isNotEmpty(ruleDTOList)) {
-//            Map map = ruleDTOList.stream().collect(Collectors.toMap(
-//                    k -> RedisEnum.allRule.getName() + k.getLibType() + "_" + k.getLibName() + "_" + k.getRuleType(),
-//                    v -> v,
-//                    (v1, v2) -> (v2)
-//            ));
-//            redisTemplate.opsForValue().multiSet(map);
-//        }
+        //        List<RuleDTO> ruleDTOList = klRuleFacade.getAllRule();
+        //        if (ListUtil.isNotEmpty(ruleDTOList)) {
+        //            Map map = ruleDTOList.stream().collect(Collectors.toMap(
+        //                    k -> RedisEnum.allRule.getName() + k.getLibType() + "_" + k.getLibName() + "_" + k.getRuleType(),
+        //                    v -> v,
+        //                    (v1, v2) -> (v2)
+        //            ));
+        //            redisTemplate.opsForValue().multiSet(map);
+        //        }
         try {
             Map<String, Object> invokeParams = new HashMap<>();
-            Map<String, RuleDTO> map = DataFacade.get("getAllRules", invokeParams, Map.class);
-            redisUtil.multiSet(map);
+            AllRulesDTO allRulesDTO = DataFacade.get("getAllRules", invokeParams, AllRulesDTO.class);
+            //加载有效规则Map
+            if (MapUtils.isNotEmpty(allRulesDTO.getRuleDTOMap())) {
+                redisUtil.multiSet(allRulesDTO.getRuleDTOMap());
+            }
+            //加载药物过敏源缓存
+            if (MapUtils.isNotEmpty(allRulesDTO.getDrugAllergen())) {
+                redisUtil.set(RedisEnum.drugAllergen.getName(), allRulesDTO.getDrugAllergen());
+            }
+            //存储有效规则Id
+            klRuleSearchService.remove(new QueryWrapper<>());
+            if (ListUtil.isNotEmpty(allRulesDTO.getKlRuleSearchList())) {
+                klRuleSearchService.saveBatch(allRulesDTO.getKlRuleSearchList());
+            }
         } catch (Exception e) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "获取所有规则失败" + e.getMessage());
         }

+ 16 - 0
src/main/java/com/diagbot/mapper/KlRuleSearchMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlRuleSearch;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 有效规则搜索表 Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2022-02-22
+ */
+public interface KlRuleSearchMapper extends BaseMapper<KlRuleSearch> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/service/KlRuleSearchService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlRuleSearch;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 有效规则搜索表 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2022-02-22
+ */
+public interface KlRuleSearchService extends IService<KlRuleSearch> {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/KlRuleSearchServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlRuleSearch;
+import com.diagbot.mapper.KlRuleSearchMapper;
+import com.diagbot.service.KlRuleSearchService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 有效规则搜索表 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2022-02-22
+ */
+@Service
+public class KlRuleSearchServiceImpl extends ServiceImpl<KlRuleSearchMapper, KlRuleSearch> implements KlRuleSearchService {
+
+}

+ 21 - 0
src/main/java/com/diagbot/web/KlRuleSearchController.java

@@ -0,0 +1,21 @@
+package com.diagbot.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 有效规则搜索表 前端控制器
+ * </p>
+ *
+ * @author gaodm
+ * @since 2022-02-22
+ */
+@Controller
+@RequestMapping("/klRuleSearch")
+@Deprecated
+public class KlRuleSearchController {
+
+}

+ 15 - 0
src/main/resources/mapper/KlRuleSearchMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.KlRuleSearchMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.KlRuleSearch">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+    </resultMap>
+
+</mapper>

+ 2 - 2
src/test/java/com/diagbot/CodeGeneration.java

@@ -33,7 +33,7 @@ public class CodeGeneration {
         gc.setEnableCache(false);// XML 二级缓存
         gc.setBaseResultMap(true);// XML ResultMap
         gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("zhoutg");// 作者
+        gc.setAuthor("gaodm");// 作者
 
         // 自定义文件命名,注意 %s 会自动填充表实体属性!
         gc.setControllerName("%sController");
@@ -56,7 +56,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
         // strategy.setTablePrefix(new String[] { "demo_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude("kl_diagnose_record", "kl_diagnose_record_detail"); // 需要生成的表
+        strategy.setInclude("kl_rule_search"); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);