Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

MarkHuang 4 vuotta sitten
vanhempi
commit
9a50811dac

+ 6 - 6
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -220,7 +220,7 @@ public class RetrievalFacade {
         List<Integer> types = staticKnowledgeIndexVO.getTypes();
 
         //TODO 诊断
-        List<YiBaoDiseaseName> icdDiseaseList = icdDiseaseRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
+        List<YiBaoDiseaseName> icdDiseaseList = icdDiseaseRepository.staticKnowledgeIndex(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
         List<StaticKnowledgeIndexDTO> disRetList = Lists.newLinkedList();
         for (YiBaoDiseaseName icdDisease : icdDiseaseList) {
             StaticKnowledgeIndexDTO staticDTO = new StaticKnowledgeIndexDTO();
@@ -230,7 +230,7 @@ public class RetrievalFacade {
             disRetList.add(staticDTO);
         }
         //TODO 药品
-        List<Medicine> medicineList = medicineRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
+        List<Medicine> medicineList = medicineRepository.staticKnowledgeIndex(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> drugRetList = Lists.newLinkedList();
         for (Medicine medicine : medicineList) {
@@ -241,7 +241,7 @@ public class RetrievalFacade {
             drugRetList.add(staticDTO);
         }
         //TODO 检验套餐
-        List<LisSet> lisSetList = lisSetRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
+        List<LisSet> lisSetList = lisSetRepository.staticKnowledgeIndex(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> lisSetRetList = Lists.newLinkedList();
         for (LisSet lisSet : lisSetList) {
@@ -252,7 +252,7 @@ public class RetrievalFacade {
             lisSetRetList.add(staticDTO);
         }
         //TODO 检验明细关联出检验套餐
-        List<LisName> lisList = lisRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
+        List<LisName> lisList = lisRepository.staticKnowledgeIndex(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> lisSetRelatecLisRetList = Lists.newLinkedList();
         for (LisName lis : lisList) {
@@ -291,7 +291,7 @@ public class RetrievalFacade {
             lisRetList.add(staticDTO);
         }
         //TODO 检查
-        List<PacsName> pacsList = pacsRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
+        List<PacsName> pacsList = pacsRepository.staticKnowledgeIndex(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> pacsRetList = Lists.newLinkedList();
         for (PacsName pacs : pacsList) {
@@ -303,7 +303,7 @@ public class RetrievalFacade {
         }
 
         //TODO 手术和操作
-        List<YiBaoOperationName> operationList = operationRepository.findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
+        List<YiBaoOperationName> operationList = operationRepository.staticKnowledgeIndex(staticKnowledgeIndexVO.getHasInfo(), inputStr, inputStr, 100);
 
         List<StaticKnowledgeIndexDTO> operationRetList = Lists.newLinkedList();
 

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

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

+ 15 - 0
src/main/java/com/diagbot/repository/DeptRepository.java

@@ -3,7 +3,9 @@ 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.annotation.Query;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
+import org.springframework.data.repository.query.Param;
 
 import java.util.List;
 
@@ -15,4 +17,17 @@ public interface DeptRepository extends Neo4jRepository<Dept, Long> {
     List<Dept> findByNameIs(String name);
 
     Page<Dept> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
+
+    @Query("MATCH (n:`科室`)-[r]-(m) WHERE toLower(n.`name`) = toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) = toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "union\n" +
+            "MATCH (n:`科室`)-[r]-(m) WHERE toLower(n.`name`) starts with toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) starts with toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit 100\n" +
+            "union\n" +
+            "MATCH (n:`科室`)-[r]-(m) WHERE toLower(n.`name`) CONTAINS toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) CONTAINS toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<Dept> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
 }

+ 6 - 2
src/main/java/com/diagbot/repository/LisNameNode.java

@@ -12,6 +12,7 @@ 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;
@@ -181,8 +182,11 @@ public class LisNameNode {
 		List<LisDetailDTO> lislist = new ArrayList<>();
 		LisDetailDTO lisDetailDTO;
 
-		Page<LisName> lisPage = lisRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
-		List<LisName> lislt = lisPage.getContent();
+		List<LisName> lislt = lisRepository.index(name, name,100);
+
+		if (ListUtil.isNotEmpty(lislt) && lislt.size() > 100) {
+			lislt = lislt.subList(0, 100);
+		}
 
 		for (LisName lis : lislt) {
 			lisDetailDTO = new LisDetailDTO();

+ 25 - 4
src/main/java/com/diagbot/repository/LisNameRepository.java

@@ -20,8 +20,29 @@ public interface LisNameRepository extends Neo4jRepository<LisName, Long> {
 
     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]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) = toLower($name)  OR  toLower(n.`拼音编码`) = toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "UNION\n" +
+            "MATCH (n:`实验室检查名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) STARTS WITH toLower($name) OR toLower(n.`拼音编码`) STARTS WITH toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m) limit $size\n" +
+            "UNION \n" +
+            "MATCH (n:`实验室检查名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  \n" +
+            "AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<LisName> staticKnowledgeIndex(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+    @Query("MATCH (n:`实验室检查名称`)-[r]-(m) WHERE toLower(n.`name`) = toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) = toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "union\n" +
+            "MATCH (n:`实验室检查名称`)-[r]-(m) WHERE toLower(n.`name`) starts with toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) starts with toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit 100\n" +
+            "union\n" +
+            "MATCH (n:`实验室检查名称`)-[r]-(m) WHERE toLower(n.`name`) CONTAINS toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) CONTAINS toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<LisName> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
 }
-

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

@@ -5,9 +5,8 @@ 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;
@@ -149,8 +148,11 @@ public class LisSetNode {
 
 		List<String> lispacklist = new ArrayList<>();
 
-		Page<LisSet> lisPackPage = lisPackRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
-		List<LisSet> lisSetlist = lisPackPage.getContent();
+		List<LisSet> lisSetlist = lisPackRepository.index(name, name, 100);
+
+		if (ListUtil.isNotEmpty(lisSetlist) && lisSetlist.size() > 100) {
+			lisSetlist = lisSetlist.subList(0, 100);
+		}
 
 		for (LisSet lisSet : lisSetlist) {
 			nodename = lisSet.getName();

+ 25 - 2
src/main/java/com/diagbot/repository/LisSetRepository.java

@@ -20,7 +20,30 @@ public interface LisSetRepository extends Neo4jRepository<LisSet, Long> {
 
     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);
+    @Query("MATCH (n:`实验室检查套餐名`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) = toLower($name)  OR  toLower(n.`拼音编码`) = toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "UNION\n" +
+            "MATCH (n:`实验室检查套餐名`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) STARTS WITH toLower($name) OR toLower(n.`拼音编码`) STARTS WITH toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m) limit $size\n" +
+            "UNION \n" +
+            "MATCH (n:`实验室检查套餐名`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  \n" +
+            "AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<LisSet> staticKnowledgeIndex(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+    @Query("MATCH (n:`实验室检查套餐名`)-[r]-(m) WHERE toLower(n.`name`) = toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) = toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "union\n" +
+            "MATCH (n:`实验室检查套餐名`)-[r]-(m) WHERE toLower(n.`name`) starts with toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) starts with toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit 100\n" +
+            "union\n" +
+            "MATCH (n:`实验室检查套餐名`)-[r]-(m) WHERE toLower(n.`name`) CONTAINS toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) CONTAINS toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<LisSet> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
 }
 

+ 11 - 7
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -4,13 +4,15 @@ import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.DrugBillNeoDTO;
 import com.diagbot.dto.DrugInfoDTO;
 import com.diagbot.dto.NodeNeoDTO;
-import com.diagbot.entity.node.*;
+import com.diagbot.entity.node.Age;
+import com.diagbot.entity.node.Disease;
+import com.diagbot.entity.node.Group;
+import com.diagbot.entity.node.MedAllergen;
+import com.diagbot.entity.node.MedRegName;
+import com.diagbot.entity.node.Medicine;
 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;
 import java.util.List;
 import java.util.Map;
@@ -126,7 +128,6 @@ public class MedicineNode {
     }
 
 
-
     /**
      * 获取药品商品名称列表
      */
@@ -136,8 +137,11 @@ public class MedicineNode {
         List<DrugInfoDTO> medslist = new ArrayList<>();
         DrugInfoDTO drugInfoDTO;
 
-        Page<Medicine> medicinePage = medicineRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
-        List<Medicine> medicines = medicinePage.getContent();
+        List<Medicine> medicines = medicineRepository.index(name, name, 100);
+
+        if (ListUtil.isNotEmpty(medicines) && medicines.size() > 100) {
+            medicines = medicines.subList(0, 100);
+        }
 
         for (Medicine med : medicines) {
             drugInfoDTO = new DrugInfoDTO();

+ 26 - 4
src/main/java/com/diagbot/repository/MedicineRepository.java

@@ -1,9 +1,9 @@
 package com.diagbot.repository;
 
 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.annotation.Query;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
 import org.springframework.data.repository.query.Param;
 
@@ -24,8 +24,30 @@ public interface MedicineRepository extends Neo4jRepository<Medicine, Long> {
     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);
-
+    @Query("MATCH (n:`药品通用名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) = toLower($name)  OR  toLower(n.`拼音编码`) = toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "UNION\n" +
+            "MATCH (n:`药品通用名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) STARTS WITH toLower($name) OR toLower(n.`拼音编码`) STARTS WITH toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m) limit $size\n" +
+            "UNION \n" +
+            "MATCH (n:`药品通用名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  \n" +
+            "AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<Medicine> staticKnowledgeIndex(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+    @Query("MATCH (n:`药品通用名称`)-[r]-(m) WHERE toLower(n.`name`) = toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) = toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "union\n" +
+            "MATCH (n:`药品通用名称`)-[r]-(m) WHERE toLower(n.`name`) starts with toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) starts with toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit 100\n" +
+            "union\n" +
+            "MATCH (n:`药品通用名称`)-[r]-(m) WHERE toLower(n.`name`) CONTAINS toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) CONTAINS toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<Medicine> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
 }
 

+ 5 - 2
src/main/java/com/diagbot/repository/PacsNameNode.java

@@ -14,6 +14,7 @@ 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;
@@ -189,9 +190,11 @@ public class PacsNameNode {
 
         List<String> pacslist = new ArrayList<>();
 
-        Page<PacsName> pacsPage = pacsRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
+        List<PacsName> pacslt = pacsRepository.index(name, name, 100);
 
-        List<PacsName> pacslt = pacsPage.getContent();
+        if (ListUtil.isNotEmpty(pacslt) && pacslt.size() > 100) {
+            pacslt = pacslt.subList(0, 100);
+        }
 
         for (PacsName pacs : pacslt) {
             pacsname = pacs.getName();

+ 25 - 5
src/main/java/com/diagbot/repository/PacsNameRepository.java

@@ -20,9 +20,29 @@ public interface PacsNameRepository extends Neo4jRepository<PacsName, Long> {
 
     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);
-
-
+    @Query("MATCH (n:`辅助检查名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) = toLower($name)  OR  toLower(n.`拼音编码`) = toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "UNION\n" +
+            "MATCH (n:`辅助检查名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) STARTS WITH toLower($name) OR toLower(n.`拼音编码`) STARTS WITH toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m) limit $size\n" +
+            "UNION \n" +
+            "MATCH (n:`辅助检查名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  \n" +
+            "AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<PacsName> staticKnowledgeIndex(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+    @Query("MATCH (n:`辅助检查名称`)-[r]-(m) WHERE toLower(n.`name`) = toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) = toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "union\n" +
+            "MATCH (n:`辅助检查名称`)-[r]-(m) WHERE toLower(n.`name`) starts with toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) starts with toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit 100\n" +
+            "union\n" +
+            "MATCH (n:`辅助检查名称`)-[r]-(m) WHERE toLower(n.`name`) CONTAINS toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) CONTAINS toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<PacsName> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
 }
-

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

@@ -8,6 +8,7 @@ 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;
@@ -253,9 +254,11 @@ public class YiBaoDiseaseNode {
 		List<String> dislist = new ArrayList<>();
 		List<DiseaseInfoDTO> diseaseInfoDTOList = new ArrayList<>();
 
-		Page<YiBaoDiseaseName> diseasesPage
-				= diseaseRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
-		List<YiBaoDiseaseName> diseases = diseasesPage.getContent();
+		List<YiBaoDiseaseName> diseases = diseaseRepository.index(name, name, 100);
+
+		if (ListUtil.isNotEmpty(diseases) && diseases.size() > 100) {
+			diseases = diseases.subList(0, 100);
+		}
 
 		for (YiBaoDiseaseName dis : diseases) {
 			icdname = dis.getName();

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

@@ -20,8 +20,30 @@ public interface YiBaoDiseaseRepository extends Neo4jRepository<YiBaoDiseaseName
 
     Page<YiBaoDiseaseName> 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<YiBaoDiseaseName> findByIsKLAndNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
-
+    @Query("MATCH (n:`医保疾病名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) = toLower($name)  OR  toLower(n.`拼音编码`) = toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "UNION\n" +
+            "MATCH (n:`医保疾病名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) STARTS WITH toLower($name) OR toLower(n.`拼音编码`) STARTS WITH toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m) limit $size\n" +
+            "UNION \n" +
+            "MATCH (n:`医保疾病名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  \n" +
+            "AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<YiBaoDiseaseName> staticKnowledgeIndex(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+    @Query("MATCH (n:`医保疾病名称`)-[r]-(m) WHERE toLower(n.`name`) = toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) = toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "union\n" +
+            "MATCH (n:`医保疾病名称`)-[r]-(m) WHERE toLower(n.`name`) starts with toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) starts with toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit 100\n" +
+            "union\n" +
+            "MATCH (n:`医保疾病名称`)-[r]-(m) WHERE toLower(n.`name`) CONTAINS toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) CONTAINS toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<YiBaoDiseaseName> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
 }
 

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

@@ -27,8 +27,6 @@ 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;
@@ -176,9 +174,11 @@ public class YiBaoOperationNameNode {
         List<OperationInfoDTO> opslist = new ArrayList<>();
         OperationInfoDTO opInfoDTO;
 
-        Page<YiBaoOperationName> operationPage = operationRepository.findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(name, name, PageRequest.of(0, 100));
+        List<YiBaoOperationName> operations = operationRepository.index(name, name, 100);
 
-        List<YiBaoOperationName> operations = operationPage.getContent();
+        if (ListUtil.isNotEmpty(operations) && operations.size() > 100) {
+            operations = operations.subList(0, 100);
+        }
 
         for (YiBaoOperationName op : operations) {
             opInfoDTO = new OperationInfoDTO();

+ 26 - 4
src/main/java/com/diagbot/repository/YiBaoOperationNameRepository.java

@@ -20,7 +20,29 @@ public interface YiBaoOperationNameRepository extends Neo4jRepository<YiBaoOpera
 
     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);
-
-}
+    @Query("MATCH (n:`医保手术和操作名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) = toLower($name)  OR  toLower(n.`拼音编码`) = toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "UNION\n" +
+            "MATCH (n:`医保手术和操作名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) STARTS WITH toLower($name) OR toLower(n.`拼音编码`) STARTS WITH toLower($pycode))\n" +
+            "RETURN n, collect(r), collect(m) limit $size\n" +
+            "UNION \n" +
+            "MATCH (n:`医保手术和操作名称`)-[r]-(m) WHERE n.`静态知识标识` = $isKL  \n" +
+            "AND (toLower(n.`name`) CONTAINS toLower($name) OR toLower(n.`拼音编码`) CONTAINS toLower($pycode))  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<YiBaoOperationName> staticKnowledgeIndex(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+    @Query("MATCH (n:`医保手术和操作名称`)-[r]-(m) WHERE toLower(n.`name`) = toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) = toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m)\n" +
+            "union\n" +
+            "MATCH (n:`医保手术和操作名称`)-[r]-(m) WHERE toLower(n.`name`) starts with toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) starts with toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit 100\n" +
+            "union\n" +
+            "MATCH (n:`医保手术和操作名称`)-[r]-(m) WHERE toLower(n.`name`) CONTAINS toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) CONTAINS toLower($pycode)  \n" +
+            "RETURN n, collect(r), collect(m) limit $size")
+    List<YiBaoOperationName> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+}