|
@@ -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();
|
|
|
}
|
|
|
}
|