Browse Source

提供通过图谱查询量表内容的接口

MarkHuang 6 years ago
parent
commit
fb65859485

+ 1 - 1
graphdb/pom.xml

@@ -9,7 +9,7 @@
     <packaging>jar</packaging>
 
     <name>graphdb</name>
-    <description>Demo project for Spring Boot</description>
+    <description>Neo4j project with Spring Boot</description>
 
     <parent>
         <groupId>org.springframework.boot</groupId>

+ 17 - 0
graphdb/src/main/java/org/diagbot/entity/node/Scale.java

@@ -0,0 +1,17 @@
+package org.diagbot.entity.node;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.diagbot.entity.node.base.BaseNode;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Property;
+
+@NodeEntity(label = "Scale")
+@Getter
+@Setter
+public class Scale extends BaseNode {
+
+    @Property(name = "name")
+    private String name;
+
+}

+ 0 - 1
graphdb/src/main/java/org/diagbot/repository/BaseNodeRepository.java

@@ -6,7 +6,6 @@ import org.springframework.data.neo4j.repository.Neo4jRepository;
 
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Stream;
 
 public interface BaseNodeRepository extends Neo4jRepository<BaseNode, Long> {
     // update Node by Name

+ 23 - 0
graphdb/src/main/java/org/diagbot/repository/ScaleRepository.java

@@ -0,0 +1,23 @@
+package org.diagbot.repository;
+
+import org.diagbot.entity.node.Scale;
+import org.springframework.data.neo4j.annotation.Query;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ScaleRepository extends Neo4jRepository<Scale, Long> {
+    List<Scale> findByNameContaining(String token);
+
+    // 获取量表内容和评分标准
+    @Query("MATCH (m:Scale)-[r1]->(n1)-[r2]->(n2)-[r3]->(n3) WHERE m.name= {0} " +
+            "RETURN n1.name, n1.method, r1.score, n2.name, r2.score,n2.type, r2.p, " +
+            "n3.name as n3name,r3.score as r3score, r3.p as r3p, n3.type as n3type " +
+            "ORDER BY toInt(r2.p), n2.type union " +
+            "MATCH (m:Scale)-[r1]->(n1)-[r2]->(n2) WHERE m.name= {0} " +
+            "RETURN n1.name,n1.method, r1.score,n2.name,r2.score,n2.type,r2.p, " +
+            "null as n3name, null as r3score, null as r3p, null as n3type ORDER BY toInt(r2.p),n2.type")
+    List<Map<String, Object>> getScale(String tblname);
+
+}

+ 2 - 0
graphdb/src/main/java/org/diagbot/service/KnowledgeService.java

@@ -42,6 +42,8 @@ public interface KnowledgeService {
 
     Map<String,List<FeatureRate>> getLisPacs(SearchData searchData);
 
+    Map<String, List<Map<String, Object>>> getScale(QueryVo queryVo);
+
     // 获取推荐项目
     List<Map<String, Object>> getRecommendItem(QueryVo queryVo);
 

+ 16 - 2
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java

@@ -38,6 +38,8 @@ public class KnowledgeServiceImpl implements KnowledgeService {
     @Autowired
     private RelationRepository relationRepository;
     @Autowired
+    private ScaleRepository scaleRepository;
+    @Autowired
     private KnowledgeMapper knowledgeMapper;
 
     private List<BaseNode> baseNodes;
@@ -289,8 +291,20 @@ public class KnowledgeServiceImpl implements KnowledgeService {
 
     @Override
     public List<Map<String, Object>> getRecommendItem(QueryVo queryVo) {
-        List<Map<String, Object>> llist = relationRepository.getRecommendItem(queryVo.getDiseaselist());
-        return llist;
+        List<Map<String, Object>> list = relationRepository.getRecommendItem(queryVo.getDiseaselist());
+        return list;
+    }
+
+    @Override
+    public Map<String, List<Map<String, Object>>> getScale(QueryVo queryVo) {
+        Map<String, List<Map<String, Object>>> map = new HashMap<>();
+
+        for (String name:queryVo.getScalelist()) {
+            List<Map<String, Object>> list = scaleRepository.getScale(name);
+            map.put(name, list);
+        }
+
+        return map;
     }
 
 

+ 2 - 0
graphdb/src/main/java/org/diagbot/vo/QueryVo.java

@@ -16,4 +16,6 @@ import java.util.List;
 @Setter
 public class QueryVo {
     private List<String> diseaselist;
+
+    private List<String> scalelist;
 }

+ 8 - 0
graphdb/src/main/java/org/diagbot/web/KnowledgeController.java

@@ -168,6 +168,14 @@ public class KnowledgeController {
         return knowledgeService.getRecommendItem(queryVo);
     }
 
+    /**
+     * 给定量表名称,推荐量表内容
+     */
+    @RequestMapping("/getScale")
+    public Map<String, List<Map<String, Object>>> getScale(@Valid @RequestBody QueryVo queryVo) {
+        return knowledgeService.getScale(queryVo);
+    }
+
     /*
     @RequestMapping("/actedIn/{personId}/{movieId}")
     public TJ actedIn(@PathVariable("personId")String personId, @PathVariable("movieId")String movieId){