Explorar el Código

Merge remote-tracking branch 'origin/master'

SGTY hace 5 meses
padre
commit
34106636b9

+ 5 - 5
pom.xml

@@ -62,11 +62,11 @@
             <version>2.1.1</version>
         </dependency>
 
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
-            <version>3.0.0</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.baomidou</groupId>-->
+<!--            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>-->
+<!--            <version>3.0.0</version>-->
+<!--        </dependency>-->
 
         <dependency>
             <groupId>mysql</groupId>

+ 1 - 1
src/main/java/com/qizhen/healsphere/config/MybatisPlusConfigurer.java

@@ -13,7 +13,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
  */
 @EnableTransactionManagement
 @Configuration
-@MapperScan("com.qizhen.healsphere.mapper*")//这个注解,作用相当于下面的@Bean MapperScannerConfigurer,2者配置1份即可
+@MapperScan("com.qizhen.healsphere.repository.mapper*")//这个注解,作用相当于下面的@Bean MapperScannerConfigurer,2者配置1份即可
 public class MybatisPlusConfigurer {
 
     /**

+ 33 - 0
src/main/java/com/qizhen/healsphere/config/MysqlConfig.java

@@ -0,0 +1,33 @@
+package com.qizhen.healsphere.config;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+
+import javax.sql.DataSource;
+
+@Configuration
+@MapperScan(basePackages = "com.qizhen.healsphere.repository.mapper")
+public class MysqlConfig {
+
+    @Bean(name = "mysqlDataSource")
+    @ConfigurationProperties(prefix = "spring.datasource")
+    public DataSource dataSource() {
+        return DataSourceBuilder.create().build();
+    }
+
+    @Bean
+    public SqlSessionFactory sqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {
+        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
+        sqlSessionFactoryBean.setDataSource(dataSource);
+        // 设置MyBatis的XML映射文件路径
+        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/mysql/*.xml"));
+        return sqlSessionFactoryBean.getObject();
+    }
+}

+ 30 - 23
src/main/java/com/qizhen/healsphere/repository/mapper/KgMapper.java

@@ -1,23 +1,30 @@
-package com.qizhen.healsphere.repository.mapper;
-
-import com.qizhen.healsphere.web.dto.GraphDTO;
-import com.qizhen.healsphere.web.param.KgQuery;
-
-import java.util.List;
-
-/**
- * <p>
- * Mapper 接口
- * </p>
- *
- * @author gaodm
- * @since 2018-08-02
- */
-public interface KgMapper {
-
-    List<GraphDTO> getGraph(KgQuery kgQuery);
-
-//    @Query("MATCH (n:`{0}`)-[r]->(m) where n.name = {1} RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName" +
-//            "        ORDER BY rType")
-//    List<GraphDTO> getGraphNew(String labelName, String inputStr);
-}
+//package com.qizhen.healsphere.repository.mapper;
+//
+//import com.qizhen.healsphere.web.dto.GraphDTO;
+//import com.qizhen.healsphere.web.param.KgQuery;
+//import org.springframework.data.neo4j.repository.Neo4jRepository;
+//
+//import java.util.List;
+//
+///**
+// * <p>
+// * Mapper 接口
+// * </p>
+// *
+// * @author gaodm
+// * @since 2018-08-02
+// */
+//public interface KgMapper extends Neo4jRepository<GraphDTO, Long> {
+//
+////    List<GraphDTO> getGraph(KgQuery kgQuery);
+//
+////    @Query("MATCH (n:`{0}`)-[r]->(m) where n.name = {1} RETURN head(Labels(n)) as sLabel,n.name as sName,Type (r) as rType, head(Labels(m)) as eLabel,m.name as eName" +
+////            "        ORDER BY rType")
+////    List<GraphDTO> getGraphNew(String labelName, String inputStr);
+//
+//    // MATCH (n:${labelName})-[r]->(m)
+//    //        where n.name = #{inputStr}
+//    //        OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in ["疾病","症状","药品通用名","手术和操作","实验室检查","辅助检查"]
+//    //        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
+//}

+ 133 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/BaseNodeRepository.java

@@ -0,0 +1,133 @@
+package com.qizhen.healsphere.repository.neo4j;
+
+import org.neo4j.driver.types.Node;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.neo4j.core.Neo4jClient;
+import org.springframework.stereotype.Repository;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Repository
+public class BaseNodeRepository {
+
+    @Autowired
+    private Neo4jClient neo4jClient;
+
+    public BaseNodeRepository(Neo4jClient neo4jClient) {
+        this.neo4jClient = neo4jClient;
+    }
+
+    public Map<String,Object> findNodeByName(String label,String name) {
+        String query = String.format("MATCH (n:`%s`) WHERE n.name = $name and n.is_deleted = 'N' RETURN n", label);
+        Optional<Map> optionalMap = neo4jClient.query(query)
+                .bind(name).to("name")
+                .fetchAs(Map.class)
+                .mappedBy((typeSystem, record) -> {
+                    Node node = record.get("n").asNode();
+
+                    Map<String, Object> result = new HashMap<>();
+                    result.put("id", node.id());
+                    result.put("labels", node.labels()); // 获取节点的标签
+                    result.put("properties", node.asMap()); // 获取节点的属性
+
+                    return result;
+                }).one();
+        return (Map<String, Object>) optionalMap.orElse(null);
+
+    }
+
+    public Map<String,Object> findNodeById(Long id) {
+        String query = "MATCH (n) WHERE id(n) = $nodeId and n.is_deleted = 'N' RETURN n";
+        Optional<Map> optionalMap = neo4jClient.query(query)
+                .bind(id).to("nodeId")
+                .fetchAs(Map.class)
+                .mappedBy((typeSystem, record) -> {
+                    Node node = record.get("n").asNode();
+
+                    Map<String, Object> result = new HashMap<>();
+                    result.put("id", node.id());
+                    result.put("labels", node.labels()); // 获取节点的标签
+                    result.put("properties", node.asMap()); // 获取节点的属性
+
+                    return result;
+                }).one();
+        return (Map<String, Object>) optionalMap.orElse(null);
+
+    }
+
+    public List<Map<String,Object>> findNodeListByName(String label, String name) {
+        String query = String.format("MATCH (n:`%s`) WHERE n.name =~ %s$name%s and n.is_deleted = 'N' RETURN n", label,".*",".*");
+        Collection<Map> mapCollection = neo4jClient.query(query)
+                .bind(name).to("name")
+                .fetchAs(Map.class)
+                .mappedBy((typeSystem, record) -> {
+                    Node node = record.get("n").asNode();
+
+                    Map<String, Object> result = new HashMap<>();
+                    result.put("id", node.id());
+                    result.put("labels", node.labels()); // 获取节点的标签
+                    result.put("properties", node.asMap()); // 获取节点的属性
+
+                    return result;
+                }).all();
+        if (mapCollection.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return mapCollection.stream().map(e -> (Map<String, Object>) e).collect(Collectors.toList());
+
+    }
+
+    public Map<String, Object> createNode(String label, Map<String, Object> properties) {
+        StringBuilder createClause = new StringBuilder();
+        properties.put("is_deleted","N");
+        properties.forEach((key, value) -> createClause.append(key).append(": $").append(key).append(", "));
+
+        // 移除最后的逗号
+        if (createClause.length() > 0) {
+            createClause.setLength(createClause.length() - 2);
+        }
+
+        String query = String.format("CREATE (n:`%s` { %s }) RETURN n", label, createClause);
+
+        return (Map<String, Object>) neo4jClient.query(query)
+                .bindAll(properties)
+                .fetchAs(Map.class).mappedBy((typeSystem, record) -> {
+                    Node node = record.get("n").asNode();
+
+                    Map<String, Object> result = new HashMap<>();
+                    result.put("id", node.id());
+                    result.put("labels", node.labels()); // 获取节点的标签
+                    result.put("properties", node.asMap()); // 获取节点的属性
+
+                    return result;
+                }).one().orElse(null);
+    }
+
+    public Map<String, Object> updateNode(Long nodeId, String name) {
+
+        String query = "MATCH (n) WHERE id(n) = $nodeId SET n.name=$name RETURN n";
+
+        return neo4jClient.query(query)
+                .bind(nodeId).to("nodeId")
+                .bind(name).to("name")
+                .fetchAs(Map.class).mappedBy((typeSystem, record) -> {
+                    Node node = record.get("n").asNode();
+
+                    Map<String, Object> result = new HashMap<>();
+                    result.put("id", node.id());
+                    result.put("labels", node.labels()); // 获取节点的标签
+                    result.put("properties", node.asMap()); // 获取节点的属性
+
+                    return result;
+                }).one().orElse(null);
+    }
+
+    public void deleteNode(Long nodeId) {
+        String query = "MATCH (n) WHERE id(n) = $nodeId SET n.is_deleted = 'Y'";
+
+        neo4jClient.query(query)
+                .bind(nodeId).to("nodeId")
+                .run();
+    }
+}

+ 92 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/BasePropertyRepository.java

@@ -0,0 +1,92 @@
+package com.qizhen.healsphere.repository.neo4j;
+
+import org.neo4j.driver.types.Node;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.neo4j.core.Neo4jClient;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+@Repository
+public class BasePropertyRepository {
+
+    @Autowired
+    private Neo4jClient neo4jClient;
+
+    public BasePropertyRepository(Neo4jClient neo4jClient) {
+        this.neo4jClient = neo4jClient;
+    }
+
+    public Map<String,Object> createProperty(String label, Long nodeId, Map<String, Object> properties) {
+        StringBuilder setClause = new StringBuilder();
+        properties.forEach((key, value) -> setClause.append("n.").append(key).append(" = $").append(key).append(", "));
+
+        // 移除最后的逗号
+        if (setClause.length() > 0) {
+            setClause.setLength(setClause.length() - 2);
+        }
+
+        String query = String.format("MATCH (n:`%s`) WHERE id(n) = $nodeId SET %s RETURN n", label, setClause);
+
+        Optional<Map> optionalMap = neo4jClient.query(query)
+                .bindAll(properties)
+                .bind(nodeId).to("nodeId")
+                .fetchAs(Map.class)
+                .mappedBy((typeSystem, record) -> {
+                    Node node = record.get("n").asNode();
+
+                    Map<String, Object> result = new HashMap<>();
+                    result.put("id", node.id());
+                    result.put("labels", node.labels()); // 获取节点的标签
+                    result.put("properties", node.asMap()); // 获取节点的属性
+
+                    return result;
+                }).one();
+        return (Map<String, Object>) optionalMap.orElse(null);
+    }
+
+    public Map<String,Object> deleteProperty(String label, Long nodeId,String propertyName) {
+        String query = String.format("MATCH (n:`%s`) WHERE id(n) = $nodeId REMOVE n.%s RETURN n", label,propertyName);
+
+        Optional<Map> optionalMap = neo4jClient.query(query)
+                .bind(nodeId).to("nodeId")
+//                .bind(propertyName).to("propertyName")
+                .fetchAs(Map.class)
+                .mappedBy((typeSystem, record) -> {
+                    Node node = record.get("n").asNode();
+
+                    Map<String, Object> result = new HashMap<>();
+                    result.put("id", node.id());
+                    result.put("labels", node.labels()); // 获取节点的标签
+                    result.put("properties", node.asMap()); // 获取节点的属性
+
+                    return result;
+                }).one();
+        return (Map<String, Object>) optionalMap.orElse(null);
+    }
+
+    public Map<String,Object> updateProperty(String label,Long nodeId,String oldPropertyName,String newPropertyName,String newPropertyValue) {
+        String query = String.format("MATCH (n:`%s`) WHERE id(n) = $nodeId REMOVE n.%s " +
+                "SET n.%s = $newPropertyValue RETURN n", label,oldPropertyName,newPropertyName);
+        Optional<Map> optionalMap = neo4jClient.query(query)
+                .bind(nodeId).to("nodeId")
+//                .bind(oldPropertyName).to("oldPropertyName")
+//                .bind(newPropertyName).to("newPropertyName")
+                .bind(newPropertyValue).to("newPropertyValue")
+                .fetchAs(Map.class)
+                .mappedBy((typeSystem, record) -> {
+                    Node node = record.get("n").asNode();
+
+                    Map<String, Object> result = new HashMap<>();
+                    result.put("id", node.id());
+                    result.put("labels", node.labels()); // 获取节点的标签
+                    result.put("properties", node.asMap()); // 获取节点的属性
+
+                    return result;
+                }).one();
+        return (Map<String, Object>) optionalMap.orElse(null);
+
+    }
+}

+ 82 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/BaseRelationshipRepository.java

@@ -0,0 +1,82 @@
+package com.qizhen.healsphere.repository.neo4j;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.neo4j.core.Neo4jClient;
+import org.springframework.stereotype.Repository;
+
+import java.util.*;
+
+@Repository
+public class BaseRelationshipRepository {
+
+    @Autowired
+    private Neo4jClient neo4jClient;
+
+    public BaseRelationshipRepository(Neo4jClient neo4jClient) {
+        this.neo4jClient = neo4jClient;
+    }
+
+    public void createRelationship(String startLabel, Long startId, String endLabel, Long endId, String relationshipType, Map<String, Object> properties) {
+        StringBuilder setClause = new StringBuilder();
+        properties.forEach((key, value) -> setClause.append("r.").append(key).append(" = $").append(key).append(", "));
+
+        if (setClause.length() > 0) {
+            setClause.setLength(setClause.length() - 2);
+        }
+
+        String query = String.format(
+                "MATCH (a:`%s`), (b:`%s`) WHERE id(a) = $startId AND id(b) = $endId " +
+                        "CREATE (a)-[r:`%s`]->(b) " +
+                        "SET %s RETURN r",
+                startLabel, endLabel, relationshipType, setClause
+        );
+
+        neo4jClient.query(query)
+                .bind(startId).to("startId")
+                .bind(endId).to("endId")
+                .bindAll(properties)
+                .run();
+    }
+
+    public void updateRelationship(String oldRelationshipType, String newRelationshipType) {
+
+        String query = String.format(
+                "MATCH (a)-[r:`%s`]->(b) " +
+                        "CREATE (a)-[new_r:`%s`]->(b) " +
+                        "SET new_r += r " +
+                        "DELETE r",
+                oldRelationshipType, newRelationshipType
+        );
+
+        neo4jClient.query(query)
+                .run();
+    }
+
+    public List<String> findRelationshipNames(String name) {
+
+        String query = "match ()-[r]-() where type(r) contains $name return distinct type(r)";
+
+        Collection<String> collection = neo4jClient.query(query)
+                .bind(name).to("name")
+                .fetchAs(String.class)
+                .all();
+        if (collection.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return new ArrayList<>(collection);
+    }
+
+
+
+    public void deleteRelationship(String startLabel, Long startId, String endLabel, Long endId, String relationshipType) {
+        String query = String.format(
+                "MATCH (a:`%s`)-[r:`%s`]->(b:`%s`) WHERE id(a) = $startId AND id(b) = $endId DELETE r",
+                startLabel, relationshipType, endLabel
+        );
+
+        neo4jClient.query(query)
+                .bind(startId).to("startId")
+                .bind(endId).to("endId")
+                .run();
+    }
+}

+ 1 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/DiseaseRepository.java

@@ -3,6 +3,7 @@ package com.qizhen.healsphere.repository.neo4j;
 
 import com.qizhen.healsphere.repository.neo4j.entity.Disease;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
+import org.springframework.data.neo4j.repository.query.Query;
 import org.springframework.stereotype.Repository;
 
 @Repository

+ 9 - 0
src/main/java/com/qizhen/healsphere/service/BaseNodeService.java

@@ -0,0 +1,9 @@
+package com.qizhen.healsphere.service;
+
+import java.util.Map;
+
+public interface BaseNodeService {
+
+
+    public Map<String,Object> findNode(String label, String name);
+}

+ 0 - 2
src/main/java/com/qizhen/healsphere/service/PresetInfoService.java

@@ -1,6 +1,5 @@
 package com.qizhen.healsphere.service;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qizhen.healsphere.repository.mapper.entity.PresetInfo;
 
@@ -12,7 +11,6 @@ import com.qizhen.healsphere.repository.mapper.entity.PresetInfo;
  * @author gaodm
  * @since 2020-03-31
  */
-@DS("mysql")
 public interface PresetInfoService extends IService<PresetInfo> {
 
 }

+ 20 - 0
src/main/java/com/qizhen/healsphere/service/impl/BaseNodeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qizhen.healsphere.service.impl;
+
+import com.qizhen.healsphere.repository.neo4j.BaseNodeRepository;
+import com.qizhen.healsphere.service.BaseNodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+@Service
+public class BaseNodeServiceImpl implements BaseNodeService {
+
+    @Autowired
+    BaseNodeRepository nodeRepository;
+
+    @Override
+    public Map<String, Object> findNode(String label, String name) {
+        return nodeRepository.findNodeByName(label, name);
+    }
+}

+ 20 - 3
src/main/java/com/qizhen/healsphere/service/impl/KgServiceImpl.java

@@ -1,13 +1,18 @@
 package com.qizhen.healsphere.service.impl;
 
 import com.qizhen.healsphere.web.dto.GraphDTO;
-import com.qizhen.healsphere.repository.mapper.KgMapper;
+//import com.qizhen.healsphere.repository.mapper.KgMapper;
 import com.qizhen.healsphere.service.KgService;
 import com.qizhen.healsphere.web.param.KgQuery;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.neo4j.core.Neo4jOperations;
+import org.springframework.data.neo4j.core.Neo4jTemplate;
+import org.springframework.data.neo4j.repository.query.QueryFragmentsAndParameters;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -19,11 +24,23 @@ import java.util.List;
  */
 @Service
 public class KgServiceImpl implements KgService {
+//    @Autowired
+//    private KgMapper kgMapper;
+
     @Autowired
-    private KgMapper kgMapper;
+    private Neo4jTemplate neo4jTemplate;
 
     @Override
     public List<GraphDTO> getGraph(KgQuery kgQuery){
-        return kgMapper.getGraph(kgQuery);
+        Map<String,Object> map = new HashMap<>();
+        map.put("inputStr",kgQuery.getInputStr());
+        String cypherQuery = "MATCH (n:" + kgQuery.getLabelName() + ")-[r]->(m)\n" +
+                "            where n.name = $inputStr\n" +
+                "            OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in [\"疾病\",\"症状\",\"药品通用名\",\"手术和操作\",\"实验室检查\",\"辅助检查\"]\n" +
+                "            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\n" +
+                "            ORDER BY rType";
+        QueryFragmentsAndParameters parameters = new QueryFragmentsAndParameters(cypherQuery,map);
+
+        return neo4jTemplate.toExecutableQuery(GraphDTO.class,parameters).getResults();
     }
 }

+ 27 - 0
src/main/java/com/qizhen/healsphere/web/BaseNodeController.java

@@ -0,0 +1,27 @@
+package com.qizhen.healsphere.web;
+
+import com.qizhen.healsphere.service.BaseNodeService;
+import com.qizhen.healsphere.web.dto.RespDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@Controller
+@RequestMapping("/base")
+public class BaseNodeController {
+
+    @Autowired
+    BaseNodeService baseNodeService;
+
+    @RequestMapping(value = "/findNode",method = RequestMethod.GET)
+    @ResponseBody
+    public RespDTO<Map<String,Object>> findNode(@RequestParam("label") String label,@RequestParam("name") String name) {
+
+        Map<String, Object> node = baseNodeService.findNode(label, name);
+        return RespDTO.onSuc(node);
+    }
+
+
+}

+ 7 - 7
src/main/java/com/qizhen/healsphere/web/KgController.java

@@ -11,10 +11,8 @@ import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 
@@ -23,7 +21,7 @@ import javax.validation.Valid;
  * @author: gaodm
  * @time: 2018/8/30 10:12
  */
-@RestController
+@Controller
 @RequestMapping("/kg")
 @Api(value = "朗通知识图谱API", tags = { "朗通知识图谱API" })
 @SuppressWarnings("unchecked")
@@ -35,7 +33,8 @@ public class KgController {
     private KgFacade kgFacade;
 
     @ApiOperation(value = "获取图谱", notes = "获取图谱")
-    @PostMapping("/getGraph")
+    @RequestMapping(value = "/getGraph", method = RequestMethod.POST)
+    @ResponseBody
     public RespDTO<GraphLabelDTO> getGraph(@RequestBody @Valid KgQuery kgQuery) {
         return RespDTO.onSuc(kgFacade.getGraphFac(kgQuery));
     }
@@ -48,7 +47,8 @@ public class KgController {
                     "(手术和操作:t:4,st:0)<br>" +
                     "(实验室检查:t:5,st:0)<br>" +
                     "(辅助检查:t:6,st:0)<br>")
-    @PostMapping("/getTree")
+    @RequestMapping(value = "/getTree", method = RequestMethod.POST)
+    @ResponseBody
     @Cacheable(value = KGTREECACHE, key = "'kgtree:t_' + #kgTree.type + '_st_' + #kgTree.subType")
     public RespDTO<TreeDTO> getTree(@RequestBody @Valid KgTree kgTree) {
         log.info("获取树形分类缓存成功");

+ 20 - 16
src/main/resources/application.yml

@@ -9,20 +9,24 @@ swagger:
 
 spring:
   datasource:
-    dynamic:
-      primary: neo4j
-      # 数据库配置
-      datasource:
-        neo4j:
-          driver-class-name: org.neo4j.jdbc.Driver
-          url: jdbc:neo4j:http://173.18.12.194:7474
-          username: neo4j
-          password: 12345678
-        mysql:
-          driver-class-name: com.mysql.cj.jdbc.Driver
-          url: jdbc:mysql://173.18.12.194:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
-          username: root
-          password: dsYun8!@#
+#    dynamic:
+#      primary: neo4j
+#      # 数据库配置
+#      datasource:
+#        neo4j:
+#          driver-class-name: org.neo4j.jdbc.Driver
+#          url: jdbc:neo4j:http://173.18.12.194:7474
+#          username: neo4j
+#          password: 12345678
+#        mysql:
+#          driver-class-name: com.mysql.cj.jdbc.Driver
+#          url: jdbc:mysql://173.18.12.194:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+#          username: root
+#          password: dsYun8!@#
+    driver-class-name: com.mysql.jdbc.Driver
+    url: jdbc:mysql://173.18.12.194:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+    username: root
+    password: dsYun8!@#
   neo4j:
     uri: bolt://172.16.8.59:7687
     authentication:
@@ -31,14 +35,14 @@ spring:
 
 #mybatis
 mybatis:
-  type-aliases-package: com.qizhen.healsphere.repository.entity
+  type-aliases-package: com.qizhen.healsphere.repository.mapper.entity
   mapper-locations: classpath:mapper/*.xml
 
 #mybatis-plus
 mybatis-plus:
   mapper-locations: classpath:/mapper/*Mapper.xml
   #实体扫描,多个package用逗号或者分号分隔
-  typeAliasesPackage: com.qizhen.healsphere.entity
+  typeAliasesPackage: com.qizhen.healsphererepository.mapper.entity
   global-config:
     #刷新mapper 调试神器
     db-config:

+ 0 - 27
src/main/resources/mapper/KgMapper.xml

@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.qizhen.healsphere.repository.mapper.KgMapper">
-
-    <resultMap id="GraphResultMap" type="com.qizhen.healsphere.web.dto.GraphDTO">
-        <result column="sName" property="name"/>
-        <result column="sLabel" property="label"/>
-        <collection property="eNodeRSDTOS" ofType="com.qizhen.healsphere.web.dto.BaseNodeRSDTO">
-            <result column="rType" property="rType"/>
-            <collection property="eNodeDTOS" ofType="com.qizhen.healsphere.web.dto.NextNodeDTO">
-                <result column="eName" property="name"/>
-                <result column="eLabel" property="label"/>
-                <result column="pCount" property="pCount"/>
-            </collection>
-        </collection>
-    </resultMap>
-
-    <select id="getGraph" parameterType='com.qizhen.healsphere.web.param.KgQuery' resultMap="GraphResultMap">
-        MATCH (n:${labelName})-[r]->(m)
-        where n.name = #{inputStr}
-        OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in ["疾病","症状","药品通用名","手术和操作","实验室检查","辅助检查"]
-        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
-    </select>
-
-</mapper>

src/main/resources/mapper/PresetInfoMapper.xml → src/main/resources/mapper/mysql/PresetInfoMapper.xml


+ 27 - 0
src/main/resources/mapper/neo4j/KgMapper.xml

@@ -0,0 +1,27 @@
+<!--<?xml version="1.0" encoding="UTF-8"?>-->
+<!--<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"-->
+<!--        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">-->
+<!--<mapper namespace="com.qizhen.healsphere.repository.mapper.KgMapper">-->
+
+<!--    <resultMap id="GraphResultMap" type="com.qizhen.healsphere.web.dto.GraphDTO">-->
+<!--        <result column="sName" property="name"/>-->
+<!--        <result column="sLabel" property="label"/>-->
+<!--        <collection property="eNodeRSDTOS" ofType="com.qizhen.healsphere.web.dto.BaseNodeRSDTO">-->
+<!--            <result column="rType" property="rType"/>-->
+<!--            <collection property="eNodeDTOS" ofType="com.qizhen.healsphere.web.dto.NextNodeDTO">-->
+<!--                <result column="eName" property="name"/>-->
+<!--                <result column="eLabel" property="label"/>-->
+<!--                <result column="pCount" property="pCount"/>-->
+<!--            </collection>-->
+<!--        </collection>-->
+<!--    </resultMap>-->
+
+<!--    <select id="getGraph" parameterType='com.qizhen.healsphere.web.param.KgQuery' resultMap="GraphResultMap">-->
+<!--        MATCH (n:${labelName})-[r]->(m)-->
+<!--        where n.name = #{inputStr}-->
+<!--        OPTIONAL MATCH p=(m)-[]->(o) where head(Labels(m)) in ["疾病","症状","药品通用名","手术和操作","实验室检查","辅助检查"]-->
+<!--        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-->
+<!--    </select>-->
+
+<!--</mapper>-->

+ 70 - 332
src/test/java/com/qizhen/healsphere/DiseaseTests.java

@@ -1,14 +1,9 @@
 package com.qizhen.healsphere;
 
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
-import com.qizhen.healsphere.repository.neo4j.*;
-import com.qizhen.healsphere.repository.neo4j.entity.*;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import com.qizhen.healsphere.repository.neo4j.BaseNodeRepository;
+import com.qizhen.healsphere.repository.neo4j.BasePropertyRepository;
+import com.qizhen.healsphere.repository.neo4j.BaseRelationshipRepository;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,365 +11,108 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @RunWith(SpringRunner.class)
 @ComponentScan(basePackages = {"com.qizhen.healsphere.model","com.qizhen.healsphere.repository"})
 @SpringBootTest
 public class DiseaseTests {
-    @Autowired(required = false)
-    DiseaseRepository diseaseRepository;
-    @Autowired(required = false)
-    ZbyyRepository zbyyRepository;
-    @Autowired(required = false)
-    ZczzbfbzRepository zczzbfbzRepository;
-    @Autowired(required = false)
-    ZdbzRepository zdbzRepository;
-    @Autowired(required = false)
-    ZdxgjcRepository zdxgjcRepository;
-    @Autowired(required = false)
-    ZlcsRepository zlcsRepository;
-    @Autowired(required = false)
-    ZlczRepository zlczRepository;
-    @Autowired(required = false)
-    ZlfaRepository zlfaRepository;
-    @Autowired(required = false)
-    ZlfsRepository zlfsRepository;
-    @Autowired(required = false)
-    ZlmbRepository zlmbRepository;
-    @Autowired(required = false)
-    ZlqxRepository zlqxRepository;
-    @Autowired(required = false)
-    ZlRepository zlRepository;
-    @Autowired(required = false)
-    ZlxgjcRepository zlxgjcRepository;
-    @Autowired(required = false)
-    ZlyjRepository zlyjRepository;
-    @Autowired(required = false)
-    ZlywRepository zlywRepository;
-    @Autowired(required = false)
-    ZlyzRepository zlyzRepository;
-    @Autowired(required = false)
-    ZzRepository zzRepository;
+    @Autowired
+    BaseNodeRepository baseNodeRepository;
+
+    @Autowired
+    BaseRelationshipRepository baseRelationshipRepository;
+
+    @Autowired
+    BasePropertyRepository basePropertyRepository;
 
 
     @Test
     public void contextLoads() {}
 
     @Test
-    public void testSaveDiseaseFromExcel() {
-
-        String urlExcelPath = "D:\\neo4j需要处理的数据\\心血管科.xlsx"; // 包含URL的Excel文件路径
-        // 读取URL并检查文章内容
-        try (InputStream urlInputStream = Files.newInputStream(Paths.get(urlExcelPath))) {
-            Workbook urlWorkbook = new XSSFWorkbook(urlInputStream);
-            Sheet urlSheet = urlWorkbook.getSheetAt(0);
-
-            // 创建新列来存储包含的疾病名称和ID
-            for (int rowNum = 1; rowNum <= urlSheet.getLastRowNum(); rowNum++) {
-//                if (rowNum != 17){
-//                    continue;
-//                }
-                Row row = urlSheet.getRow(rowNum);
-                String diseaseName = row.getCell(0).getStringCellValue().trim();
-
-                String propertyName = row.getCell(1).getStringCellValue().trim();
-                String propertyValue = row.getCell(2).getStringCellValue().replace("\\","").trim();
-                String icd10Value = row.getCell(4).getStringCellValue().trim();
-
-                try {
-                    JSONArray jsonArray = new JSONArray(icd10Value);
-                    JSONObject icd10Obj = JSONUtil.parseObj(jsonArray.get(0));
-
-                    Disease disease = diseaseRepository.findByName(diseaseName);
-                    if (disease == null) {
-                        disease = new Disease(diseaseName,icd10Obj.getStr("code"));
-                    }
-
-                    if ("诊疗操作".equals(propertyName)) {
-                        Set<Zlcz> zlczSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlczObj = JSONUtil.parseObj(object);
-                            Zlcz zlcz = new Zlcz(zlczObj.getStr("name"),zlczObj.getStr("description"));
-                            zlczSet.add(zlcz);
-                            disease.addZlcz(zlcz);
-                        }
-                        zlczRepository.saveAll(zlczSet);
-                    }
-
-                    if ("治疗方案".equals(propertyName)) {
-                        Set<Zlfa> zlfaSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlfaObj = JSONUtil.parseObj(object);
-                            Zlfa zlfa = new Zlfa(zlfaObj.getStr("name"),zlfaObj.getStr("description"));
-                            zlfaSet.add(zlfa);
-                            disease.addZlfa(zlfa);
-                        }
-                        zlfaRepository.saveAll(zlfaSet);
-                    }
-
-                    if ("诊断标准".equals(propertyName)) {
-                        Set<Zdbz> zdbzSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zdbzObj = JSONUtil.parseObj(object);
-                            Zdbz zdbz = new Zdbz(zdbzObj.getStr("name"),zdbzObj.getStr("description"));
-                            zdbzSet.add(zdbz);
-                            disease.addZdbz(zdbz);
-                        }
-                        zdbzRepository.saveAll(zdbzSet);
-                    }
-
-                    if ("治疗目标".equals(propertyName)) {
-                        Set<Zlmb> zlmbSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlmbObj = JSONUtil.parseObj(object);
-                            Zlmb zlmb = new Zlmb(zlmbObj.getStr("name"),zlmbObj.getStr("description"));
-                            zlmbSet.add(zlmb);
-                            disease.addZlmb(zlmb);
-                        }
-                        zlmbRepository.saveAll(zlmbSet);
-                    }
-
-                    if ("治疗方式".equals(propertyName)) {
-                        Set<Zlfs> zlfsSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlfsObj = JSONUtil.parseObj(object);
-                            Zlfs zlfs = new Zlfs(zlfsObj.getStr("name"),zlfsObj.getStr("description"));
-                            zlfsSet.add(zlfs);
-                            disease.addZlfs(zlfs);
-                        }
-                        zlfsRepository.saveAll(zlfsSet);
-                    }
-
-                    if ("治疗相关检查".equals(propertyName)) {
-                        Set<Zlxgjc> zlxhjcSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlxgjcObj = JSONUtil.parseObj(object);
-                            Zlxgjc zlxgjc = new Zlxgjc(zlxgjcObj.getStr("name"),zlxgjcObj.getStr("description"));
-                            zlxhjcSet.add(zlxgjc);
-                            disease.addZlxgjc(zlxgjc);
-                        }
-                        zlxgjcRepository.saveAll(zlxhjcSet);
-                    }
-
-                    if ("致病原因".equals(propertyName)) {
-                        Set<Zbyy> zbyySet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zbyyObj = JSONUtil.parseObj(object);
-                            Zbyy zbyy = new Zbyy(zbyyObj.getStr("name"),zbyyObj.getStr("description"));
-                            zbyySet.add(zbyy);
-                            disease.addZbyy(zbyy);
-                        }
-                        zbyyRepository.saveAll(zbyySet);
-                    }
-
-                    if ("治疗原则".equals(propertyName)) {
-                        Set<Zlyz> zlyzSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlyzObj = JSONUtil.parseObj(object);
-                            Zlyz zlyz = new Zlyz(zlyzObj.getStr("name"),zlyzObj.getStr("description"));
-                            zlyzSet.add(zlyz);
-                            disease.addZlyz(zlyz);
-                        }
-                        zlyzRepository.saveAll(zlyzSet);
-                    }
-
-                    if ("诊疗依据".equals(propertyName)) {
-                        Set<Zlyj> zlyjSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlyjObj = JSONUtil.parseObj(object);
-                            Zlyj zlyj = new Zlyj(zlyjObj.getStr("name"),zlyjObj.getStr("description"));
-                            zlyjSet.add(zlyj);
-                            disease.addZlyj(zlyj);
-                        }
-                        zlyjRepository.saveAll(zlyjSet);
-                    }
-
-                    if ("治疗场所".equals(propertyName)) {
-                        Set<Zlcs> zlcsSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlcsObj = JSONUtil.parseObj(object);
-                            Zlcs zlcs = new Zlcs(zlcsObj.getStr("name"),zlcsObj.getStr("description"));
-                            zlcsSet.add(zlcs);
-                            disease.addZlcs(zlcs);
-                        }
-                        zlcsRepository.saveAll(zlcsSet);
-                    }
-
-                    if ("子类".equals(propertyName)) {
-                        Set<Zl> zlSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlObj = JSONUtil.parseObj(object);
-                            Zl zl = new Zl(zlObj.getStr("name"),zlObj.getStr("description"));
-                            zlSet.add(zl);
-                            disease.addZl(zl);
-                        }
-                        zlRepository.saveAll(zlSet);
-                    }
-
-                    if ("治疗器械".equals(propertyName)) {
-                        Set<Zlqx> zlqxSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlqxObj = JSONUtil.parseObj(object);
-                            Zlqx zlqx = new Zlqx(zlqxObj.getStr("name"),zlqxObj.getStr("description"));
-                            zlqxSet.add(zlqx);
-                            disease.addZlqx(zlqx);
-                        }
-                        zlqxRepository.saveAll(zlqxSet);
-                    }
-
-                    if ("治疗药物".equals(propertyName)) {
-                        Set<Zlyw> zlywSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zlywObj = JSONUtil.parseObj(object);
-                            Zlyw zlyw = new Zlyw(zlywObj.getStr("name"),zlywObj.getStr("description"));
-                            zlywSet.add(zlyw);
-                            disease.addZlyw(zlyw);
-                        }
-                        zlywRepository.saveAll(zlywSet);
-                    }
-
-                    if ("转出重症病房标准".equals(propertyName)) {
-                        Set<Zczzbfbz> zczzbfbzSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zczzbfbzObj = JSONUtil.parseObj(object);
-                            Zczzbfbz zczzbfbz = new Zczzbfbz(zczzbfbzObj.getStr("name"),zczzbfbzObj.getStr("description"));
-                            zczzbfbzSet.add(zczzbfbz);
-                            disease.addZczzbfbz(zczzbfbz);
-                        }
-                        zczzbfbzRepository.saveAll(zczzbfbzSet);
-                    }
-
-                    if ("诊断相关检查".equals(propertyName)) {
-                        Set<Zdxgjc> zdxgjcSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zdxgjcObj = JSONUtil.parseObj(object);
-                            Zdxgjc zdxgjc = new Zdxgjc(zdxgjcObj.getStr("name"),zdxgjcObj.getStr("description"));
-                            zdxgjcSet.add(zdxgjc);
-                            disease.addZdxgjc(zdxgjc);
-                        }
-                        zdxgjcRepository.saveAll(zdxgjcSet);
-                    }
-
-                    if ("症状".equals(propertyName)) {
-                        Set<Zz> zzSet = new HashSet<>();
-                        JSONArray propertyArray = new JSONArray(propertyValue);
-                        for (Object object : propertyArray) {
-                            JSONObject zzObj = JSONUtil.parseObj(object);
-                            Zz zz = new Zz(zzObj.getStr("name"),zzObj.getStr("description"));
-                            zzSet.add(zz);
-                            disease.addZz(zz);
-                        }
-                        zzRepository.saveAll(zzSet);
-                    }
-                    diseaseRepository.save(disease);
-                }catch (Exception e){
-                    System.out.println("当前内容处理报错,行号:" + rowNum + ",diseaseName=" + diseaseName + ",propertyName="+propertyName+",propertyValue="+propertyValue+",icd10Value="+icd10Value);
-                    e.printStackTrace();
-                    continue;
-                }
-            }
-
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+    public void testCrudNodeDemo() {
 
-    }
+        Map<String,Object> map = new HashMap<>();
+        map.put("name","糖尿病");
+        map.put("desc","这属于一种慢性病,尿液含糖量高");
+        map.put("诱因","吃的糖太多了");
+        map.put("治疗方式","打胰岛素");
+        String label = "疾病名称";
+        Map<String, Object> node = baseNodeRepository.createNode(label, map);
+        System.out.println(JSONUtil.toJsonStr(node));
 
-    @Test
-    public void deleteAll() {
-
-        // 调用各个Repository的deleteAll方法
-        diseaseRepository.deleteAll();
-        zbyyRepository.deleteAll();
-        zczzbfbzRepository.deleteAll();
-        zdbzRepository.deleteAll();
-        zdxgjcRepository.deleteAll();
-        zlcsRepository.deleteAll();
-        zlczRepository.deleteAll();
-        zlfaRepository.deleteAll();
-        zlfsRepository.deleteAll();
-        zlmbRepository.deleteAll();
-        zlqxRepository.deleteAll();
-        zlRepository.deleteAll();
-        zlxgjcRepository.deleteAll();
-        zlyjRepository.deleteAll();
-        zlywRepository.deleteAll();
-        zlyzRepository.deleteAll();
-        zzRepository.deleteAll();
-        System.out.println("所有数据删除成功!");
+        Map<String,Object> map1 = new HashMap<>();
+        map1.put("name","尿液泡沫多");
+        map1.put("desc","常见于肾脏不好的患者");
+        String label1 = "主要症状";
+        Map<String, Object> node1 = baseNodeRepository.createNode(label1, map1);
+        System.out.println(JSONUtil.toJsonStr(node1));
 
+//        Map<String,Object> list = baseNodeRepository.findNode(label, "糖尿病");
+//        System.out.println(JSONUtil.toJsonStr(list));
 
-    }
+//        Long id = 24L;
+//        baseNodeRepository.updateNode(label,id,map);
 
+//        list = baseNodeRepository.findNode(label, "糖尿病");
+//        System.out.println(JSONUtil.toJsonStr(list));
 
-    @Test
-    public void testSaveDisease() {
+//        baseNodeRepository.deleteNode(label,id);
 
-        diseaseRepository.deleteAll();
-        Disease disease = new Disease("高血压","l10");
 
-        diseaseRepository.save(disease);
 
     }
 
     @Test
-    public void testSaveZz() {
+    public void testCrudRelationshipDemo() {
 
-//        diseaseRepository.deleteAll();
-        Zz zz1 = new Zz("头晕","111");
-        Zz zz2 = new Zz("目眩","112");
+        String startLabel = "疾病名称";
+        Long startId = 1L;
 
-        zzRepository.save(zz1);
-        zzRepository.save(zz2);
+        String endLabel = "主要症状";
+        Long endId = 2L;
 
-        Disease disease = diseaseRepository.findByName("高血压");
-        disease.addZz(zz1);
-        disease.addZz(zz2);
-        diseaseRepository.save(disease);
+        String relationShipType = "疾病相关主要症状";
 
-    }
+        Map<String,Object> map = new HashMap<>();
 
-    @Test
-    public void testSaveZdbz() {
+        map.put("描述","这是疾病和症状的关系");
 
-        Zdbz zz1 = new Zdbz("收缩压和舒张压标准","收缩压(高压)≥140mmHg,或舒张压(低压)≥90mmHg");
-        Zdbz zz2 = new Zdbz("药物影响","患者在服用降压药物后,虽然血压可能会降至正常范围,但仍应诊断为高血压");
 
-        zdbzRepository.save(zz1);
-        zdbzRepository.save(zz2);
+//        baseNodeRepository.createRelationship(startLabel,startId,endLabel,endId,relationShipType,map);
+
+
+//        baseRelationshipRepository.deleteRelationship(startLabel,startId,endLabel,endId,relationShipType);
+//        List<String> relationshipNames = baseRelationshipRepository.findRelationshipNames("111");
+//        System.out.println(JSONUtil.toJsonStr(relationshipNames));
+
+//        baseRelationshipRepository.updateRelationship("疾病症状之间的关系111","疾病症状之间的关系222333");
+        baseRelationshipRepository.deleteRelationship(startLabel,startId,endLabel,endId,"疾病症状之间的关系222333");
 
-        Disease disease = diseaseRepository.findByName("高血压");
-        disease.addZdbz(zz1);
-        disease.addZdbz(zz2);
-        diseaseRepository.save(disease);
 
     }
 
     @Test
-    public void testFindDisease() {
-        Disease disease = diseaseRepository.findByName("高血压");
-        System.out.println(JSONUtil.toJsonStr(disease));
+    public void testCrudPropertyDemo() {
+
+        String label = "疾病名称";
+        Long nodeId = 1L;
+//        Map<String,Object> map = new HashMap<>();
+//        map.put("prop1","测试属性1");
+//        map.put("prop2","测试属性2");
+
+//        Map<String, Object> objectMap = basePropertyRepository.createProperty(label, nodeId, map);
+//        System.out.println(JSONUtil.toJsonStr(objectMap));
+
+//        Map<String, Object> stringObjectMap = basePropertyRepository.updateProperty(label, nodeId, "prop1", "prop3", "最新的属性");
+//        System.out.println(JSONUtil.toJsonStr(stringObjectMap));
+
+        Map<String, Object> stringObjectMap1 = basePropertyRepository.deleteProperty(label, nodeId, "prop2");
+        System.out.println(JSONUtil.toJsonStr(stringObjectMap1));
+
 
     }