From b98ebcffbbf88c9a9322634e71ef84e078e56ac5 Mon Sep 17 00:00:00 2001 From: "DESKTOP-DDTUS3E\\yaxin" Date: Thu, 5 Sep 2024 13:30:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=8F=90=E5=8F=96=E4=B8=89?= =?UTF-8?q?=E5=85=83=E7=BB=84=E6=8E=A5=E5=8F=A3=E5=88=9D=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../police/controller/RecordController.java | 13 ++++ .../service/NoteRecordSplitService.java | 2 + .../impl/NoteRecordSplitServiceImpl.java | 64 +++++++++++++++---- 3 files changed, 65 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/supervision/police/controller/RecordController.java b/src/main/java/com/supervision/police/controller/RecordController.java index 929709f..7043c16 100644 --- a/src/main/java/com/supervision/police/controller/RecordController.java +++ b/src/main/java/com/supervision/police/controller/RecordController.java @@ -110,6 +110,19 @@ public class RecordController { return R.ok(noteRecordSplitService.uploadRecords(records)); } + /** + * 重新提取 + * @param records 笔录 + * @return R + * @throws IOException 异常 + */ + @PostMapping("/redoExtract") + public R redoExtract(@RequestBody NoteRecordReqVO records) throws IOException { + return R.ok(noteRecordSplitService.redoExtract(records)); + } + + + /** * 查询笔录,按姓名为父目录 * diff --git a/src/main/java/com/supervision/police/service/NoteRecordSplitService.java b/src/main/java/com/supervision/police/service/NoteRecordSplitService.java index 3a34fec..d45e260 100644 --- a/src/main/java/com/supervision/police/service/NoteRecordSplitService.java +++ b/src/main/java/com/supervision/police/service/NoteRecordSplitService.java @@ -21,4 +21,6 @@ public interface NoteRecordSplitService extends IService { List batchSaveRecordSplit(NoteRecord record, String fileId); Map queryRecordList(NoteRecord noteRecord, Integer page, Integer size); + + String redoExtract(NoteRecordReqVO records) throws IOException; } diff --git a/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java b/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java index 22373dd..6db05be 100644 --- a/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Pair; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.supervision.chat.client.LangChainChatService; import com.supervision.common.utils.IPages; @@ -18,11 +19,11 @@ import com.supervision.minio.service.MinioService; import com.supervision.neo4j.service.Neo4jService; import com.supervision.police.domain.*; import com.supervision.police.dto.NoteRecordDTO; -import com.supervision.police.dto.NoteRecordFileDTO; -import com.supervision.police.vo.NoteRecordReqVO; import com.supervision.police.dto.NoteRecordDetailDTO; +import com.supervision.police.dto.NoteRecordFileDTO; import com.supervision.police.mapper.NoteRecordSplitMapper; import com.supervision.police.service.*; +import com.supervision.police.vo.NoteRecordReqVO; import com.supervision.utils.RecordRegexUtil; import com.supervision.utils.WordReadUtil; import lombok.RequiredArgsConstructor; @@ -65,8 +66,6 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl allTypeList = modelRecordTypeService.lambdaQuery().list(); recordSplitProcessService.process(allTypeList, allNoteRecordSplits); } @@ -117,7 +117,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl batchSaveRecordSplit(NoteRecord record, String fileId) { String context = WordReadUtil.readWordInMinio(minioService, fileId); - if (StrUtil.isEmpty(context)){ + if (StrUtil.isEmpty(context)) { log.info("文件id:{}内容为空,不进行解析...", fileId); return null; } MinioFile minioFile = minioService.getMinioFile(fileId); List qaList = RecordRegexUtil.recordRegex(context, record.getName()); - log.info("文件:{}拆分问答对:{}",minioFile.getFilename(), qaList.size()); + log.info("文件:{}拆分问答对:{}", minioFile.getFilename(), qaList.size()); List splitList = new ArrayList<>(); for (QARecordNodeDTO qa : qaList) { @@ -386,21 +386,58 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl().eq("note_record_id", records.getId())); + // 删除任务数据 + caseTaskRecordService.remove(new QueryWrapper().eq("record_id", records.getId())); + // 删除neo4j的节点 + List list = tripleInfoService.lambdaQuery().eq(TripleInfo::getRecordId, records.getId()).list(); + list.forEach(item -> { + // 如果已经入库,就删除已经入库的图 + if (StrUtil.equals("1", item.getAddNeo4j())) { + // 删除尾节点(不删除头节点),如果删除尾节点,关系会被自动删除 + try { + if (ObjectUtil.isNotEmpty(item.getRelGraphId())) { + // 先移除关系 + neo4jService.deleteRel(item.getRelGraphId()); + } + if (ObjectUtil.isNotEmpty(item.getEndNodeGraphId())) { + // 再移除尾节点 + neo4jService.delNode(item.getEndNodeGraphId()); + } + if (ObjectUtil.isNotEmpty(item.getStartNodeGraphId())) { + // 尝试删除头节点(只有头节点不存在任何关系的时候才进行删除) + neo4jService.deleteNoRelationNode(item.getStartNodeGraphId()); + } + } catch (Exception e) { + log.error("删除关系失败:{}", item.getRelation(), e); + } + } + }); + // 删除三元组数据 + tripleInfoService.remove(new QueryWrapper().eq("record_id", records.getId())); + return uploadRecords(records); + } + private void setRecordDetailSerialNumber(List noteRecordDetailDTOList) { List> pairs = new ArrayList<>(); for (NoteRecordDetailDTO noteRecordDetailDTO : noteRecordDetailDTOList) { String personId = noteRecordDetailDTO.getPersonId(); int index = findPair(pairs, personId); - if (index == -1){ + if (index == -1) { pairs.add(Pair.of(personId, 1)); index = findPair(pairs, personId); - }else { + } else { pairs.set(index, Pair.of(personId, pairs.get(index).getValue() + 1)); } - noteRecordDetailDTO.setSerialNumber(index+1 + "." + pairs.get(index).getValue()); - } + noteRecordDetailDTO.setSerialNumber(index + 1 + "." + pairs.get(index).getValue()); } + } private int findPair(List> pairs, String personId) { @@ -414,5 +451,4 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl