Merge branch 'dev_1.0.0' into ocr_branch

# Conflicts:
#	src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java
topo_dev
xueqingkun 8 months ago
commit 8ca9523d29

@ -7,6 +7,14 @@
# Release Notes
# 发布时间 2024-09-05
# 变更记录
- 修复案件证据分页失效问题
- 修复经侦模型指标数据只展示部分数据问题
# 安装包
- /data/archives/fu-hsi/20240905/dist
# 发布时间 2024-09-03
# 变更记录
- 修复三元组提取进度问题不准确的问题

@ -104,6 +104,19 @@ public class RecordController {
return R.ok(noteRecordSplitService.uploadRecords(records));
}
/**
*
* @param records
* @return R
* @throws IOException
*/
@PostMapping("/redoExtract")
public R<String> redoExtract(@RequestBody NoteRecordReqVO records) throws IOException {
return R.ok(noteRecordSplitService.redoExtract(records));
}
/**
*
* Deprecatedsince2024-08-29 @see queryRecordList

@ -21,4 +21,6 @@ public interface NoteRecordSplitService extends IService<NoteRecordSplit> {
List<NoteRecordSplit> batchSaveRecordSplit(NoteRecord record, String fileId);
Map<String, Object> queryRecordList(NoteRecord noteRecord, Integer page, Integer size);
String redoExtract(NoteRecordReqVO records) throws IOException;
}

@ -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,10 +19,10 @@ 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.NoteRecordDetailDTO;
import com.supervision.police.dto.NoteRecordFileDTO;
import com.supervision.police.dto.RecordFileDTO;
import com.supervision.police.vo.NoteRecordReqVO;
import com.supervision.police.dto.NoteRecordDetailDTO;
import com.supervision.police.mapper.NoteRecordSplitMapper;
import com.supervision.police.service.*;
import com.supervision.utils.RecordRegexUtil;
@ -77,7 +78,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
@Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public String uploadRecords(NoteRecordReqVO records) throws IOException {
public String uploadRecords(NoteRecordReqVO records) {
ModelCase modelCase = modelCaseService.getById(records.getCaseId());
Assert.notEmpty(modelCase.getCaseNo(), "案件编号不能为空");
@ -85,7 +86,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
NoteRecord record = records.toNoteRecord();
String recordId = noteRecordService.saveOrUpdRecord(record);
if (CollUtil.isEmpty(records.getFileIdList())){
if (CollUtil.isEmpty(records.getFileIdList())) {
log.info("uploadRecords:文件内容为空...不进行笔录分析操作...");
return recordId;
}
@ -251,14 +252,14 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
public List<NoteRecordSplit> 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<QARecordNodeDTO> qaList = RecordRegexUtil.recordRegex(context, record.getName());
log.info("文件:{}拆分问答对:{}",minioFile.getFilename(), qaList.size());
log.info("文件:{}拆分问答对:{}", minioFile.getFilename(), qaList.size());
List<NoteRecordSplit> splitList = new ArrayList<>();
for (QARecordNodeDTO qa : qaList) {
@ -309,21 +310,58 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
return IPages.buildDataMap(pager, noteRecordDetailDTOList.size());
}
@Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public String redoExtract(NoteRecordReqVO records) throws IOException {
// 删除旧数据
// 删除问答对数据
noteRecordSplitService.remove(new QueryWrapper<NoteRecordSplit>().eq("note_record_id", records.getId()));
// 删除任务数据
caseTaskRecordService.remove(new QueryWrapper<CaseTaskRecord>().eq("record_id", records.getId()));
// 删除neo4j的节点
List<TripleInfo> 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<TripleInfo>().eq("record_id", records.getId()));
return uploadRecords(records);
}
private void setRecordDetailSerialNumber(List<NoteRecordDetailDTO> noteRecordDetailDTOList) {
List<Pair<String, Integer>> 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<Pair<String, Integer>> pairs, String personId) {
@ -337,5 +375,4 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
}
}

Loading…
Cancel
Save