1. 调整谱查询调试接口

topo_dev
xueqingkun 5 months ago
parent 1706c3c326
commit f18e619ff6

@ -1,8 +1,10 @@
package com.supervision.neo4j.service;
import cn.hutool.core.lang.Pair;
import com.supervision.common.domain.R;
import com.supervision.neo4j.domain.CaseNode;
import com.supervision.neo4j.domain.Rel;
import com.supervision.neo4j.dto.WebRelDTO;
import org.neo4j.driver.Record;
import com.supervision.police.vo.GraphReqVO;
@ -44,6 +46,9 @@ public interface Neo4jService {
*/
R<?> getCaseGraph(GraphReqVO graphReqVO);
Pair<List<WebRelDTO>, List<Map<String, String>>> mergeRecord(List<Map<String, String>> nodes, List<WebRelDTO> relDTOS);
/**
*
*

@ -1,5 +1,6 @@
package com.supervision.neo4j.service.impl;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
@ -325,15 +326,19 @@ public class Neo4jServiceImpl implements Neo4jService {
(existing, replacement) -> existing)) // 如果有重复 ID保留第一个
.values());
// 节点和关系合并
Map<String, NodeMapRecord> nodeRecordMap = electNodeRecord(distinctNodes);
list = mergerWebRel(list, nodeRecordMap);
nodes = mergeNode(nodes, nodeRecordMap);
Pair<List<WebRelDTO>, List<Map<String, String>>> pair = mergeRecord(distinctNodes, list);
map.put("list", list);
map.put("nodes", nodes);
map.put("list", pair.getKey());
map.put("nodes", pair.getValue());
return R.ok(map);
}
public Pair<List<WebRelDTO>, List<Map<String, String>>> mergeRecord(List<Map<String, String>> nodes, List<WebRelDTO> relDTOS) {
Map<String, NodeMapRecord> nodeRecordMap = electNodeRecord(nodes);
return Pair.of(mergerWebRel(relDTOS, nodeRecordMap), mergeNode(nodes, nodeRecordMap));
}
@Override
public R<?> getNodeAndRelationListByCaseId(String picType, String caseId) {
Map<String, Set<String>> map = new HashMap<>();

@ -427,7 +427,7 @@ public class ModelIndexServiceImpl extends ServiceImpl<ModelIndexMapper, ModelIn
Map<String, Object> parameters = new HashMap<>();
parameters.put("caseId", graphDebugDTO.getCaseId());
if (null != casePerson){
parameters.put("lawActor", casePerson.getId());
parameters.put("lawActor", casePerson.getName());
}
// 执行查询语句
@ -444,8 +444,10 @@ public class ModelIndexServiceImpl extends ServiceImpl<ModelIndexMapper, ModelIn
graphDebugResVO.setRecordTitleList(records.get(0).keys());
}
graphDebugResVO.setRecordList(mapRecords(records));
graphDebugResVO.setGraphRelList(generateRelations(records));
graphDebugResVO.setGraphNodeList(generateNodes(records));
Pair<List<WebRelDTO>, List<Map<String, String>>> pair = this.neo4jService.mergeRecord(generateNodes(records), generateRelations(records));
graphDebugResVO.setGraphRelList(pair.getKey());
graphDebugResVO.setGraphNodeList(pair.getValue());
// 尝试转换为图形数据
return graphDebugResVO;
@ -481,16 +483,17 @@ public class ModelIndexServiceImpl extends ServiceImpl<ModelIndexMapper, ModelIn
}
}
return graphRelList;
Set<String> relIdSet = new HashSet<>();
return graphRelList.stream().filter(map -> relIdSet.add(StrUtil.join("-", map.getSource(), map.getTarget()))).toList();
}
private List<Map<String, Object>> generateNodes(List<Record> records) {
private List<Map<String, String>> generateNodes(List<Record> records) {
List<Map<String, Object>> graphNodeList = records.stream().flatMap(record -> record.values().stream())
List<Map<String, String>> graphNodeList = records.stream().flatMap(record -> record.values().stream())
.filter(value -> value.type().name().equals("NODE")).map(value ->{
Map<String, Object> map = new HashMap<>();
Map<String, String> map = new HashMap<>();
Node node = value.asNode();
map.put("id", String.valueOf(node.id()));
map.put("name", node.get("name").asString());
@ -518,7 +521,7 @@ public class ModelIndexServiceImpl extends ServiceImpl<ModelIndexMapper, ModelIn
List<Record> extendRecord = neo4jService.executeCypher("MATCH (n) where id(n) in $nodeIds return n", Map.of("nodeIds", nodeIds));
if (CollUtil.isNotEmpty(extendRecord)){
graphNodeList.addAll(extendRecord.stream().flatMap(r -> r.values().stream()).map(r -> {
Map<String, Object> map = new HashMap<>();
Map<String, String> map = new HashMap<>();
map.put("id", String.valueOf(r.asNode().id()));
map.put("name", r.get("name").asString());
map.put("entityName", r.get("name").asString());
@ -528,7 +531,7 @@ public class ModelIndexServiceImpl extends ServiceImpl<ModelIndexMapper, ModelIn
}
Set<String> nodeIdSet = new HashSet<>();
return graphNodeList.stream().filter(map -> nodeIdSet.add((String) map.get("id"))).toList();
return graphNodeList.stream().filter(map -> nodeIdSet.add(map.get("id"))).toList();
}
private List<Map<String, Object>> mapRecords(List<Record> records) {

@ -34,6 +34,6 @@ public class GraphDebugResVO {
/**
* name/entityName/id
*/
private List<Map<String, Object>> graphNodeList;
private List<Map<String, String>> graphNodeList;
}

Loading…
Cancel
Save