Browse Source

获取图谱接口

gaodm 5 years ago
parent
commit
322c6f61ac

+ 19 - 0
ltkg-service/src/main/java/com/diagbot/dto/BaseNodeDTO.java

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/3/16 11:02
+ */
+@Getter
+@Setter
+public class BaseNodeDTO {
+    private String name;
+    private List<String> labels;
+
+}

+ 18 - 0
ltkg-service/src/main/java/com/diagbot/dto/GraphDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/3/16 10:57
+ */
+@Getter
+@Setter
+public class GraphDTO extends BaseNodeDTO{
+    private String rType;
+    private List<BaseNodeDTO> eNodeDTOS;
+}

+ 2 - 2
ltkg-service/src/main/java/com/diagbot/mapper/KgMapper.java

@@ -1,5 +1,6 @@
 package com.diagbot.mapper;
 
+import com.diagbot.dto.GraphDTO;
 import com.diagbot.dto.NodeDTO;
 import com.diagbot.vo.KgQueryVO;
 
@@ -15,11 +16,10 @@ import java.util.Map;
  * @since 2018-08-02
  */
 public interface KgMapper {
-    List<Map> selectDisease();
 
     List<NodeDTO> getNode(KgQueryVO kgQueryVO);
 
-    List<Map> getGraph();
+    List<GraphDTO> getGraph(KgQueryVO kgQueryVO);
 
     List<Map> getTree();
 

+ 2 - 2
ltkg-service/src/main/java/com/diagbot/service/KgService.java

@@ -1,5 +1,6 @@
 package com.diagbot.service;
 
+import com.diagbot.dto.GraphDTO;
 import com.diagbot.dto.NodeDTO;
 import com.diagbot.vo.KgQueryVO;
 
@@ -15,11 +16,10 @@ import java.util.Map;
  * @since 2018-08-02
  */
 public interface KgService {
-    List<Map> selectDisease();
 
     List<NodeDTO> getNode(KgQueryVO kgQueryVO);
 
-    List<Map> getGraph();
+    List<GraphDTO> getGraph(KgQueryVO kgQueryVO);
 
     List<Map> getTree();
 

+ 3 - 7
ltkg-service/src/main/java/com/diagbot/service/impl/KgServiceImpl.java

@@ -1,5 +1,6 @@
 package com.diagbot.service.impl;
 
+import com.diagbot.dto.GraphDTO;
 import com.diagbot.dto.NodeDTO;
 import com.diagbot.mapper.KgMapper;
 import com.diagbot.service.KgService;
@@ -24,19 +25,14 @@ public class KgServiceImpl implements KgService {
     @Autowired
     private KgMapper kgMapper;
 
-    @Override
-    public List<Map> selectDisease() {
-        return kgMapper.selectDisease();
-    }
-
     @Override
     public List<NodeDTO> getNode(KgQueryVO kgQueryVO){
         return kgMapper.getNode(kgQueryVO);
     }
 
     @Override
-    public List<Map> getGraph(){
-        return kgMapper.getGraph();
+    public List<GraphDTO> getGraph(KgQueryVO kgQueryVO){
+        return kgMapper.getGraph(kgQueryVO);
     }
 
     @Override

+ 7 - 0
ltkg-service/src/main/java/com/diagbot/vo/KgQueryVO.java

@@ -1,8 +1,11 @@
 package com.diagbot.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
+
 /**
  * @Description:
  * @author: gaodm
@@ -11,6 +14,10 @@ import lombok.Setter;
 @Getter
 @Setter
 public class KgQueryVO {
+    @ApiModelProperty(value = "标签名")
+    @NotBlank(message = "标签名不能为空")
     private String labelName;
+    @ApiModelProperty(value = "搜索内容")
+    @NotBlank(message = "搜索内容不能为空")
     private String inputStr;
 }

+ 4 - 9
ltkg-service/src/main/java/com/diagbot/web/KgController.java

@@ -1,6 +1,7 @@
 package com.diagbot.web;
 
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.GraphDTO;
 import com.diagbot.dto.NodeDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.KgFacade;
@@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
 import java.util.List;
 import java.util.Map;
 
@@ -30,13 +32,6 @@ public class KgController {
     @Autowired
     private KgFacade kgFacade;
 
-    @ApiOperation(value = "查看疾病", notes = "查看疾病")
-    @PostMapping("/selectDisease")
-    @SysLogger("selectDisease")
-    public RespDTO<List<Map>> selectDisease() {
-        return RespDTO.onSuc(kgFacade.selectDisease());
-    }
-
     @ApiOperation(value = "查询节点", notes = "查询节点")
     @PostMapping("/getNode")
     @SysLogger("getNode")
@@ -47,8 +42,8 @@ public class KgController {
     @ApiOperation(value = "获取图谱", notes = "获取图谱")
     @PostMapping("/getGraph")
     @SysLogger("getGraph")
-    public RespDTO<List<Map>> getGraph(@RequestBody KgQueryVO kgQueryVO) {
-        return RespDTO.onSuc(kgFacade.getGraph());
+    public RespDTO<List<GraphDTO>> getGraph(@RequestBody @Valid KgQueryVO kgQueryVO) {
+        return RespDTO.onSuc(kgFacade.getGraph(kgQueryVO));
     }
 
     @ApiOperation(value = "获取分类", notes = "获取分类")

+ 13 - 5
ltkg-service/src/main/resources/mapper/KgMapper.xml

@@ -3,9 +3,13 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.diagbot.mapper.KgMapper">
 
-    <select id="selectDisease" resultType="java.util.Map">
-      MATCH (obj:`疾病名称`) RETURN obj LIMIT 25
-    </select>
+    <resultMap id="GraphResultMap" type="com.diagbot.dto.GraphDTO">
+        <id column="sName" property="name"/>
+        <result column="rType" property="rType"/>
+        <collection property="eNodeDTOS" ofType="com.diagbot.dto.BaseNodeDTO">
+            <result column="eName" property="name"/>
+        </collection>
+    </resultMap>
 
     <select id="getNode" parameterType='com.diagbot.vo.KgQueryVO' resultType="com.diagbot.dto.NodeDTO">
         Match (n:${labelName}) where n.name STARTS WITH #{inputStr} with collect(n.name) as rows1
@@ -16,8 +20,12 @@
         limit 20
     </select>
 
-    <select id="getGraph" resultType="java.util.Map">
-      MATCH (obj:`疾病名称`) RETURN obj LIMIT 25
+    <select id="getGraph" parameterType='com.diagbot.vo.KgQueryVO' resultMap="GraphResultMap">
+        MATCH (n:${labelName})-[r]->(m)
+        where n.name = #{inputStr}
+        RETURN Labels(n) as sLabel,n.name as sName,Type (r) as rType, Labels(m) as eLabel,m.name as eName
+        ORDER BY rType
+        LIMIT 100
     </select>
 
     <select id="getTree" resultType="java.util.Map">