Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/diagbot/repository/MedicineNode.java
#	src/main/java/com/diagbot/repository/MedicineRepository.java
#	src/main/java/com/diagbot/util/NeoUtil.java
MarkHuang 4 years ago
parent
commit
a80df956ff
28 changed files with 256 additions and 196 deletions
  1. 3 4
      src/main/java/com/diagbot/config/CacheDeleteInit.java
  2. 2 0
      src/main/java/com/diagbot/entity/node/YiBaoDiseaseName.java
  3. 1 1
      src/main/java/com/diagbot/enums/RedisEnum.java
  4. 8 8
      src/main/java/com/diagbot/enums/StandConvertEnum.java
  5. 27 10
      src/main/java/com/diagbot/facade/CacheFacade.java
  6. 74 65
      src/main/java/com/diagbot/facade/NeoFacade.java
  7. 10 15
      src/main/java/com/diagbot/facade/RetrievalFacade.java
  8. 5 2
      src/main/java/com/diagbot/facade/TestFacade.java
  9. 4 11
      src/main/java/com/diagbot/repository/DeptNode.java
  10. 3 2
      src/main/java/com/diagbot/repository/DeptRepository.java
  11. 4 7
      src/main/java/com/diagbot/repository/LisNameNode.java
  12. 6 3
      src/main/java/com/diagbot/repository/LisNameRepository.java
  13. 4 7
      src/main/java/com/diagbot/repository/LisSetNode.java
  14. 8 1
      src/main/java/com/diagbot/repository/LisSetRepository.java
  15. 4 6
      src/main/java/com/diagbot/repository/MedicineNode.java
  16. 7 1
      src/main/java/com/diagbot/repository/MedicineRepository.java
  17. 4 6
      src/main/java/com/diagbot/repository/PacsNameNode.java
  18. 10 1
      src/main/java/com/diagbot/repository/PacsNameRepository.java
  19. 2 0
      src/main/java/com/diagbot/repository/SymptomNameRepository.java
  20. 3 12
      src/main/java/com/diagbot/repository/YiBaoDiseaseNode.java
  21. 5 3
      src/main/java/com/diagbot/repository/YiBaoDiseaseRepository.java
  22. 4 5
      src/main/java/com/diagbot/repository/YiBaoOperationNameNode.java
  23. 9 1
      src/main/java/com/diagbot/repository/YiBaoOperationNameRepository.java
  24. 16 21
      src/main/java/com/diagbot/util/NeoUtil.java
  25. 21 2
      src/main/java/com/diagbot/util/RedisUtil.java
  26. 9 1
      src/main/java/com/diagbot/vo/StaticKnowledgeIndexVO.java
  27. 1 1
      src/main/java/com/diagbot/web/CacheController.java
  28. 2 0
      src/main/resources/logback-spring.xml

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

