Browse Source

获取图谱接口

gaodm 5 years ago
parent
commit
6dcb5a7da1

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

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/3/17 15:08
+ */
+@Getter
+@Setter
+public class CategorieDTO {
+    private String name;
+
+    public CategorieDTO(String name){
+        this.name = name;
+    }
+}

+ 27 - 0
ltkg-service/src/main/java/com/diagbot/dto/GNodeDTO.java

@@ -0,0 +1,27 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/3/16 10:11
+ */
+@Getter
+@Setter
+public class GNodeDTO {
+    private Integer category;
+    private String label;
+    private Integer name;
+    private String symbol;
+    private Integer symbolSize;
+
+    public GNodeDTO(Integer category, String label, Integer name, String symbol, Integer symbolSize) {
+        this.category = category;
+        this.label = label;
+        this.name = name;
+        this.symbol = symbol;
+        this.symbolSize = symbolSize;
+    }
+}

+ 3 - 2
ltkg-service/src/main/java/com/diagbot/dto/GraphLabelDTO.java

@@ -13,6 +13,7 @@ import java.util.List;
 @Getter
 @Setter
 public class GraphLabelDTO {
-    private List<String> allRs;
-    private List<GraphDTO> graphDTOS;
+    private List<CategorieDTO> categories;
+    private List<GNodeDTO> node;
+    private List<LinkDTO> links;
 }

+ 23 - 0
ltkg-service/src/main/java/com/diagbot/dto/LinkDTO.java

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/3/17 15:09
+ */
+@Getter
+@Setter
+public class LinkDTO {
+    private Integer source;
+    private Integer target;
+    private String value;
+
+    public LinkDTO(Integer source, Integer target, String value) {
+        this.source = source;
+        this.target = target;
+        this.value = value;
+    }
+}

+ 54 - 8
ltkg-service/src/main/java/com/diagbot/facade/KgFacade.java

@@ -1,8 +1,12 @@
 package com.diagbot.facade;
 
+import com.diagbot.dto.BaseNodeDTO;
 import com.diagbot.dto.BaseNodeRSDTO;
+import com.diagbot.dto.CategorieDTO;
+import com.diagbot.dto.GNodeDTO;
 import com.diagbot.dto.GraphDTO;
 import com.diagbot.dto.GraphLabelDTO;
+import com.diagbot.dto.LinkDTO;
 import com.diagbot.dto.TreeDTO;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -14,7 +18,9 @@ import com.diagbot.vo.KgTreeVO;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 用户日志业务层
@@ -26,26 +32,66 @@ public class KgFacade extends KgServiceImpl {
 
     public GraphLabelDTO getGraphFac(KgQueryVO kgQueryVO) {
         GraphLabelDTO graphLabelDTO = new GraphLabelDTO();
+        List<CategorieDTO> categories = new ArrayList<>();
+        List<GNodeDTO> node = new ArrayList<>();
+        List<LinkDTO> links = new ArrayList<>();
         List<GraphDTO> res = this.getGraph(kgQueryVO);
         if (ListUtil.isEmpty(res)) {
             throw new CommonException(CommonErrorCode.NOT_EXISTS);
         } else {
-            List<String> allRs = new ArrayList<>();
-            for (GraphDTO graphDTO : res) {
-                if (ListUtil.isNotEmpty(graphDTO.getENodeRSDTOS())) {
-                    for (BaseNodeRSDTO baseNodeRSDTO : graphDTO.getENodeRSDTOS()) {
-                        if (!allRs.contains(baseNodeRSDTO.getRType())) {
-                            allRs.add(baseNodeRSDTO.getRType());
+            Integer nodeId = 0;
+            categories.add(new CategorieDTO("中心词"));
+            categories.add(new CategorieDTO("关系"));
+            Map<String, Integer> cMap = new HashMap<>();
+            cMap.put("中心词", 0);
+            cMap.put("关系", 1);
+
+            GraphDTO graphDTO = res.get(0);
+            GNodeDTO gNodeDTO
+                    = new GNodeDTO(0, graphDTO.getName(), nodeId, "circle", 50);
+            nodeId++;
+            node.add(gNodeDTO);
+            if (ListUtil.isNotEmpty(graphDTO.getENodeRSDTOS())) {
+                Integer rsId = 2;
+                for (BaseNodeRSDTO baseNodeRSDTO : graphDTO.getENodeRSDTOS()) {
+                    if (null == cMap.get(baseNodeRSDTO.getRType())) {
+                        cMap.put(baseNodeRSDTO.getRType(), rsId);
+                        categories.add(new CategorieDTO(baseNodeRSDTO.getRType()));
+                        rsId++;
+                    }
+                    GNodeDTO nNodeDTO
+                            = new GNodeDTO(1, "", nodeId, "diamond", 10);
+                    node.add(nNodeDTO);
+                    links.add(new LinkDTO(gNodeDTO.getName(), nNodeDTO.getName(), baseNodeRSDTO.getRType()));
+                    nodeId++;
+                    if (ListUtil.isNotEmpty(baseNodeRSDTO.getENodeDTOS())) {
+                        for (BaseNodeDTO baseNodeDTO : baseNodeRSDTO.getENodeDTOS()) {
+                            GNodeDTO eNodeDTO
+                                    = new GNodeDTO(cMap.get(baseNodeRSDTO.getRType()), baseNodeDTO.getName(), nodeId, random(), 28);
+                            nodeId++;
+                            node.add(eNodeDTO);
+                            links.add(new LinkDTO(nNodeDTO.getName(), eNodeDTO.getName(), ""));
                         }
                     }
                 }
             }
-            graphLabelDTO.setAllRs(allRs);
-            graphLabelDTO.setGraphDTOS(res);
+            graphLabelDTO.setCategories(categories);
+            graphLabelDTO.setNode(node);
+            graphLabelDTO.setLinks(links);
         }
+
         return graphLabelDTO;
     }
 
+    private String random() {
+        //先随机产生一个下标再获取元素
+        String random = "";
+        String[] doc = { "circle", "diamond" };
+        int index = (int) (Math.random() * doc.length);
+        random = doc[index];
+        return random;
+    }
+
     public TreeDTO getTreeFac(KgTreeVO kgTreeVO) {
         TreeDTO treeDTO = new TreeDTO();
         if (kgTreeVO.getType() == 1 && kgTreeVO.getSubType() == 1) {