Jelajahi Sumber

添加大数据医院推送类型

zhoutg 4 tahun lalu
induk
melakukan
9226b7b27e

+ 3 - 0
src/main/java/com/diagbot/config/CacheDeleteInit.java

@@ -44,6 +44,9 @@ public class CacheDeleteInit implements CommandLineRunner {
         cacheFacade.loadAllBaseDiagnoseCache();
         log.info("CDSS-CORE服务启动加载诊断依据缓存成功!");
 
+        cacheFacade.loadHostipalPushType();
+        log.info("CDSS-CORE服务启动加载医院大数据推送类型成功!");
+
 //        cacheFacade.getDiseaseCorrespondCache();
 //        log.info("CDSS-CORE服务启动加载疾病对应ICD10缓存成功!");
 //

+ 2 - 1
src/main/java/com/diagbot/enums/RedisEnum.java

@@ -21,7 +21,8 @@ public enum RedisEnum implements KeyedNamed {
     diseaseFilter(9, "diseaseFilter:"),
     diseaseType(2, "diseaseType:"),
     allRule(10, "allRule:"),
-    allBaseDiagnose(11, "allBaseDiagnose");
+    allBaseDiagnose(11, "allBaseDiagnose"),
+    hospitalPushType(12, "hospitalPushType");
 
     @Setter
     private int key;

+ 20 - 0
src/main/java/com/diagbot/facade/CacheFacade.java

@@ -1,12 +1,18 @@
 package com.diagbot.facade;
 
+import com.diagbot.dto.DictionaryInfoDTO;
 import com.diagbot.enums.RedisEnum;
 import com.diagbot.enums.StandConvertEnum;
+import com.diagbot.util.ListUtil;
 import com.diagbot.util.RedisUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
  * @Description:
  * @Author:zhoutg
@@ -21,6 +27,8 @@ public class CacheFacade {
     NeoFacade neoFacade;
     @Autowired
     private KlDiagnoseBaseFacade klDiagnoseBaseFacade;
+    @Autowired
+    KlDictionaryInfoFacade klDictionaryInfoFacade;
 
     /**
      * 清除缓存信息
@@ -112,4 +120,16 @@ public class CacheFacade {
     public void clearLoadCache(String str) {
         redisUtil.deleteByPrex(str);
     }
+
+    /**
+     * 加载医院大数据推送类型
+     */
+    public void loadHostipalPushType() {
+        redisUtil.delete(RedisEnum.hospitalPushType.getName());
+        List<DictionaryInfoDTO> listByGroupType = klDictionaryInfoFacade.getListByGroupType(100);
+        if (ListUtil.isNotEmpty(listByGroupType)) {
+            Map<String, Object> map = listByGroupType.stream().collect(Collectors.toMap(k -> k.getName(), v -> v.getVal(), (v1, v2) -> (v2)));
+            redisUtil.putHashMap(RedisEnum.hospitalPushType.getName(), map);
+        }
+    }
 }

+ 9 - 1
src/main/java/com/diagbot/facade/PushFacade.java

@@ -6,11 +6,14 @@ import com.diagbot.dto.PushNewDTO;
 import com.diagbot.dto.PushPlanDTO;
 import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.enums.DiseasePushTypeEnum;
+import com.diagbot.enums.RedisEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.process.PushProcess;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ParamUtil;
+import com.diagbot.util.RedisUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.PushNewVO;
 import com.diagbot.vo.PushPlanVO;
 import com.diagbot.vo.PushVO;
@@ -43,6 +46,8 @@ public class PushFacade {
     TranHospitalInfoFacade tranHospitalInfoFacade;
     @Autowired
     PushNewServiceClient pushNewServiceClient;
+    @Autowired
+    RedisUtil redisUtil;
 
     public PushDTO processAggreate(PushVO pushVo) {
         // 年龄容错处理
@@ -130,12 +135,15 @@ public class PushFacade {
      * @return
      */
     public PushNewVO generatePushVo(WordCrfDTO wordCrfDTO) {
-        // TODO 获取医院类型
         PushNewVO pushNewVO = new PushNewVO();
         pushNewVO.setChief(wordCrfDTO.getChief());
         pushNewVO.setPresent(wordCrfDTO.getSymptom());
         pushNewVO.setAge(wordCrfDTO.getAgeNum());
         pushNewVO.setSex(wordCrfDTO.getSex());
+        String pushType = redisUtil.getByKeyAndField(RedisEnum.hospitalPushType.getName(), String.valueOf(wordCrfDTO.getHospitalId()));
+        if (StringUtil.isNotBlank(pushType)) {
+            pushNewVO.setHospitalType(pushType);
+        }
         return pushNewVO;
     }
 

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

@@ -296,4 +296,25 @@ public class RedisUtil {
     public boolean setIfAbsent(String key, String value) {
         return redisTemplate.opsForValue().setIfAbsent(key, value);
     }
+
+    /**
+     * map集合的形式添加键值对
+     *
+     * @param key
+     * @param map
+     */
+    public void putHashMap(String key, Map<String, Object> map) {
+        redisTemplate.opsForHash().putAll(key, map);
+    }
+
+    /**
+     * 获取集合中指定field的内容
+     * @param key
+     * @param field
+     * @param <T>
+     * @return
+     */
+    public <T> T getByKeyAndField(String key, String field) {
+        return (T)redisTemplate.opsForHash().get(key, field);
+    }
 }

+ 9 - 0
src/main/java/com/diagbot/web/CacheController.java

@@ -95,4 +95,13 @@ public class CacheController {
         cacheFacade.loadAllBaseDiagnoseCache();
         return RespDTO.onSuc(true);
     }
+
+    @ApiOperation(value = "加载医院大数据推送类型[by:zhoutg]",
+            notes = "")
+    @PostMapping("/loadHostipalPushType")
+    @SysLogger("loadHostipalPushType")
+    public RespDTO<Boolean> loadHostipalPushType() {
+        cacheFacade.loadHostipalPushType();
+        return RespDTO.onSuc(true);
+    }
 }