@@ -27,11 +27,10 @@ public class CacheDeleteInit implements CommandLineRunner {
     public void run(String... args) throws Exception {
         // 服务启动清除redis缓存
         cacheFacade.clear();
-        cacheFacade.clearLoadCache();
         log.info("CDSS-CORE服务启动清除redis缓存成功!");
-        //
-        neoFacade.getDrugCache();
-        log.info("CDSS-CORE服务启动加载药品缓存成功!");
+
+        cacheFacade.loadDrugTypeCache();
+        log.info("CDSS-CORE服务启动加载药品类型对应关系缓存成功!");
 
         neoFacade.getSymptomCache();
         log.info("CDSS-CORE服务启动加载图谱症状缓存成功!");

+ 2 - 0
src/main/java/com/diagbot/entity/node/YiBaoDiseaseName.java

@@ -17,6 +17,8 @@ public class YiBaoDiseaseName extends BaseNode  {
 
 	@Property(name = "性别")
 	private String gender;
+	@Property(name = "年龄")
+	private String age;
 
 	@Relationship(type = "医保疾病名称相关医保ICD-10代码", direction = Relationship.OUTGOING)
 	private Set<YiBaoICD_10Code> yibaoicd_10codes = new HashSet<>();

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

@@ -11,7 +11,7 @@ import lombok.Setter;
 
 public enum RedisEnum implements KeyedNamed {
 
-    drugType(1, "药品分类_");
+    drugType(1, "drugType:");
 
     @Setter
     private int key;

+ 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;

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

@@ -17,6 +17,8 @@ public class CacheFacade {
 
     @Autowired
     RedisUtil redisUtil;
+    @Autowired
+    NeoFacade neoFacade;
 
     /**
      * 清除缓存信息
@@ -34,22 +36,37 @@ 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());
     }
 
     /**
-     * 清除启动加载类缓存
+     * 加载药品缓存
      *
      * @return
      */
-    public void clearLoadCache() {
+    public void loadDrugTypeCache() {
         redisUtil.deleteByPrex(RedisEnum.drugType.getName());
+        // redisUtil.deleteByPrex("药品分类_");
+        // redisUtil.delete("lis");
+        // redisUtil.delete("pacs");
+        // redisUtil.delete("disease");
+        // redisUtil.delete("drug");
+        // redisUtil.delete("symptom");
+        // redisUtil.delete("operation");
+        // redisUtil.delete("vital");
+        // redisUtil.delete("transfusion");
+        neoFacade.getDrugCache();
+
+    }
+
+    public void clearLoadCache(String str) {
+        redisUtil.deleteByPrex(str);
     }
 }

+ 74 - 65
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -1,23 +1,40 @@
 package com.diagbot.facade;
 
 import com.alibaba.fastjson.JSONArray;
-import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.client.StandConvertServiceClient;
-import com.diagbot.dto.*;
+import com.diagbot.dto.BillNeoDTO;
+import com.diagbot.dto.CriticalNeoDTO;
+import com.diagbot.dto.HighRiskNeoDTO;
+import com.diagbot.dto.NeoPushDTO;
+import com.diagbot.dto.NodeNeoDTO;
+import com.diagbot.dto.OtherTipNeoDTO;
+import com.diagbot.dto.OtherTipPacsNeoDTO;
+import com.diagbot.dto.OtherTipTransfusionNeoDTO;
+import com.diagbot.dto.PushBaseDTO;
+import com.diagbot.dto.StandConvertCrfBatchDTO;
+import com.diagbot.dto.StandConvertCrfDTO;
+import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.entity.node.LisRemind;
 import com.diagbot.entity.node.Medicine;
 import com.diagbot.entity.node.Symptom;
 import com.diagbot.entity.node.YiBaoDiseaseName;
+import com.diagbot.enums.RedisEnum;
 import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.repository.*;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.NeoUtil;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.StringUtil;
-import com.diagbot.vo.*;
+import com.diagbot.vo.BillNeoVO;
+import com.diagbot.vo.CriticalNeoVO;
+import com.diagbot.vo.Drug;
+import com.diagbot.vo.NeoPushVO;
+import com.diagbot.vo.StandConvert;
+import com.diagbot.vo.StandConvertCrfVO;
 import com.diagbot.vo.neoPushEntity.ChiefPushVo;
 import com.diagbot.vo.neoPushEntity.Diag;
 import com.diagbot.vo.neoPushEntity.PresentPushVo;
@@ -33,7 +50,14 @@ import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -128,7 +152,7 @@ public class NeoFacade {
 
         // 加载药品缓存
         for (String key : res.keySet()) {
-            redisUtil.updateValueByType("药品分类_" + key, res.get(key));
+            redisUtil.updateValue(RedisEnum.drugType.getName() + key, res.get(key));
         }
         return res;
     }
@@ -246,7 +270,7 @@ public class NeoFacade {
         }
         symptoms = Stream.of(symptom_chief,symptom_present).flatMap(Collection::stream).distinct().collect(Collectors.toList());
         //症状推疾病
-        List<String> allDis_bySymptom = getDisBySymptom(symptoms);
+        List<String> allDis_bySymptom = getDisBySymptom(symptoms,age,sex);
         allDis.addAll(allDis_bySymptom);
         //体征推出的疾病
         //化验推出的疾病辅检
@@ -310,12 +334,12 @@ public class NeoFacade {
         return neoPushDTOS;
     }
 
-    public List<String> getDisBySymptom(List<String> symptoms){
+    public List<String> getDisBySymptom(List<String> symptoms,Integer age,Integer sex){
         List<String> symptomCache = getSymptomCache();
         //取交集
         symptoms.retainAll(symptomCache);
         long start = System.currentTimeMillis();
-        List<String> allDis_bySymptom = pushDis(symptomNameRepository, symptoms);
+        List<String> allDis_bySymptom = pushDis(symptomNameRepository, symptoms,age,sex);
         long end = System.currentTimeMillis();
         return allDis_bySymptom;
         }
@@ -328,9 +352,10 @@ public class NeoFacade {
      * @param symptoms
      * @return
      */
-    public List<String> pushDis(SymptomNameRepository symptomNameRepository,List<String> symptoms){
+    public List<String> pushDis(SymptomNameRepository symptomNameRepository,List<String> symptoms,Integer age,Integer sex){
         List<String> allDis = Lists.newArrayList();
-        if(ListUtil.isNotEmpty(symptoms)){
+
+        /*if(ListUtil.isNotEmpty(symptoms)){
             symptoms.parallelStream().forEach(x ->{
                 List<Symptom> byNameIs = symptomNameRepository.findByNameIs(x);
                 if(ListUtil.isNotEmpty(byNameIs)){
@@ -340,7 +365,15 @@ public class NeoFacade {
                     allDis.addAll(diseases);
                 }
             });
-        }
+        }*/
+        List<Symptom> byNameIn = symptomNameRepository.findByNameIn(symptoms);
+        /*List<YiBaoDiseaseName> collect = byNameIn.stream()
+                .map(x -> x.getDisease().stream().filter(z -> NeoUtil.matchBasic(z,sex,age)).collect(Collectors.toList()))
+                .flatMap(List::stream).collect(Collectors.toList());*/
+
+        allDis = byNameIn.stream()
+                .map(z -> z.getDisease().stream().filter(o -> NeoUtil.matchBasic(o,sex,age)).map(y -> y.getName()).collect(Collectors.toList())).flatMap(List::stream)
+                .collect(Collectors.toList());
         return allDis;
     }
 
@@ -771,14 +804,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 {
@@ -787,14 +820,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;
     }
@@ -812,14 +845,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 +  "Conv:" + s);
+                if (StringUtil.isBlank(value)) {
                     StandConvertCrfVO standConvertCrfVO = new StandConvertCrfVO();
                     standConvertCrfVO.setWord_type(type);
                     standConvertCrfVO.setWord(s);
@@ -839,60 +868,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);
     }

+ 10 - 15
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -31,7 +31,6 @@ import com.diagbot.repository.YiBaoOperationNameNode;
 import com.diagbot.repository.YiBaoOperationNameRepository;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
-import com.diagbot.util.StringUtil;
 import com.diagbot.vo.RetrievalVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
 import com.google.common.collect.Lists;
@@ -84,9 +83,6 @@ public class RetrievalFacade {
      */
     public RetrievalDTO index(RetrievalVO retrievalVO) {
         RetrievalDTO retrievalDTO = new RetrievalDTO();
-        if (StringUtil.isWord(retrievalVO.getInputStr())) {
-            retrievalVO.setInputStr(retrievalVO.getInputStr().trim().toUpperCase());
-        }
         switch (retrievalVO.getType()) {
             case 1:
                 retrievalDTO.setLisNames(getLisPacks(retrievalVO.getInputStr()));
@@ -221,13 +217,10 @@ public class RetrievalFacade {
     public List<StaticKnowledgeIndexDTO> staticKnowledgeIndex(StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
         List<StaticKnowledgeIndexDTO> retList = Lists.newLinkedList();
         String inputStr = staticKnowledgeIndexVO.getInputStr();
-        if (StringUtil.isWord(staticKnowledgeIndexVO.getInputStr())) {
-            inputStr = staticKnowledgeIndexVO.getInputStr().trim().toUpperCase();
-        }
         List<Integer> types = staticKnowledgeIndexVO.getTypes();
 
         //TODO 诊断
-        List<YiBaoDiseaseName> icdDiseaseList = icdDiseaseRepository.findByNameContainingOrPycodeContaining(inputStr, inputStr);
+        List<YiBaoDiseaseName> icdDiseaseList = icdDiseaseRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
         List<StaticKnowledgeIndexDTO> disRetList = Lists.newLinkedList();
         for (YiBaoDiseaseName icdDisease : icdDiseaseList) {
             StaticKnowledgeIndexDTO staticDTO = new StaticKnowledgeIndexDTO();
@@ -237,7 +230,7 @@ public class RetrievalFacade {
             disRetList.add(staticDTO);
         }
         //TODO 药品
-        List<Medicine> medicineList = medicineRepository.findByNameContainingOrPycodeContaining(inputStr, inputStr);
+        List<Medicine> medicineList = medicineRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> drugRetList = Lists.newLinkedList();
         for (Medicine medicine : medicineList) {
@@ -248,7 +241,7 @@ public class RetrievalFacade {
             drugRetList.add(staticDTO);
         }
         //TODO 检验套餐
-        List<LisSet> lisSetList = lisSetRepository.findByNameContainingOrPycodeContaining(inputStr, inputStr);
+        List<LisSet> lisSetList = lisSetRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> lisSetRetList = Lists.newLinkedList();
         for (LisSet lisSet : lisSetList) {
@@ -259,7 +252,7 @@ public class RetrievalFacade {
             lisSetRetList.add(staticDTO);
         }
         //TODO 检验明细关联出检验套餐
-        List<LisName> lisList = lisRepository.findByNameContainingOrPycodeContaining(inputStr, inputStr);
+        List<LisName> lisList = lisRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> lisSetRelatecLisRetList = Lists.newLinkedList();
         for (LisName lis : lisList) {
@@ -287,7 +280,7 @@ public class RetrievalFacade {
             }
         }
         //TODO 检验明细
-        lisList = lisRepository.findByNameContainingOrPycodeContaining(inputStr, inputStr);
+        //lisList = lisRepository.findByNameContainingOrPycodeContaining(inputStr, inputStr);
 
         List<StaticKnowledgeIndexDTO> lisRetList = Lists.newLinkedList();
         for (LisName lis : lisList) {
@@ -298,7 +291,7 @@ public class RetrievalFacade {
             lisRetList.add(staticDTO);
         }
         //TODO 检查
-        List<PacsName> pacsList = pacsRepository.findByNameContainingOrPycodeContaining(inputStr, inputStr);
+        List<PacsName> pacsList = pacsRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> pacsRetList = Lists.newLinkedList();
         for (PacsName pacs : pacsList) {
@@ -309,9 +302,8 @@ public class RetrievalFacade {
             pacsRetList.add(staticDTO);
         }
 
-
         //TODO 手术和操作
-        List<YiBaoOperationName> operationList = operationRepository.findByNameContainingOrPycodeContaining(inputStr, inputStr);
+        List<YiBaoOperationName> operationList = operationRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> operationRetList = Lists.newLinkedList();
 
@@ -354,6 +346,9 @@ public class RetrievalFacade {
                 retList.addAll(operationRetList);
             }
         }
+        if (ListUtil.isNotEmpty(retList) && retList.size() > 100) {
+            retList = retList.subList(0, 100);
+        }
         return retList;
     }
 }

+ 5 - 2
src/main/java/com/diagbot/facade/TestFacade.java

@@ -7,6 +7,7 @@ import com.diagbot.client.StandConvertServiceClient;
 import com.diagbot.dto.IndicationDTO;
 import com.diagbot.dto.StandConvertCrfBatchDTO;
 import com.diagbot.dto.StandConvertCrfDTO;
+import com.diagbot.enums.RedisEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.util.BeanUtil;
@@ -57,6 +58,8 @@ public class TestFacade {
     StandConvertServiceClient standConvertServiceClient;
     @Autowired
     RedisUtil redisUtil;
+    @Autowired
+    CacheFacade cacheFacade;
 
     /**
      * 开单项数据测试
@@ -182,7 +185,7 @@ public class TestFacade {
                             pastStr.append("有“").append(bean.getNeoName()).append("”过敏。");
                             indicationPushVO.setPasts(pastStr.toString());
                         } else if ("药品类别".equals(bean.getDrugType())) {
-                            List<String> drugList = (List<String>)redisUtil.get("药品分类_" + bean.getNeoName());
+                            List<String> drugList = (List<String>)redisUtil.get(RedisEnum.drugType.getName() + bean.getNeoName());
                             if (ListUtil.isNotEmpty(drugList)) {
                                 if (testLineVO.isGetOne()) {
                                     pastStr.append("有“").append(drugList.get(getRandomNum(drugList.size()))).append("”过敏。");
@@ -1005,10 +1008,10 @@ public class TestFacade {
                 }
             }
             map.put("总条数", indicationPushVOList.size() + "条");
+            map.put("出错条数", errMsg.size() + "条");
             if (ListUtil.isNotEmpty(errMsg)) {
                 map.put("出错信息", errMsg);
             }
-            map.put("出错条数", errMsg.size() + "条");
             Long t2 = System.currentTimeMillis();
             map.put("执行时间", (t2 - start) / 1000.0 + "秒");
         } catch (Exception e) {

+ 4 - 11
src/main/java/com/diagbot/repository/DeptNode.java

@@ -1,7 +1,8 @@
 package com.diagbot.repository;
 
 import com.diagbot.entity.node.Dept;
-import com.diagbot.util.ListUtil;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -12,20 +13,12 @@ public class DeptNode {
      * 获取科室名称列表
      */
     public List<String> getDeptNameList(String name, DeptRepository deptRepository, BaseNodeRepository baseNodeRepository) {
-
         List<String> deptlt = new ArrayList<>();
-
-        List<Dept> deptlist = deptRepository.findByNameContaining(name);
-        deptlist.addAll(baseNodeRepository.getDeptbyPinYin(name));
-
-        if (ListUtil.isNotEmpty(deptlist) && deptlist.size() > 100) {
-            deptlist = deptlist.subList(0, 100);
-        }
-
+        Page<Dept> deptPage = deptRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
+        List<Dept> deptlist = deptPage.getContent();
         for (Dept dept : deptlist) {
             deptlt.add(dept.getName());
         }
-
         return deptlt;
     }
 }

+ 3 - 2
src/main/java/com/diagbot/repository/DeptRepository.java

@@ -1,6 +1,8 @@
 package com.diagbot.repository;
 
 import com.diagbot.entity.node.Dept;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
 
 import java.util.List;
@@ -12,6 +14,5 @@ public interface DeptRepository extends Neo4jRepository<Dept, Long> {
 
     List<Dept> findByNameIs(String name);
 
-    List<Dept> findByNameContainingOrPycodeContaining(String name, String pycode);
+    Page<Dept> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
 }
-

+ 4 - 7
src/main/java/com/diagbot/repository/LisNameNode.java

@@ -12,10 +12,11 @@ import com.diagbot.entity.node.Group;
 import com.diagbot.entity.node.LisCritical;
 import com.diagbot.entity.node.LisName;
 import com.diagbot.entity.node.LisSet;
-import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.CriticalNeoVO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -180,12 +181,8 @@ public class LisNameNode {
 		List<LisDetailDTO> lislist = new ArrayList<>();
 		LisDetailDTO lisDetailDTO;
 
-		List<LisName> lislt = lisRepository.findByNameContainingOrPycodeContaining(name,name);
-		//lislt.addAll(baseNodeRepository.getLisbyPinYin(name));
-
-		if (ListUtil.isNotEmpty(lislt) && lislt.size() > 100) {
-			lislt = lislt.subList(0, 100);
-		}
+		Page<LisName> lisPage = lisRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
+		List<LisName> lislt = lisPage.getContent();
 
 		for (LisName lis : lislt) {
 			lisDetailDTO = new LisDetailDTO();

+ 6 - 3
src/main/java/com/diagbot/repository/LisNameRepository.java

@@ -1,6 +1,8 @@
 package com.diagbot.repository;
 
 import com.diagbot.entity.node.LisName;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.neo4j.annotation.Query;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
 import org.springframework.data.repository.query.Param;
@@ -16,9 +18,10 @@ public interface LisNameRepository extends Neo4jRepository<LisName, Long> {
 
     List<LisName> findByNameIn(List<String> names);
 
-    List<LisName> findByNameContainingOrPycodeContaining(String name, String pycode);
+    Page<LisName> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
+
+    @Query("MATCH (n:`实验室检查名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  RETURN n, collect(r), collect(m) limit $size")
+    List<LisName> findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
 
-    @Query("MATCH (n:实验室检查名称)-[r]->(b) where n.name contains {name} or (EXISTS(n.拼音编码) AND n.拼音编码 CONTAINS {name}) return n.name, n.拼音编码,collect(r), collect(b) limit 100")
-    List<LisName> findByNameOrPycodeContaininglimit100(@Param("name") String name);
 }
 

+ 4 - 7
src/main/java/com/diagbot/repository/LisSetNode.java

@@ -5,8 +5,9 @@ import com.diagbot.dto.LisBillNeoDTO;
 import com.diagbot.dto.NeoEntityDTO;
 import com.diagbot.entity.node.Gender;
 import com.diagbot.entity.node.LisSet;
-import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -148,12 +149,8 @@ public class LisSetNode {
 
 		List<String> lispacklist = new ArrayList<>();
 
-		List<LisSet> lisSetlist = lisPackRepository.findByNameContainingOrPycodeContaining(name, name);
-		//lisSetlist.addAll(baseNodeRepository.getLisSetbyPinYin(name));
-
-		if (ListUtil.isNotEmpty(lisSetlist) && lisSetlist.size() > 100) {
-			lisSetlist = lisSetlist.subList(0, 100);
-		}
+		Page<LisSet> lisPackPage = lisPackRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
+		List<LisSet> lisSetlist = lisPackPage.getContent();
 
 		for (LisSet lisSet : lisSetlist) {
 			nodename = lisSet.getName();

+ 8 - 1
src/main/java/com/diagbot/repository/LisSetRepository.java

@@ -1,7 +1,11 @@
 package com.diagbot.repository;
 
 import com.diagbot.entity.node.LisSet;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.neo4j.annotation.Query;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
+import org.springframework.data.repository.query.Param;
 
 import java.util.List;
 
@@ -14,6 +18,9 @@ public interface LisSetRepository extends Neo4jRepository<LisSet, Long> {
 
     List<LisSet> findByNameIn(List<String> names);
 
-    List<LisSet> findByNameContainingOrPycodeContaining(String name, String pycode);
+    Page<LisSet> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
+
+    @Query("MATCH (n:`实验室检查套餐名`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  RETURN n, collect(r), collect(m) limit $size")
+    List<LisSet> findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
 }
 

+ 4 - 6
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -7,6 +7,8 @@ import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.entity.node.*;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -134,12 +136,8 @@ public class MedicineNode {
         List<DrugInfoDTO> medslist = new ArrayList<>();
         DrugInfoDTO drugInfoDTO;
 
-        List<Medicine> medicines = medicineRepository.findByNameContainingOrPycodeContaining(name, name);
-        //medicines.addAll(baseNodeRepository.getMedicinebyPinYin(name));
-
-        if (ListUtil.isNotEmpty(medicines) && medicines.size() > 100) {
-            medicines = medicines.subList(0, 100);
-        }
+        Page<Medicine> medicinePage = medicineRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
+        List<Medicine> medicines = medicinePage.getContent();
 
         for (Medicine med : medicines) {
             drugInfoDTO = new DrugInfoDTO();

+ 7 - 1
src/main/java/com/diagbot/repository/MedicineRepository.java

@@ -1,8 +1,9 @@
 package com.diagbot.repository;
 
-import com.diagbot.entity.node.MedRegName;
 import com.diagbot.entity.node.Medicine;
 import org.springframework.data.neo4j.annotation.Query;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
 import org.springframework.data.repository.query.Param;
 
@@ -21,5 +22,10 @@ public interface MedicineRepository extends Neo4jRepository<Medicine, Long> {
 
     @Query("match (n:药品通用名称)<-[r1:药品相关药品通用名称]-(m:药品代码通用名)-[r2:药品相关药品注册名称]->(o:药品注册名称) where n.name={name} return distinct o.name")
     List<String> findMedRegNamebyMedicine(@Param("name") String name);
+    Page<Medicine> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
+
+    @Query("MATCH (n:`药品通用名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  RETURN n, collect(r), collect(m) limit $size")
+    List<Medicine> findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
 }
 

+ 4 - 6
src/main/java/com/diagbot/repository/PacsNameNode.java

@@ -14,8 +14,9 @@ import com.diagbot.entity.node.OralMedicine;
 import com.diagbot.entity.node.PacsDescribe;
 import com.diagbot.entity.node.PacsName;
 import com.diagbot.entity.node.Vital;
-import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -188,12 +189,9 @@ public class PacsNameNode {
 
         List<String> pacslist = new ArrayList<>();
 
-        List<PacsName> pacslt = pacsRepository.findByNameContainingOrPycodeContaining(name, name);
-        //pacslt.addAll(baseNodeRepository.getPacsbyPinYin(name));
+        Page<PacsName> pacsPage = pacsRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
 
-        if (ListUtil.isNotEmpty(pacslt) && pacslt.size() > 100) {
-            pacslt = pacslt.subList(0, 100);
-        }
+        List<PacsName> pacslt = pacsPage.getContent();
 
         for (PacsName pacs : pacslt) {
             pacsname = pacs.getName();

+ 10 - 1
src/main/java/com/diagbot/repository/PacsNameRepository.java

@@ -1,7 +1,11 @@
 package com.diagbot.repository;
 
 import com.diagbot.entity.node.PacsName;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.neo4j.annotation.Query;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
+import org.springframework.data.repository.query.Param;
 
 import java.util.List;
 
@@ -14,6 +18,11 @@ public interface PacsNameRepository extends Neo4jRepository<PacsName, Long> {
 
     List<PacsName> findByNameIn(List<String> names);
 
-    List<PacsName> findByNameContainingOrPycodeContaining(String name, String pycode);
+    Page<PacsName> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
+
+    @Query("MATCH (n:`辅助检查名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  RETURN n, collect(r), collect(m) limit $size")
+    List<PacsName> findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+
 }
 

+ 2 - 0
src/main/java/com/diagbot/repository/SymptomNameRepository.java

@@ -10,6 +10,8 @@ public interface SymptomNameRepository extends Neo4jRepository<Symptom, Long> {
 
     List<Symptom> findByNameIs(String name);
 
+    List<Symptom> findByNameIn(List<String> names);
+
     List<Symptom> findByNameContaining(String name);
 }
 

+ 3 - 12
src/main/java/com/diagbot/repository/YiBaoDiseaseNode.java

@@ -8,11 +8,9 @@ import com.diagbot.entity.node.GuoLinICD_10Code;
 import com.diagbot.entity.node.PathwayName;
 import com.diagbot.entity.node.YiBaoDiseaseName;
 import com.diagbot.entity.node.YiBaoICD_10Code;
-import com.diagbot.util.ListUtil;
 import com.diagbot.vo.NeoPushVO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -255,16 +253,9 @@ public class YiBaoDiseaseNode {
 		List<String> dislist = new ArrayList<>();
 		List<DiseaseInfoDTO> diseaseInfoDTOList = new ArrayList<>();
 
-//		List<YiBaoDiseaseName> diseases = diseaseRepository.findByNameContainingOrPycodeContaining(name, name);
-//		//diseases.addAll(baseNodeRepository.getYiBaoDiseasebyPinYin(name));
-//
-//		if (ListUtil.isNotEmpty(diseases) && diseases.size() > 100) {
-//			diseases = diseases.subList(0, 100);
-//		}
-
-        Pageable pageable = PageRequest.of(0, 10);
-        Page<YiBaoDiseaseName> diseasesPage = diseaseRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, pageable);
-        List<YiBaoDiseaseName> diseases = diseasesPage.getContent();
+		Page<YiBaoDiseaseName> diseasesPage
+				= diseaseRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
+		List<YiBaoDiseaseName> diseases = diseasesPage.getContent();
 
 		for (YiBaoDiseaseName dis : diseases) {
 			icdname = dis.getName();

+ 5 - 3
src/main/java/com/diagbot/repository/YiBaoDiseaseRepository.java

@@ -3,7 +3,9 @@ package com.diagbot.repository;
 import com.diagbot.entity.node.YiBaoDiseaseName;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
+import org.springframework.data.neo4j.annotation.Query;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
+import org.springframework.data.repository.query.Param;
 
 import java.util.List;
 
@@ -16,10 +18,10 @@ public interface YiBaoDiseaseRepository extends Neo4jRepository<YiBaoDiseaseName
 
     List<YiBaoDiseaseName> findByNameIn(List<String> names);
 
-    List<YiBaoDiseaseName> findByNameContainingOrPycodeContaining(String name, String pycode);
-
     Page<YiBaoDiseaseName> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
 
-    List<YiBaoDiseaseName> findTop100ByNameContainingOrPycodeContaining(String name, String pycode);
+    @Query("MATCH (n:`医保疾病名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  RETURN n, collect(r), collect(m) limit $size")
+    List<YiBaoDiseaseName> findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
 }
 

+ 4 - 5
src/main/java/com/diagbot/repository/YiBaoOperationNameNode.java

@@ -27,6 +27,8 @@ import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
 import com.diagbot.util.StringUtil;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -174,12 +176,9 @@ public class YiBaoOperationNameNode {
         List<OperationInfoDTO> opslist = new ArrayList<>();
         OperationInfoDTO opInfoDTO;
 
-        List<YiBaoOperationName> operations = operationRepository.findByNameContainingOrPycodeContaining(name, name);
-        //operations.addAll(baseNodeRepository.getYiBaoOperationbyPinYin(name));
+        Page<YiBaoOperationName> operationPage = operationRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
 
-        if (ListUtil.isNotEmpty(operations) && operations.size() > 100) {
-            operations = operations.subList(0, 100);
-        }
+        List<YiBaoOperationName> operations = operationPage.getContent();
 
         for (YiBaoOperationName op : operations) {
             opInfoDTO = new OperationInfoDTO();

+ 9 - 1
src/main/java/com/diagbot/repository/YiBaoOperationNameRepository.java

@@ -1,7 +1,11 @@
 package com.diagbot.repository;
 
 import com.diagbot.entity.node.YiBaoOperationName;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.neo4j.annotation.Query;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
+import org.springframework.data.repository.query.Param;
 
 import java.util.List;
 
@@ -14,5 +18,9 @@ public interface YiBaoOperationNameRepository extends Neo4jRepository<YiBaoOpera
 
     List<YiBaoOperationName> findByNameIn(List<String> names);
 
-    List<YiBaoOperationName> findByNameContainingOrPycodeContaining(String name, String pycode);
+    Page<YiBaoOperationName> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
+
+    @Query("MATCH (n:`医保手术和操作名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  RETURN n, collect(r), collect(m) limit $size")
+    List<YiBaoOperationName> findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
 }

+ 16 - 21
src/main/java/com/diagbot/util/NeoUtil.java

@@ -3,7 +3,7 @@ package com.diagbot.util;
 import com.alibaba.fastjson.JSONObject;
 import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.dto.PushBaseDTO;
-import com.diagbot.entity.node.Age;
+import com.diagbot.entity.node.YiBaoDiseaseName;
 import com.diagbot.repository.Constants;
 import com.diagbot.repository.NodeInfo;
 import com.diagbot.repository.datautil;
@@ -123,25 +123,20 @@ public class NeoUtil {
         return medtype;
     }
 
-
-    public static NodeNeoDTO fillNodeNeoDTO(Age age) {
-        NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
-        Integer range;
-        BigDecimal max, min;
-
-        nodeNeoDTO.setName(age.getName());
-
-        max = (age.getMaxval()==null)?null:new BigDecimal(age.getMaxval());
-        nodeNeoDTO.setMax(max);
-
-        min = (age.getMinval()==null)?null:new BigDecimal(age.getMinval());
-        nodeNeoDTO.setMin(min);
-
-        range = (age.getRange()==null)?0:age.getRange();
-        nodeNeoDTO.setValType(range);
-
-        nodeNeoDTO.setName(age.getTermname());
-
-        return nodeNeoDTO;
+    public static boolean matchBasic(YiBaoDiseaseName disease, int gender_code, int age){
+        boolean match = true;
+        String gender_neo4j = disease.getGender();
+        String age_neo4j = disease.getAge();
+        if((gender_neo4j != null && gender_neo4j.equals("男") && gender_code != 1) ||
+                (gender_neo4j != null && gender_neo4j.equals("女") && gender_code != 2)){
+            match = false;
+        }else if(age_neo4j != null){
+            String[] betweenAge = age_neo4j.split("-");
+            if(betweenAge.length == 2 && (age < Integer.parseInt(betweenAge[0])
+                    || age > Integer.parseInt(betweenAge[1]))){
+                match = false;
+            }
+        }
+        return match;
     }
 }

+ 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
      *

+ 9 - 1
src/main/java/com/diagbot/vo/StaticKnowledgeIndexVO.java

@@ -3,6 +3,7 @@ package com.diagbot.vo;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.util.List;
 
@@ -17,10 +18,17 @@ public class StaticKnowledgeIndexVO {
     /**
      * 检索内容
      */
+    @NotBlank(message = "请输入检索内容")
     private String inputStr;
     /**
      * 检索类型(多选):0-全部、1-诊断、2-药品、3-检验、4-检查、5-手术和操作
      */
     @NotNull(message = "请输入检索类型")
     private List<Integer> types;
-}
+
+    /**
+     * 是否有静态知识:0-无,1-有
+     */
+    @NotNull(message = "请输入是否有静态知识")
+    private Integer hasInfo;
+}

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

@@ -33,7 +33,7 @@ public class CacheController {
     @SysLogger("clear")
     public RespDTO<Boolean> clear() {
         cacheFacade.clear();
-        cacheFacade.clearLoadCache();
+        cacheFacade.loadDrugTypeCache();
         return RespDTO.onSuc(true);
     }
 

+ 2 - 0
src/main/resources/logback-spring.xml

@@ -204,6 +204,8 @@
     <!-- FrameworkServlet日志-->
     <logger name="org.springframework" level="WARN"/>
 
+    <!--<logger name="org.neo4j.ogm" level="DEBUG" />-->
+
     <!-- mybatis日志打印-->
     <logger name="org.apache.ibatis" level="DEBUG"/>
     <logger name="java.sql" level="DEBUG"/>