Browse Source

Merge remote-tracking branch 'origin/master'

MarkHuang 4 years ago
parent
commit
9a478d1dbc

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

@@ -38,6 +38,9 @@ public class CacheDeleteInit implements CommandLineRunner {
         cacheFacade.loadDiseaseTypeCache();
         log.info("CDSS-CORE服务启动加载疾病属性(性别、年龄、发病率)缓存成功!");
 
+        cacheFacade.getSymptomNumCache();
+        log.info("CDSS-CORE服务启动加载疾病对应的症状个数缓存成功!");
+
         /*neoFacade.getDisSexCache();
         log.info("CDSS-CORE服务启动加载图谱疾病对应性别信息缓存成功!");
 

+ 18 - 0
src/main/java/com/diagbot/entity/SymptomNumOfDiS.java

@@ -0,0 +1,18 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.data.neo4j.annotation.QueryResult;
+
+/**
+ * @author kwz
+ * @date 2020/10/15
+ * @time 14:23
+ */
+@Getter
+@Setter
+@QueryResult
+public class SymptomNumOfDiS {
+    private String disease;
+    private Integer num;
+}

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

@@ -13,6 +13,7 @@ public enum RedisEnum implements KeyedNamed {
 
     drugType(1, "drugType:"),
     symptomVitalType(3, "symptomVitalType:"),
+    symptomNumType(4, "symptomNumType:"),
     diseaseType(2, "diseaseType:");
 
     @Setter

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

@@ -88,6 +88,17 @@ public class CacheFacade {
 
     }
 
+    /**
+     * 加载图谱中的疾病对应的症状个数
+     *
+     * @return
+     */
+    public void getSymptomNumCache() {
+        redisUtil.deleteByPrex(RedisEnum.symptomNumType.getName());
+        neoFacade.symptomNumCache();
+
+    }
+
     public void clearLoadCache(String str) {
         redisUtil.deleteByPrex(str);
     }

+ 17 - 2
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -8,6 +8,7 @@ import com.diagbot.client.StandConvertServiceClient;
 import com.diagbot.dto.*;
 import com.diagbot.entity.DiseaseInfo;
 import com.diagbot.entity.DiseaseProperty;
+import com.diagbot.entity.SymptomNumOfDiS;
 import com.diagbot.entity.node.LisRemind;
 import com.diagbot.entity.relationship.LisRemindGroup;
 import com.diagbot.entity.relationship.LisRemindMedicine;
@@ -175,6 +176,18 @@ public class NeoFacade {
         }
     }
 
+    public void symptomNumCache() {
+        List<SymptomNumOfDiS> diseaseProperty = nodeRepository.getSymptomNum();
+        if (ListUtil.isNotEmpty(diseaseProperty)) {
+            Map map = diseaseProperty.stream().collect(Collectors.toMap(
+                    k -> RedisEnum.symptomNumType.getName() + k.getDisease(),
+                    v -> v.getNum(),
+                    (v1, v2) -> (v2)
+            ));
+            redisTemplate.opsForValue().multiSet(map);
+        }
+    }
+
     /**
      * 返回图谱中所有症状缓存信息
      *
@@ -362,9 +375,11 @@ public class NeoFacade {
     public List<String> addDiagFromPresent(List<String> lis_dis, List<String> presentDiags) {
         List<String> lis_dis_new = Lists.newArrayList();
         if (ListUtil.isNotEmpty(lis_dis) && ListUtil.isNotEmpty(presentDiags)) {
-            if (lis_dis.size() >= 10) {
+//            if (lis_dis.size() >= 10) {
+            if (lis_dis.size() >= 1) {
                 for (int i = 0; i < lis_dis.size(); i++) {
-                    if (i == 10 - presentDiags.size()) {
+//                    if (i == 10 - presentDiags.size()) {
+                    if (i == 1) {
                         for (String dis : presentDiags) {
                             if (!lis_dis_new.contains(dis)) {
                                 lis_dis_new.add(dis);

+ 4 - 0
src/main/java/com/diagbot/repository/BaseNodeRepository.java

@@ -3,6 +3,7 @@ package com.diagbot.repository;
 
 import com.diagbot.entity.DiseaseInfo;
 import com.diagbot.entity.DiseaseProperty;
+import com.diagbot.entity.SymptomNumOfDiS;
 import com.diagbot.entity.node.*;
 import com.diagbot.entity.node.base.BaseNode;
 import org.springframework.data.neo4j.annotation.Query;
@@ -114,5 +115,8 @@ public interface BaseNodeRepository extends Neo4jRepository<BaseNode, Long> {
     @Query("match(d:医保疾病名称{name:{dis}})-[r]->(j) return type(r) as tp,collect(distinct j.name) as col")
     List<DiseaseInfo> getDiseaseInfo(@Param("dis") String dis);
 
+    @Query("match(d:医保疾病名称)-[r:医保疾病名称相关症状]->(s:症状) return d.name as disease,count(s) as num")
+    List<SymptomNumOfDiS> getSymptomNum();
+
 
 }

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

@@ -36,6 +36,7 @@ public class CacheController {
         cacheFacade.loadDrugTypeCache();
         cacheFacade.loadDiseaseTypeCache();
         cacheFacade.getSymptomCache();
+        cacheFacade.getSymptomNumCache();
         return RespDTO.onSuc(true);
     }