소스 검색

redis存储结构调整

zhoutg 4 년 전
부모
커밋
4072917154

+ 8 - 8
src/main/java/com/diagbot/enums/StandConvertEnum.java

@@ -11,14 +11,14 @@ import lombok.Setter;
 
 public enum StandConvertEnum implements KeyedNamed {
 
-    lis(1, "lis"),
-    pacs(2, "pacs"),
-    disease(3, "disease"),
-    drug(4, "drug"),
-    symptom(5, "symptom"),
-    operation(6, "operation"),
-    vital(7, "vital"),
-    transfusion(8, "transfusion");
+    lis(1, "lisConv:"),
+    pacs(2, "pacsConv:"),
+    disease(3, "diseaseConv:"),
+    drug(4, "drugConv:"),
+    symptom(5, "symptomConv:"),
+    operation(6, "operationConv:"),
+    vital(7, "vitalConv:"),
+    transfusion(8, "transfusionConv:");
 
     @Setter
     private int key;

+ 10 - 8
src/main/java/com/diagbot/facade/CacheFacade.java

@@ -36,14 +36,14 @@ public class CacheFacade {
      * @return
      */
     public void clearStandConvert() {
-        redisUtil.delete(StandConvertEnum.disease.getName());
-        redisUtil.delete(StandConvertEnum.drug.getName());
-        redisUtil.delete(StandConvertEnum.lis.getName());
-        redisUtil.delete(StandConvertEnum.operation.getName());
-        redisUtil.delete(StandConvertEnum.pacs.getName());
-        redisUtil.delete(StandConvertEnum.symptom.getName());
-        redisUtil.delete(StandConvertEnum.vital.getName());
-        redisUtil.delete(StandConvertEnum.transfusion.getName());
+        redisUtil.deleteByPrex(StandConvertEnum.disease.getName());
+        redisUtil.deleteByPrex(StandConvertEnum.drug.getName());
+        redisUtil.deleteByPrex(StandConvertEnum.lis.getName());
+        redisUtil.deleteByPrex(StandConvertEnum.operation.getName());
+        redisUtil.deleteByPrex(StandConvertEnum.pacs.getName());
+        redisUtil.deleteByPrex(StandConvertEnum.symptom.getName());
+        redisUtil.deleteByPrex(StandConvertEnum.vital.getName());
+        redisUtil.deleteByPrex(StandConvertEnum.transfusion.getName());
     }
 
     /**
@@ -53,8 +53,10 @@ public class CacheFacade {
      */
     public void loadDrugTypeCache() {
         redisUtil.deleteByPrex(RedisEnum.drugType.getName());
+        // redisUtil.deleteByPrex("");
         // redisUtil.deleteByPrex("药品分类_");
         neoFacade.getDrugCache();
+
     }
 
     public void clearLoadCache(String str) {

+ 31 - 55
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -149,7 +149,7 @@ public class NeoFacade {
 
         // 加载药品缓存
         for (String key : res.keySet()) {
-            redisUtil.updateValueByType(RedisEnum.drugType.getName() + key, res.get(key));
+            redisUtil.updateValue(RedisEnum.drugType.getName() + key, res.get(key));
         }
         return res;
     }
@@ -797,14 +797,14 @@ public class NeoFacade {
         Map<String, Map<String, String>> map = new LinkedHashMap<>();
 
         List<StandConvertCrfVO> standConvertCrfVOList = new ArrayList<>();
-        List<String> clinicalConList = getConvertList(standConvert.getClinicalList(), StandConvertEnum.symptom.getName(), standConvertCrfVOList);
-        List<String> operationConList = getConvertList(standConvert.getOperationList(), StandConvertEnum.operation.getName(), standConvertCrfVOList);
-        List<String> drugConList = getConvertList(standConvert.getDrugList(), StandConvertEnum.drug.getName(), standConvertCrfVOList);
-        List<String> vitallConList = getConvertList(standConvert.getVitalList(), StandConvertEnum.vital.getName(), standConvertCrfVOList);
-        List<String> diseaseConList = getConvertList(standConvert.getDiaglList(), StandConvertEnum.disease.getName(), standConvertCrfVOList);
-        List<String> pacsConList = getConvertList(standConvert.getPacsList(), StandConvertEnum.pacs.getName(), standConvertCrfVOList);
-        List<String> lisConList = getConvertList(standConvert.getLisList(), StandConvertEnum.lis.getName(), standConvertCrfVOList);
-        List<String> transfusionConList = getConvertList(standConvert.getTransfusionList(), StandConvertEnum.transfusion.getName(), standConvertCrfVOList);
+        List<String> clinicalConList = getConvertList(standConvert.getClinicalList(), StandConvertEnum.symptom.toString(), standConvertCrfVOList);
+        List<String> operationConList = getConvertList(standConvert.getOperationList(), StandConvertEnum.operation.toString(), standConvertCrfVOList);
+        List<String> drugConList = getConvertList(standConvert.getDrugList(), StandConvertEnum.drug.toString(), standConvertCrfVOList);
+        List<String> vitallConList = getConvertList(standConvert.getVitalList(), StandConvertEnum.vital.toString(), standConvertCrfVOList);
+        List<String> diseaseConList = getConvertList(standConvert.getDiaglList(), StandConvertEnum.disease.toString(), standConvertCrfVOList);
+        List<String> pacsConList = getConvertList(standConvert.getPacsList(), StandConvertEnum.pacs.toString(), standConvertCrfVOList);
+        List<String> lisConList = getConvertList(standConvert.getLisList(), StandConvertEnum.lis.toString(), standConvertCrfVOList);
+        List<String> transfusionConList = getConvertList(standConvert.getTransfusionList(), StandConvertEnum.transfusion.toString(), standConvertCrfVOList);
 
         StandConvertCrfBatchDTO standConvertCrfBatchDTO = null;
         try {
@@ -813,14 +813,14 @@ public class NeoFacade {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "标准词转换【服务器】挂了!" + e.getMessage());
         }
         Map<String, Map<String, StandConvertCrfDTO>> crfMap = standConvertCrfBatchDTO.getData();
-        getConvertMap(crfMap, StandConvertEnum.symptom.getName(), clinicalConList, standConvert.getClinicalList(), map);
-        getConvertMap(crfMap, StandConvertEnum.operation.getName(), operationConList, standConvert.getOperationList(), map);
-        getConvertMap(crfMap, StandConvertEnum.drug.getName(), drugConList, standConvert.getDrugList(), map);
-        getConvertMap(crfMap, StandConvertEnum.vital.getName(), vitallConList, standConvert.getVitalList(), map);
-        getConvertMap(crfMap, StandConvertEnum.disease.getName(), diseaseConList, standConvert.getDiaglList(), map);
-        getConvertMap(crfMap, StandConvertEnum.pacs.getName(), pacsConList, standConvert.getPacsList(), map);
-        getConvertMap(crfMap, StandConvertEnum.lis.getName(), lisConList, standConvert.getLisList(), map);
-        getConvertMap(crfMap, StandConvertEnum.transfusion.getName(), transfusionConList, standConvert.getTransfusionList(), map);
+        getConvertMap(crfMap, StandConvertEnum.symptom.toString(), clinicalConList, map);
+        getConvertMap(crfMap, StandConvertEnum.operation.toString(), operationConList, map);
+        getConvertMap(crfMap, StandConvertEnum.drug.toString(), drugConList, map);
+        getConvertMap(crfMap, StandConvertEnum.vital.toString(), vitallConList, map);
+        getConvertMap(crfMap, StandConvertEnum.disease.toString(), diseaseConList, map);
+        getConvertMap(crfMap, StandConvertEnum.pacs.toString(), pacsConList, map);
+        getConvertMap(crfMap, StandConvertEnum.lis.toString(), lisConList, map);
+        getConvertMap(crfMap, StandConvertEnum.transfusion.toString(), transfusionConList, map);
 
         return map;
     }
@@ -838,14 +838,10 @@ public class NeoFacade {
             return null;
         }
 
-        // 从redis获取对应的内容
-        Map<String, String> redisMap = redisUtil.getValueByType(type);
-        if (redisMap == null) {
-            redisMap = new LinkedHashMap<>();
-        }
         if (ListUtil.isNotEmpty(wordList)) {
             for (String s : wordList) {
-                if (StringUtil.isBlank(redisMap.get(s))) {
+                String value = redisUtil.getWithString(type + s);
+                if (StringUtil.isBlank(value)) {
                     StandConvertCrfVO standConvertCrfVO = new StandConvertCrfVO();
                     standConvertCrfVO.setWord_type(type);
                     standConvertCrfVO.setWord(s);
@@ -865,60 +861,40 @@ public class NeoFacade {
      * @param crfDTO
      * @param type
      * @param convertList
-     * @param orginList
      * @param map
      */
     public void getConvertMap(Map<String, Map<String, StandConvertCrfDTO>> crfDTO, String type, List<String> convertList,
-                              List<String> orginList, Map<String, Map<String, String>> map) {
-        if (ListUtil.isEmpty(orginList)) {
+                              Map<String, Map<String, String>> map) {
+        if (ListUtil.isEmpty(convertList)) {
             return ;
         }
         Map<String, StandConvertCrfDTO> crfMap = crfDTO.get(type);
         Map<String, String> typeMap = new LinkedHashMap<>();
-        Boolean updateRedis = false;
 
-        // 从redis获取对应的内容
-        Map<String, String> redisMap = redisUtil.getValueByType(type);
-        if (redisMap == null) {
-            redisMap = new LinkedHashMap<>();
-        }
-        for (String s : orginList) {
-            if (redisMap.containsKey(s)) {
-                typeMap.put(s, redisMap.get(s));
-            } else if (crfMap != null) {
+        for (String s : convertList) {
+            String lastS = s;
+            if (crfMap != null) {
                 StandConvertCrfDTO standConvertCrfDTO = crfMap.get(s);
                 if (standConvertCrfDTO != null) {
-                    List<Map<String,String>> list = standConvertCrfDTO.getStandard_words();
+                    List<Map<String, String>> list = standConvertCrfDTO.getStandard_words();
                     if (ListUtil.isEmpty(list)) {
-                        redisMap.put(s, s);
-                        typeMap.put(s, s);
+                        redisUtil.updateValue(type + "Conv:" + s, s);
                     } else {
                         String rateStr = standConvertCrfDTO.getStandard_words().get(0).get("rate");
                         BigDecimal rate = new BigDecimal(rateStr);
                         int flag = rate.compareTo(new BigDecimal(standConvertRate));
                         if (flag < 0) {
-                            redisMap.put(s, s); // rate 小于阈值
-                            typeMap.put(s, s);
+                            redisUtil.updateValue(type + "Conv:" + s, s);
                         } else {
-                            redisMap.put(s, standConvertCrfDTO.getStandard_words().get(0).get("standard_word"));
-                            typeMap.put(s, standConvertCrfDTO.getStandard_words().get(0).get("standard_word"));
+                            redisUtil.updateValue(type + "Conv:" + s, standConvertCrfDTO.getStandard_words().get(0).get("standard_word"));
+                            lastS = standConvertCrfDTO.getStandard_words().get(0).get("standard_word");
                         }
                     }
                 } else {
-                    redisMap.put(s, s); // 找不到就认为是标准词
-                    typeMap.put(s, s); // 找不到就认为是标准词
+                    redisUtil.updateValue(type + "Conv:" + s, s);
                 }
-                updateRedis = true;
-            } else {
-                redisMap.put(s, s); // 找不到就认为是标准词
-                typeMap.put(s, s); // 找不到就认为是标准词
-                updateRedis = true;
             }
-        }
-
-        // 更新redis
-        if (updateRedis) {
-            redisUtil.updateValueByType(redisMap, type);
+            typeMap.put(s, lastS);
         }
         map.put(type, typeMap);
     }

+ 21 - 2
src/main/java/com/diagbot/util/RedisUtil.java

@@ -43,7 +43,7 @@ public class RedisUtil {
      * @param map
      * @param type
      */
-    public void updateValueByType(Map<String, String> map, String type) {
+    public void updateValue(Map<String, String> map, String type) {
         redisTemplate.opsForValue().set(type, map);
     }
 
@@ -53,10 +53,20 @@ public class RedisUtil {
      * @param key
      * @param list
      */
-    public void updateValueByType(String key, List<String> list) {
+    public void updateValue(String key, List<String> list) {
         redisTemplate.opsForValue().set(key, list);
     }
 
+    /**
+     * 更新指定的数据
+     *
+     * @param key
+     * @param str
+     */
+    public void updateValue(String key, String str) {
+        redisTemplate.opsForValue().set(key, str);
+    }
+
     /**
      * 根据前缀删除key
      *
@@ -79,6 +89,15 @@ public class RedisUtil {
         return redisTemplate.opsForValue().get(key);
     }
 
+    /**
+     * 根据指定key获取value
+     *
+     * @param key 键
+     */
+    public String getWithString(String key) {
+        return (String)redisTemplate.opsForValue().get(key);
+    }
+
     /**
      * 删除key
      *