From 7f052569466f4af182f741e4c8900f31d37e1df7 Mon Sep 17 00:00:00 2001 From: liu Date: Thu, 8 Aug 2024 16:50:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=B8=89=E5=85=83=E7=BB=84?= =?UTF-8?q?=E6=8F=90=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../police/controller/RecordController.java | 2 +- .../com/supervision/police/dto/ListDTO.java | 2 + .../service/ModelRecordTypeService.java | 2 +- .../impl/ModelRecordTypeServiceImpl.java | 150 +++++++++--------- 4 files changed, 77 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/supervision/police/controller/RecordController.java b/src/main/java/com/supervision/police/controller/RecordController.java index 6befbc6..7c09341 100644 --- a/src/main/java/com/supervision/police/controller/RecordController.java +++ b/src/main/java/com/supervision/police/controller/RecordController.java @@ -96,7 +96,7 @@ public class RecordController { @ApiOperation("将三元组信息保存到知识图谱") @PostMapping("/addNeo4j") public R addNeo4j(@RequestBody ListDTO list) { - return R.ok(modelRecordTypeService.addNeo4j(list.getIds())); + return R.ok(modelRecordTypeService.addNeo4j(list.getIds(),list.getRecordId())); } /** diff --git a/src/main/java/com/supervision/police/dto/ListDTO.java b/src/main/java/com/supervision/police/dto/ListDTO.java index e8d74cb..636e857 100644 --- a/src/main/java/com/supervision/police/dto/ListDTO.java +++ b/src/main/java/com/supervision/police/dto/ListDTO.java @@ -9,4 +9,6 @@ public class ListDTO { public List ids; + private String recordId; + } diff --git a/src/main/java/com/supervision/police/service/ModelRecordTypeService.java b/src/main/java/com/supervision/police/service/ModelRecordTypeService.java index d26fe87..70583b2 100644 --- a/src/main/java/com/supervision/police/service/ModelRecordTypeService.java +++ b/src/main/java/com/supervision/police/service/ModelRecordTypeService.java @@ -27,5 +27,5 @@ public interface ModelRecordTypeService extends IService { void testExtractThreeInfo(); - String addNeo4j(List ids); + String addNeo4j(List ids,String recordId); } diff --git a/src/main/java/com/supervision/police/service/impl/ModelRecordTypeServiceImpl.java b/src/main/java/com/supervision/police/service/impl/ModelRecordTypeServiceImpl.java index bf33ffa..e96481d 100644 --- a/src/main/java/com/supervision/police/service/impl/ModelRecordTypeServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/ModelRecordTypeServiceImpl.java @@ -403,90 +403,86 @@ public class ModelRecordTypeServiceImpl extends ServiceImpl ids) { - if (CollUtil.isEmpty(ids)) { - return "成功插入0条信息"; + public String addNeo4j(List ids, String recordId) { + if (StrUtil.isBlank(recordId)){ + throw new BusinessException("记录ID不能为空"); } - List tripleInfos = tripleInfoService.listByIds(ids); - int i = 0; - for (TripleInfo tripleInfo : tripleInfos) { - try { - //开始节点 - String start = tripleInfo.getStartNode(); - // 首先看是否已经存在了,如果已经存在了,就不添加了 - CaseNode startNode = neo4jService.findOneByName(tripleInfo.getCaseId(), tripleInfo.getRecordId(), tripleInfo.getStartNodeType(), start, "1"); - if (startNode == null) { - startNode = new CaseNode(start, tripleInfo.getStartNodeType(), tripleInfo.getRecordSplitId(), tripleInfo.getRecordId(), tripleInfo.getCaseId(), "1"); - CaseNode save = neo4jService.save(startNode); - startNode.setId(save.getId()); - } - //结束节点 - String end = tripleInfo.getEndNode(); - CaseNode endNode = neo4jService.findOneByName(tripleInfo.getCaseId(), tripleInfo.getRecordId(), tripleInfo.getEndNodeType(), end, "1"); - if (endNode == null) { - endNode = new CaseNode(end, tripleInfo.getEndNodeType(), tripleInfo.getRecordSplitId(), tripleInfo.getRecordId(), tripleInfo.getCaseId(), "1"); - CaseNode save = neo4jService.save(endNode); - endNode.setId(save.getId()); - } - //关系 - Rel rel = new Rel(startNode.getId(), tripleInfo.getRelation(), endNode.getId()); - Rel relation = neo4jService.findRelation(rel); - if (relation == null) { - relation = neo4jService.saveRelation(rel); - } - tripleInfo.setAddNeo4j("1"); - tripleInfo.setStartNodeGraphId(startNode.getId()); - tripleInfo.setRelGraphId(relation.getId()); - tripleInfo.setEndNodeGraphId(endNode.getId()); - boolean updateResult = tripleInfoService.updateById(tripleInfo); - if (updateResult) { - i++; + if (CollUtil.isNotEmpty(ids)) { + List tripleInfos = tripleInfoService.listByIds(ids); + int i = 0; + for (TripleInfo tripleInfo : tripleInfos) { + try { + //开始节点 + String start = tripleInfo.getStartNode(); + // 首先看是否已经存在了,如果已经存在了,就不添加了 + CaseNode startNode = neo4jService.findOneByName(tripleInfo.getCaseId(), tripleInfo.getRecordId(), tripleInfo.getStartNodeType(), start, "1"); + if (startNode == null) { + startNode = new CaseNode(start, tripleInfo.getStartNodeType(), tripleInfo.getRecordSplitId(), tripleInfo.getRecordId(), tripleInfo.getCaseId(), "1"); + CaseNode save = neo4jService.save(startNode); + startNode.setId(save.getId()); + } + //结束节点 + String end = tripleInfo.getEndNode(); + CaseNode endNode = neo4jService.findOneByName(tripleInfo.getCaseId(), tripleInfo.getRecordId(), tripleInfo.getEndNodeType(), end, "1"); + if (endNode == null) { + endNode = new CaseNode(end, tripleInfo.getEndNodeType(), tripleInfo.getRecordSplitId(), tripleInfo.getRecordId(), tripleInfo.getCaseId(), "1"); + CaseNode save = neo4jService.save(endNode); + endNode.setId(save.getId()); + } + //关系 + Rel rel = new Rel(startNode.getId(), tripleInfo.getRelation(), endNode.getId()); + Rel relation = neo4jService.findRelation(rel); + if (relation == null) { + relation = neo4jService.saveRelation(rel); + } + tripleInfo.setAddNeo4j("1"); + tripleInfo.setStartNodeGraphId(startNode.getId()); + tripleInfo.setRelGraphId(relation.getId()); + tripleInfo.setEndNodeGraphId(endNode.getId()); + boolean updateResult = tripleInfoService.updateById(tripleInfo); + if (updateResult) { + i++; + } + } catch (Exception e) { + log.error(e.getMessage(), e); } - } catch (Exception e) { - log.error(e.getMessage(), e); } } // 删除的要进行移除 - Optional any = tripleInfos.stream().findAny(); - if (any.isPresent()) { - TripleInfo anyTripleInfo = any.get(); - String recordId = anyTripleInfo.getRecordId(); - List existNeoList = tripleInfoService.lambdaQuery().eq(TripleInfo::getRecordId, recordId).eq(TripleInfo::getAddNeo4j, "1").list(); - Map existNeoMap = existNeoList.stream().collect(Collectors.toMap(TripleInfo::getId, Function.identity())); - // 去掉已经添加的 - Set existNeoIdSet = existNeoMap.keySet(); - ids.forEach(existNeoIdSet::remove); - // 剩下的就是需要删除的 - for (String needDeleteId : existNeoIdSet) { - TripleInfo tripleInfo = existNeoMap.get(needDeleteId); - if (ObjectUtil.isNotEmpty(tripleInfo.getRelGraphId())) { - // 先移除关系 - neo4jService.deleteRel(tripleInfo.getRelGraphId()); - } else { - break; - } - if (ObjectUtil.isNotEmpty(tripleInfo.getEndNodeGraphId())) { - // 再移除尾节点 - neo4jService.delNode(tripleInfo.getEndNodeGraphId()); - } else { - break; - } - if (ObjectUtil.isNotEmpty(tripleInfo.getStartNodeGraphId())) { - // 尝试删除头节点(只有头节点不存在任何关系的时候才进行删除) - neo4jService.deleteNoRelationNode(tripleInfo.getStartNodeGraphId()); - } else { - break; - } - // 更新状态 - tripleInfoService.lambdaUpdate().set(TripleInfo::getAddNeo4j, "0") - .set(TripleInfo::getEndNodeGraphId, null) - .set(TripleInfo::getRelGraphId, null) - .set(TripleInfo::getStartNodeGraphId, null) - .eq(TripleInfo::getId, needDeleteId).update(); + List existNeoList = tripleInfoService.lambdaQuery().eq(TripleInfo::getRecordId, recordId).eq(TripleInfo::getAddNeo4j, "1").list(); + Map existNeoMap = existNeoList.stream().collect(Collectors.toMap(TripleInfo::getId, Function.identity())); + // 去掉已经添加的 + Set existNeoIdSet = existNeoMap.keySet(); + ids.forEach(existNeoIdSet::remove); + // 剩下的就是需要删除的 + for (String needDeleteId : existNeoIdSet) { + TripleInfo tripleInfo = existNeoMap.get(needDeleteId); + if (ObjectUtil.isNotEmpty(tripleInfo.getRelGraphId())) { + // 先移除关系 + neo4jService.deleteRel(tripleInfo.getRelGraphId()); + } else { + break; + } + if (ObjectUtil.isNotEmpty(tripleInfo.getEndNodeGraphId())) { + // 再移除尾节点 + neo4jService.delNode(tripleInfo.getEndNodeGraphId()); + } else { + break; + } + if (ObjectUtil.isNotEmpty(tripleInfo.getStartNodeGraphId())) { + // 尝试删除头节点(只有头节点不存在任何关系的时候才进行删除) + neo4jService.deleteNoRelationNode(tripleInfo.getStartNodeGraphId()); + } else { + break; } + // 更新状态 + tripleInfoService.lambdaUpdate().set(TripleInfo::getAddNeo4j, "0") + .set(TripleInfo::getEndNodeGraphId, null) + .set(TripleInfo::getRelGraphId, null) + .set(TripleInfo::getStartNodeGraphId, null) + .eq(TripleInfo::getId, needDeleteId).update(); } - - return ("成功插入" + i + "条信息"); + return "保存三元组成功"; } }