gaodm пре 5 година
родитељ
комит
c4a0a6b1bf

+ 1 - 1
ltkg-service/src/main/java/com/diagbot/dto/BaseNodeRSDTO.java

@@ -14,5 +14,5 @@ import java.util.List;
 @Setter
 public class BaseNodeRSDTO {
     private String rType;
-    private List<BaseNodeDTO> eNodeDTOS;
+    private List<NextNodeDTO> eNodeDTOS;
 }

+ 15 - 0
ltkg-service/src/main/java/com/diagbot/dto/NextNodeDTO.java

@@ -0,0 +1,15 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/3/16 11:02
+ */
+@Getter
+@Setter
+public class NextNodeDTO extends BaseNodeDTO {
+    private Integer pCount;
+}

+ 10 - 5
ltkg-service/src/main/java/com/diagbot/facade/KgFacade.java

@@ -10,6 +10,7 @@ import com.diagbot.dto.GraphDTO;
 import com.diagbot.dto.GraphLabelDTO;
 import com.diagbot.dto.Link;
 import com.diagbot.dto.LinkDTO;
+import com.diagbot.dto.NextNodeDTO;
 import com.diagbot.dto.Node;
 import com.diagbot.dto.Tree;
 import com.diagbot.dto.TreeDTO;
@@ -75,10 +76,14 @@ public class KgFacade extends KgServiceImpl {
                     links.add(new LinkDTO(gNodeDTO.getName(), nNodeDTO.getName(), baseNodeRSDTO.getRType()));
                     nodeId++;
                     if (ListUtil.isNotEmpty(baseNodeRSDTO.getENodeDTOS())) {
-                        for (BaseNodeDTO baseNodeDTO : baseNodeRSDTO.getENodeDTOS()) {
+                        for (NextNodeDTO baseNodeDTO : baseNodeRSDTO.getENodeDTOS()) {
+                            String symbol = "diamond";
+                            if (baseNodeDTO.getPCount() > 0){
+                                symbol = "circle";
+                            }
                             GNodeDTO eNodeDTO
                                     = new GNodeDTO(baseNodeDTO.getLabel(), cMap.get(baseNodeRSDTO.getRType()),
-                                    baseNodeDTO.getName(), nodeId, "diamond", 28);
+                                    baseNodeDTO.getName(), nodeId, symbol, 28);
                             nodeId++;
                             node.add(eNodeDTO);
                             links.add(new LinkDTO(nNodeDTO.getName(), eNodeDTO.getName(), ""));
@@ -108,8 +113,8 @@ public class KgFacade extends KgServiceImpl {
         if (kgTreeVO.getType() == 1
                 && kgTreeVO.getSubType() == 1) {
             KgQueryVO kgQueryVO = new KgQueryVO();
-            kgQueryVO.setLabelName("国icd10");
-            kgQueryVO.setInputStr("国icd10");
+            kgQueryVO.setLabelName("诊断依据");
+            kgQueryVO.setInputStr("诊断依据");
             String tree = this.getTree(kgQueryVO);
             if (StringUtil.isBlank(tree)) {
                 throw new CommonException(CommonErrorCode.NOT_EXISTS);
@@ -125,7 +130,7 @@ public class KgFacade extends KgServiceImpl {
     private TreeDTO getTreeDTO(String tree) {
         TreeDTO treeDTO = new TreeDTO();
         List<TreeNodeDTO> nodes = new ArrayList<>();
-        Tree treeObj = FastJsonUtils.getJsonToBean(jsonStr, Tree.class);
+        Tree treeObj = FastJsonUtils.getJsonToBean(tree, Tree.class);
         if (null != treeObj) {
             Map<String, Integer> treeMap = new HashMap<>();
             treeMap.put("根节点", 0);

+ 4 - 2
ltkg-service/src/main/resources/mapper/KgMapper.xml

@@ -8,9 +8,10 @@
         <result column="sLabel" property="label"/>
         <collection property="eNodeRSDTOS" ofType="com.diagbot.dto.BaseNodeRSDTO">
             <result column="rType" property="rType"/>
-            <collection property="eNodeDTOS" ofType="com.diagbot.dto.BaseNodeDTO">
+            <collection property="eNodeDTOS" ofType="com.diagbot.dto.NextNodeDTO">
                 <result column="eName" property="name"/>
                 <result column="eLabel" property="label"/>
+                <result column="pCount" property="pCount"/>
             </collection>
         </collection>
     </resultMap>
@@ -36,7 +37,8 @@
     <select id="getGraph" parameterType='com.diagbot.vo.KgQueryVO' resultMap="GraphResultMap">
         MATCH (n:${labelName})-[r]->(m)
         where n.name = #{inputStr}
-        RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName
+        OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in ["diagnose","symptom"]
+        RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName, count(p) as pCount
         ORDER BY rType
         LIMIT 100
     </select>