1. 笔录提取进度暂存

topo_dev
xueqingkun 8 months ago
parent 5c80bcd5d9
commit 0a94e03bad

@ -11,4 +11,7 @@ public interface NoteRecordService extends IService<NoteRecord> {
List<NoteRecordDTO> selectNoteRecordDTOList(NoteRecord noteRecord);
void uploadFileToLangChainChat(String caseId);
String saveOrUpdRecord(NoteRecord noteRecord);
}

@ -1,6 +1,7 @@
package com.supervision.police.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.demo.dto.QARecordNodeDTO;
import com.supervision.police.domain.NoteRecord;
import com.supervision.police.domain.NoteRecordSplit;
import com.supervision.police.vo.NoteRecordReqVO;
@ -16,4 +17,6 @@ public interface NoteRecordSplitService extends IService<NoteRecordSplit> {
void delRecords(String id);
NoteRecordSplit saveRecordSplit(NoteRecord record, String fileName, String question, String answer);
}

@ -102,4 +102,9 @@ public class NoteRecordServiceImpl extends ServiceImpl<NoteRecordMapper, NoteRec
}
}
@Override
public String saveOrUpdRecord(NoteRecord noteRecord) {
return null;
}
}

@ -2,6 +2,7 @@ package com.supervision.police.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -83,64 +84,52 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
@Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public String uploadRecords(NoteRecordReqVO records) throws IOException {
int i;
ModelCase modelCase = modelCaseService.getById(records.getCaseId());
if (StringUtils.isEmpty(modelCase.getCaseNo())) {
throw new BusinessException("案件编号不能为空");
}
Assert.notEmpty(modelCase.getCaseNo(), "案件编号不能为空");
NoteRecord record = records.toNoteRecord();
if (StringUtils.isEmpty(records.getId())) {
i = noteRecordService.getBaseMapper().insert(record);
} else {
i = noteRecordService.getBaseMapper().updateById(record);
String recordId = noteRecordService.saveOrUpdRecord(record);
if (CollUtil.isEmpty(records.getFileIdList())){
log.info("uploadRecords:文件内容为空...不进行笔录分析操作...");
return recordId;
}
//所有对话类型
extracted(records.getFileIdList(), record);
caseStatusManageService.whenUploadRecord(record.getCaseId());
return record.getId();
}
private void extracted(List<String> recordIds, NoteRecord record) {
// 拆分笔录
List<ModelRecordType> allTypeList = modelRecordTypeService.lambdaQuery().list();
if (i > 0 && CollUtil.isNotEmpty(records.getFileIdList())) {
// 拆分笔录
for (String fileId : records.getFileIdList()) {
MinioFile minioFile = minioService.getMinioFile(fileId);
InputStream inputStream = null;
try {
inputStream = minioService.getObjectInputStream(minioFile);
} catch (Exception e) {
e.printStackTrace();
log.error("从minio中获取文件失败:{}", e.getMessage());
continue;
}
String context = WordReadUtil.readWord(inputStream);
List<QARecordNodeDTO> qaList = RecordRegexUtil.recordRegex(context, record.getName());
log.info("拆分问答对:{}", qaList.size());
List<NoteRecordSplit> splitList = new ArrayList<>();
for (QARecordNodeDTO qa : qaList) {
try {
NoteRecordSplit noteRecord = new NoteRecordSplit();
noteRecord.setCaseId(record.getCaseId());
noteRecord.setNoteRecordId(record.getId());
noteRecord.setNoteName(minioFile.getFilename());
noteRecord.setPersonName(record.getName());
noteRecord.setQuestion(qa.getQuestion());
noteRecord.setAnswer(qa.getAnswer());
noteRecord.setCreateTime(LocalDateTime.now());
this.save(noteRecord);
splitList.add(noteRecord);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
// 创建任务之后,再开始
boolean taskStatus = saveRecordProcessTask(record.getCaseId(), record.getId(), qaList.size());
// 如果校验结果为true,则说明需要进行分类以及三元组操作
if (taskStatus) {
// 对笔录进行分类,并对笔录进行提取三元组
recordSplitProcessService.process(allTypeList, splitList);
}
for (String fileId : recordIds) {
String context = WordReadUtil.readWordInMinio(minioService, fileId);
if (StrUtil.isEmpty(context)){
log.info("文件id:{}内容为空,不进行解析...", fileId);
continue;
}
MinioFile minioFile = minioService.getMinioFile(fileId);
List<QARecordNodeDTO> qaList = RecordRegexUtil.recordRegex(context, minioFile.getFilename());
log.info("拆分问答对:{}", qaList.size());
List<NoteRecordSplit> splitList = new ArrayList<>();
for (QARecordNodeDTO qa : qaList) {
splitList.add(
saveRecordSplit(record, record.getName(), qa.getQuestion(), qa.getAnswer())
);
}
// 创建任务之后,再开始
boolean taskStatus = saveRecordProcessTask(record.getCaseId(), record.getId(), qaList.size());
// 如果校验结果为true,则说明需要进行分类以及三元组操作
if (taskStatus) {
// 对笔录进行分类,并对笔录进行提取三元组
recordSplitProcessService.process(allTypeList, splitList);
}
caseStatusManageService.whenUploadRecord(record.getCaseId());
return "保存成功";
} else {
return "保存笔录失败";
}
}
@ -333,4 +322,19 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
modelAtomicResultService.lambdaUpdate().eq(ModelAtomicResult::getRecordId, id).remove();
}
@Override
public NoteRecordSplit saveRecordSplit(NoteRecord record, String fileName, String question, String answer) {
NoteRecordSplit noteRecord = new NoteRecordSplit();
noteRecord.setCaseId(record.getCaseId());
noteRecord.setNoteRecordId(record.getId());
noteRecord.setNoteName(fileName);
noteRecord.setPersonName(record.getName());
noteRecord.setQuestion(question);
noteRecord.setAnswer(answer);
noteRecord.setCreateTime(LocalDateTime.now());
this.save(noteRecord);
return noteRecord;
}
}

@ -1,5 +1,7 @@
package com.supervision.utils;
import com.supervision.minio.domain.MinioFile;
import com.supervision.minio.service.MinioService;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
@ -71,4 +73,14 @@ public class WordReadUtil {
return stringBuilder.toString();
}
public static String readWordInMinio(MinioService minioService, String fileId) {
try (InputStream inputStream = minioService.getObjectInputStream(fileId)){
return readWord(inputStream);
} catch (Exception e) {
log.error("从minio中获取文件失败", e);
return null;
}
}
}

Loading…
Cancel
Save