diff --git a/src/main/java/com/supervision/neo4j/service/Neo4jService.java b/src/main/java/com/supervision/neo4j/service/Neo4jService.java index 013531a..2d0f82a 100644 --- a/src/main/java/com/supervision/neo4j/service/Neo4jService.java +++ b/src/main/java/com/supervision/neo4j/service/Neo4jService.java @@ -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>> mergeRecord(List> nodes, List relDTOS); + /** * 查询案件图谱全量节点和关系 * diff --git a/src/main/java/com/supervision/neo4j/service/impl/Neo4jServiceImpl.java b/src/main/java/com/supervision/neo4j/service/impl/Neo4jServiceImpl.java index 3ac1546..362a7a2 100644 --- a/src/main/java/com/supervision/neo4j/service/impl/Neo4jServiceImpl.java +++ b/src/main/java/com/supervision/neo4j/service/impl/Neo4jServiceImpl.java @@ -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 nodeRecordMap = electNodeRecord(distinctNodes); - list = mergerWebRel(list, nodeRecordMap); - nodes = mergeNode(nodes, nodeRecordMap); + Pair, List>> 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>> mergeRecord(List> nodes, List relDTOS) { + Map nodeRecordMap = electNodeRecord(nodes); + + return Pair.of(mergerWebRel(relDTOS, nodeRecordMap), mergeNode(nodes, nodeRecordMap)); + } + @Override public R getNodeAndRelationListByCaseId(String picType, String caseId) { Map> map = new HashMap<>(); diff --git a/src/main/java/com/supervision/police/service/impl/ModelIndexServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ModelIndexServiceImpl.java index 81f6490..b75d984 100644 --- a/src/main/java/com/supervision/police/service/impl/ModelIndexServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ModelIndexServiceImpl.java @@ -427,7 +427,7 @@ public class ModelIndexServiceImpl extends ServiceImpl 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, List>> 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 relIdSet = new HashSet<>(); + return graphRelList.stream().filter(map -> relIdSet.add(StrUtil.join("-", map.getSource(), map.getTarget()))).toList(); } - private List> generateNodes(List records) { + private List> generateNodes(List records) { - List> graphNodeList = records.stream().flatMap(record -> record.values().stream()) + List> graphNodeList = records.stream().flatMap(record -> record.values().stream()) .filter(value -> value.type().name().equals("NODE")).map(value ->{ - Map map = new HashMap<>(); + Map 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 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 map = new HashMap<>(); + Map 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 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> mapRecords(List records) { diff --git a/src/main/java/com/supervision/police/vo/GraphDebugResVO.java b/src/main/java/com/supervision/police/vo/GraphDebugResVO.java index 2d14fc8..f7435ce 100644 --- a/src/main/java/com/supervision/police/vo/GraphDebugResVO.java +++ b/src/main/java/com/supervision/police/vo/GraphDebugResVO.java @@ -34,6 +34,6 @@ public class GraphDebugResVO { /** * 图谱节点数据 name/entityName/id */ - private List> graphNodeList; + private List> graphNodeList; }