|
|
|
@ -7,9 +7,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
import com.supervision.common.utils.IPages;
|
|
|
|
|
import com.supervision.common.utils.ListUtils;
|
|
|
|
|
import com.supervision.common.utils.StringUtils;
|
|
|
|
|
import com.supervision.config.BusinessException;
|
|
|
|
|
import com.supervision.minio.domain.MinioFile;
|
|
|
|
|
import com.supervision.minio.mapper.MinioFileMapper;
|
|
|
|
|
import com.supervision.minio.service.MinioService;
|
|
|
|
|
import com.supervision.police.domain.CaseTaskRecord;
|
|
|
|
|
import com.supervision.police.domain.ModelRecordType;
|
|
|
|
|
import com.supervision.police.domain.NoteRecordSplit;
|
|
|
|
|
import com.supervision.police.domain.NoteRecord;
|
|
|
|
@ -18,10 +20,7 @@ import com.supervision.police.dto.NoteRecordDetailDTO;
|
|
|
|
|
import com.supervision.police.mapper.ModelCaseMapper;
|
|
|
|
|
import com.supervision.police.mapper.NoteRecordSplitMapper;
|
|
|
|
|
import com.supervision.police.mapper.NoteRecordMapper;
|
|
|
|
|
import com.supervision.police.service.CaseStatusManageService;
|
|
|
|
|
import com.supervision.police.service.ModelRecordTypeService;
|
|
|
|
|
import com.supervision.police.service.NoteRecordSplitService;
|
|
|
|
|
import com.supervision.police.service.RecordSplitTypeService;
|
|
|
|
|
import com.supervision.police.service.*;
|
|
|
|
|
import com.supervision.springaidemo.dto.QARecordNodeDTO;
|
|
|
|
|
import com.supervision.springaidemo.util.RecordRegexUtil;
|
|
|
|
|
import com.supervision.springaidemo.util.WordReadUtil;
|
|
|
|
@ -47,15 +46,16 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
|
|
|
|
|
|
|
|
|
|
private final MinioService minioService;
|
|
|
|
|
|
|
|
|
|
private final ModelCaseMapper modelCaseMapper;
|
|
|
|
|
|
|
|
|
|
private final MinioFileMapper minioFileMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final CaseTaskRecordService caseTaskRecordService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private ModelRecordTypeService modelRecordTypeService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private RecordSplitTypeService recordSplitTypeService;
|
|
|
|
|
private RecordSplitProcessService recordSplitProcessService;
|
|
|
|
|
|
|
|
|
|
private final CaseStatusManageService caseStatusManageService;
|
|
|
|
|
|
|
|
|
@ -105,6 +105,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
|
|
|
|
|
}
|
|
|
|
|
String context = WordReadUtil.readWord(inputStream);
|
|
|
|
|
List<QARecordNodeDTO> qaList = RecordRegexUtil.recordRegex(context, record.getName());
|
|
|
|
|
List<NoteRecordSplit> splitList = new ArrayList<>();
|
|
|
|
|
for (QARecordNodeDTO qa : qaList) {
|
|
|
|
|
try {
|
|
|
|
|
NoteRecordSplit noteRecord = new NoteRecordSplit();
|
|
|
|
@ -116,12 +117,19 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
|
|
|
|
|
noteRecord.setAnswer(qa.getAnswer());
|
|
|
|
|
noteRecord.setCreateTime(LocalDateTime.now());
|
|
|
|
|
this.save(noteRecord);
|
|
|
|
|
// 通过异步的形式提交分类
|
|
|
|
|
recordSplitTypeService.type(allTypeList, qa, noteRecord);
|
|
|
|
|
splitList.add(noteRecord);
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.error(e.getMessage(), e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 创建任务之后,再开始
|
|
|
|
|
boolean taskStatus = saveRecordProcessTask(record.getCaseId(), record.getId());
|
|
|
|
|
// 如果校验结果为false,则说明需要进行分类以及三元组操作
|
|
|
|
|
if (taskStatus) {
|
|
|
|
|
// 对笔录进行分类,并对笔录进行提取三元组
|
|
|
|
|
recordSplitProcessService.process(allTypeList, splitList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
caseStatusManageService.whenUploadRecord(record.getCaseId());
|
|
|
|
|
return "保存成功";
|
|
|
|
@ -130,6 +138,61 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 校验是否已经执行过任务
|
|
|
|
|
*
|
|
|
|
|
* @param caseId
|
|
|
|
|
* @param recordId
|
|
|
|
|
* @return 没有执行过, 返回true, 没有执行过, 返回false
|
|
|
|
|
*/
|
|
|
|
|
private boolean saveRecordProcessTask(String caseId, String recordId) {
|
|
|
|
|
// 首先查询是否存在任务,如果不存在,就新建
|
|
|
|
|
Optional<CaseTaskRecord> caseTaskRecordOpt = caseTaskRecordService.lambdaQuery()
|
|
|
|
|
.eq(CaseTaskRecord::getCaseId, caseId).eq(CaseTaskRecord::getRecordId, recordId).oneOpt();
|
|
|
|
|
if (caseTaskRecordOpt.isEmpty()) {
|
|
|
|
|
CaseTaskRecord newCaseTaskRecord = new CaseTaskRecord();
|
|
|
|
|
newCaseTaskRecord.setCaseId(caseId);
|
|
|
|
|
newCaseTaskRecord.setRecordId(recordId);
|
|
|
|
|
newCaseTaskRecord.setStatus(1);
|
|
|
|
|
newCaseTaskRecord.setSubmitTime(LocalDateTime.now());
|
|
|
|
|
return caseTaskRecordService.save(newCaseTaskRecord);
|
|
|
|
|
} else {
|
|
|
|
|
// 如果存在,则校验时间是否已经超过1天,如果超过了1天还没有执行完毕,就重新提交这个任务
|
|
|
|
|
CaseTaskRecord caseTaskRecord = caseTaskRecordOpt.get();
|
|
|
|
|
// 如果未执行,则提交执行
|
|
|
|
|
if (caseTaskRecordOpt.get().getStatus() == 0) {
|
|
|
|
|
caseTaskRecord.setStatus(1);
|
|
|
|
|
caseTaskRecord.setSubmitTime(LocalDateTime.now());
|
|
|
|
|
caseTaskRecordService.updateById(caseTaskRecord);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (caseTaskRecordOpt.get().getStatus() == 1 && LocalDateTime.now().isAfter(caseTaskRecord.getSubmitTime().plusDays(1))) {
|
|
|
|
|
// 如果已经超过1天,则重新提交任务
|
|
|
|
|
caseTaskRecord.setStatus(1);
|
|
|
|
|
caseTaskRecord.setSubmitTime(LocalDateTime.now());
|
|
|
|
|
caseTaskRecordService.updateById(caseTaskRecord);
|
|
|
|
|
return true;
|
|
|
|
|
} else if (caseTaskRecordOpt.get().getStatus() == 2) {
|
|
|
|
|
// 如果执行成功,就不再执行了
|
|
|
|
|
return false;
|
|
|
|
|
} else if (caseTaskRecordOpt.get().getStatus() == 3) {
|
|
|
|
|
// 如果执行失败,就重新执行
|
|
|
|
|
caseTaskRecord.setStatus(1);
|
|
|
|
|
caseTaskRecord.setSubmitTime(LocalDateTime.now());
|
|
|
|
|
caseTaskRecordService.updateById(caseTaskRecord);
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
// 如果都不是就在跑一次
|
|
|
|
|
caseTaskRecord.setStatus(1);
|
|
|
|
|
caseTaskRecord.setSubmitTime(LocalDateTime.now());
|
|
|
|
|
caseTaskRecordService.updateById(caseTaskRecord);
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Map<String, Object> queryRecords(NoteRecord noteRecords, Integer page, Integer size) {
|
|
|
|
|
LambdaQueryWrapper<NoteRecord> wrapper = Wrappers.lambdaQuery(NoteRecord.class)
|
|
|
|
|