Jelajahi Sumber

图谱节点增加字段

yuchengwei 5 bulan lalu
induk
melakukan
edccce5c9d

+ 9 - 6
src/main/java/com/qizhen/healsphere/facade/KgFacade.java

@@ -46,6 +46,7 @@ public class KgFacade extends KgServiceImpl {
         if (CollUtil.isEmpty(res)) {
             throw new CommonException(CommonErrorCode.NOT_EXISTS);
         } else {
+            Map<String,Object> itemStyleMap = new HashMap<>();
             long nodeId = 0;
             categories.add(new CategorieDTO("中心词"));
             categories.add(new CategorieDTO("关系"));
@@ -55,9 +56,10 @@ public class KgFacade extends KgServiceImpl {
 
             GraphDTO graphDTO = res.get(0);
             GNodeDTO gNodeDTO
-                    = new GNodeDTO(graphDTO.getLabel(), 0, graphDTO.getName(), nodeId, "circle", 50,graphDTO.getProperties(),graphDTO.getId());
+                    = new GNodeDTO(graphDTO.getLabel(), 0, graphDTO.getName(), nodeId, "circle", 50,graphDTO.getProperties(),graphDTO.getId(),itemStyleMap);
             nodeId++;
             node.add(gNodeDTO);
+
             if (CollUtil.isNotEmpty(graphDTO.getENodeRSDTOS())) {
                 Integer rsId = 2;
                 for (BaseNodeRSDTO baseNodeRSDTO : graphDTO.getENodeRSDTOS()) {
@@ -67,19 +69,20 @@ public class KgFacade extends KgServiceImpl {
                         rsId++;
                     }
                     GNodeDTO nNodeDTO
-                            = new GNodeDTO(graphDTO.getLabel(), 1, "", nodeId, "diamond", 10,graphDTO.getProperties(),graphDTO.getId());
+                            = new GNodeDTO(graphDTO.getLabel(), 1, "", nodeId, "diamond", 10,graphDTO.getProperties(),graphDTO.getId(),itemStyleMap);
                     node.add(nNodeDTO);
                     links.add(new LinkDTO(gNodeDTO.getName(), nNodeDTO.getName(), baseNodeRSDTO.getRType(),baseNodeRSDTO.getRType()));
                     nodeId++;
                     if (CollUtil.isNotEmpty(baseNodeRSDTO.getENodeDTOS())) {
                         for (NextNodeDTO baseNodeDTO : baseNodeRSDTO.getENodeDTOS()) {
-                            String symbol = "diamond";
-                            if (baseNodeDTO.getPCount() > 0) {
-                                symbol = "circle";
+                            Map<String,Object> childrenItemStyleMap = new HashMap<>();
+                            String symbol = "circle";
+                            if (baseNodeDTO.getPCount() == 0) {
+                                childrenItemStyleMap.put("color", "#808080");
                             }
                             GNodeDTO eNodeDTO
                                     = new GNodeDTO(baseNodeDTO.getLabel(), cMap.get(baseNodeRSDTO.getRType()),
-                                    baseNodeDTO.getName(), nodeId, symbol, 28, baseNodeDTO.getProperties(),baseNodeDTO.getId());
+                                    baseNodeDTO.getName(), nodeId, symbol, 28, baseNodeDTO.getProperties(),baseNodeDTO.getId(),childrenItemStyleMap);
                             nodeId++;
                             node.add(eNodeDTO);
                             links.add(new LinkDTO(nNodeDTO.getName(), eNodeDTO.getName(), "",baseNodeRSDTO.getRType()));

+ 4 - 3
src/main/java/com/qizhen/healsphere/repository/neo4j/BaseNodeRepository.java

@@ -3,6 +3,7 @@ package com.qizhen.healsphere.repository.neo4j;
 import cn.hutool.core.collection.CollUtil;
 import com.qizhen.healsphere.config.Neo4jUtil;
 import com.qizhen.healsphere.repository.neo4j.entity.BaseEntity;
+import com.qizhen.healsphere.repository.neo4j.param.MergeNodeParam;
 import com.qizhen.healsphere.web.dto.NodeDTO;
 import org.neo4j.driver.v1.Record;
 import org.neo4j.driver.v1.Session;
@@ -187,7 +188,7 @@ public class BaseNodeRepository {
     /**
      * 实体合并
      */
-    public Map<String, Object> mergeNode(String firstLabel,Long firstId,String secondLabel,Long secondId,String newName,String newLabel) {
+    public Map<String, Object> mergeNode(MergeNodeParam mergeNodeParam) {
 
         String query = String.format("MATCH (a:`%s`), (b:`%s`)\n" +
                 "WHERE id(a) = $firstId AND id(b) = $secondId\n" +
@@ -208,10 +209,10 @@ public class BaseNodeRepository {
                 "// 删除原有的两个节点\n" +
                 "WITH m, a, b\n" +
                 "DETACH DELETE a, b\n" +
-                "RETURN m\n", firstLabel, secondLabel, newLabel);
+                "RETURN m\n", mergeNodeParam.getFirstLabel(), mergeNodeParam.getSecondLabel(), mergeNodeParam.getNewLabel());
 
         try(Session session = neo4jUtil.getSession()) {
-            StatementResult result = session.run(query,Values.parameters("firstId", firstId,"secondId", secondId,"newName",newName));
+            StatementResult result = session.run(query,Values.parameters("firstId", mergeNodeParam.getFirstId(),"secondId", mergeNodeParam.getSecondId(),"newName", mergeNodeParam.getNewName()));
             Map<String,Object> map = new HashMap<>();
             if(result.hasNext()) {
                 Node node = result.single().get("m").asNode();

+ 6 - 8
src/main/java/com/qizhen/healsphere/repository/neo4j/BasePropertyRepository.java

@@ -1,6 +1,7 @@
 package com.qizhen.healsphere.repository.neo4j;
 
 import com.qizhen.healsphere.config.Neo4jUtil;
+import com.qizhen.healsphere.repository.neo4j.param.UpdatePropertyParam;
 import org.neo4j.driver.v1.Session;
 import org.neo4j.driver.v1.StatementResult;
 import org.neo4j.driver.v1.Values;
@@ -74,19 +75,16 @@ public class BasePropertyRepository {
 
     /**
      * 更新实体属性
-     * @param label
-     * @param nodeId
-     * @param oldPropertyName
-     * @param newPropertyName
-     * @param newPropertyValue
+     *
+     * @param updatePropertyParam
      * @return 实体map
      */
-    public Map<String,Object> updateProperty(String label,Long nodeId,String oldPropertyName,String newPropertyName,String newPropertyValue) {
+    public Map<String,Object> updateProperty(UpdatePropertyParam updatePropertyParam) {
         String query = String.format("MATCH (n:`%s`) WHERE id(n) = $nodeId REMOVE n.%s " +
-                "SET n.%s = $newPropertyValue RETURN n", label,oldPropertyName,newPropertyName);
+                "SET n.%s = $newPropertyValue RETURN n", updatePropertyParam.getLabel(), updatePropertyParam.getOldPropertyName(), updatePropertyParam.getNewPropertyName());
 
         try(Session session = neo4jUtil.getSession()) {
-            StatementResult result = session.run(query,Values.parameters("nodeId", nodeId,"newPropertyValue", newPropertyValue));
+            StatementResult result = session.run(query,Values.parameters("nodeId", updatePropertyParam.getNodeId(),"newPropertyValue", updatePropertyParam.getNewPropertyValue()));
             Map<String,Object> map = new HashMap<>();
             if(result.hasNext()) {
                 Node node = result.single().get("n").asNode();

+ 13 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/param/MergeNodeParam.java

@@ -0,0 +1,13 @@
+package com.qizhen.healsphere.repository.neo4j.param;
+
+import lombok.Data;
+
+@Data
+public class MergeNodeParam {
+    private String firstLabel;
+    private Long firstId;
+    private String secondLabel;
+    private Long secondId;
+    private String newName;
+    private String newLabel;
+}

+ 12 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/param/UpdatePropertyParam.java

@@ -0,0 +1,12 @@
+package com.qizhen.healsphere.repository.neo4j.param;
+
+import lombok.Data;
+
+@Data
+public class UpdatePropertyParam {
+    private String label;
+    private Long nodeId;
+    private String oldPropertyName;
+    private String newPropertyName;
+    private String newPropertyValue;
+}

+ 5 - 2
src/main/java/com/qizhen/healsphere/service/impl/EntityServiceImpl.java

@@ -1,6 +1,8 @@
 package com.qizhen.healsphere.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.qizhen.healsphere.repository.neo4j.BaseNodeRepository;
+import com.qizhen.healsphere.repository.neo4j.param.MergeNodeParam;
 import com.qizhen.healsphere.repository.neo4j.entity.BaseEntity;
 import com.qizhen.healsphere.service.EntityService;
 import com.qizhen.healsphere.web.vo.CreateEntityVO;
@@ -114,7 +116,8 @@ public class EntityServiceImpl implements EntityService {
 
     @Override
     public Map<String, Object> mergeEntity(MergeEntityVO mergeEntity) {
-//        nodeRepository.mergeNode(mergeEntity)
-        return null;
+        MergeNodeParam mergeNodeParam = BeanUtil.copyProperties(mergeEntity, MergeNodeParam.class);
+
+        return nodeRepository.mergeNode(mergeNodeParam);
     }
 }

+ 4 - 6
src/main/java/com/qizhen/healsphere/service/impl/PropertyServiceImpl.java

@@ -1,6 +1,8 @@
 package com.qizhen.healsphere.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.qizhen.healsphere.repository.neo4j.BasePropertyRepository;
+import com.qizhen.healsphere.repository.neo4j.param.UpdatePropertyParam;
 import com.qizhen.healsphere.service.PropertyService;
 import com.qizhen.healsphere.web.vo.DeletePropertyVO;
 import com.qizhen.healsphere.web.vo.EntityVO;
@@ -48,12 +50,8 @@ public class PropertyServiceImpl implements PropertyService {
     @Override
     public Map<String, Object> updateEntityProperty(UpdatePropertyVO updateProperty) {
 
-        return propertyRepository.updateProperty(
-                updateProperty.getLabel(),
-                updateProperty.getNodeId(),
-                updateProperty.getOldPropertyName(),
-                updateProperty.getNewPropertyName(),
-                updateProperty.getNewPropertyValue());
+        UpdatePropertyParam updatePropertyParam = BeanUtil.copyProperties(updateProperty, UpdatePropertyParam.class);
+        return propertyRepository.updateProperty(updatePropertyParam);
     }
 
 

+ 3 - 2
src/main/java/com/qizhen/healsphere/web/EntityController.java

@@ -3,6 +3,7 @@ package com.qizhen.healsphere.web;
 import com.qizhen.healsphere.service.EntityService;
 import com.qizhen.healsphere.web.dto.RespDTO;
 import com.qizhen.healsphere.web.vo.CreateEntityVO;
+import com.qizhen.healsphere.web.vo.MergeEntityVO;
 import com.qizhen.healsphere.web.vo.UpdateEntityVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -81,9 +82,9 @@ public class EntityController {
             notes = "")
     @RequestMapping(value = "/mergeEntity",method = RequestMethod.POST)
     @ResponseBody
-    public RespDTO<Map<String, Object>> mergeEntity(@RequestBody Long id) {
+    public RespDTO<Map<String, Object>> mergeEntity(@RequestBody MergeEntityVO entityVO) {
 
-        Map<String, Object> entity = entityService.findEntityById(id);
+        Map<String, Object> entity = entityService.mergeEntity(entityVO);
         return RespDTO.onSuc(entity);
     }
 }

+ 3 - 1
src/main/java/com/qizhen/healsphere/web/dto/GNodeDTO.java

@@ -20,9 +20,10 @@ public class GNodeDTO {
     private String symbol;
     private Integer symbolSize;
     private Map<String, Object> properties;
+    private Map<String, Object> itemStyle;
     private Long nodeId;
 
-    public GNodeDTO(String type, Integer category, String label, Long name, String symbol, Integer symbolSize, Map<String, Object> properties,Long id) {
+    public GNodeDTO(String type, Integer category, String label, Long name, String symbol, Integer symbolSize, Map<String, Object> properties,Long id,Map<String, Object> itemStyle) {
         this.type = type;
         this.category = category;
         this.label = label;
@@ -31,5 +32,6 @@ public class GNodeDTO {
         this.symbolSize = symbolSize;
         this.properties = properties;
         this.nodeId = id;
+        this.itemStyle = itemStyle;
     }
 }

+ 0 - 1
src/main/java/com/qizhen/healsphere/web/vo/MergeEntityVO.java

@@ -14,5 +14,4 @@ public class MergeEntityVO {
     private String secondLabel;
     private String newName;
     private String newLabel;
-    private Map<String,Object> newType;
 }