|
|
|
@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
@ -124,22 +123,21 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
|
|
|
|
|
public boolean deleteEvidence(String evidenceId,String fileId) {
|
|
|
|
|
public boolean deleteEvidence(String evidenceId, String fileId) {
|
|
|
|
|
|
|
|
|
|
CaseEvidence caseEvidence = super.getOptById(evidenceId).orElseThrow(() -> new IllegalArgumentException("证据信息不存在"));
|
|
|
|
|
if (StrUtil.isEmpty(fileId)){
|
|
|
|
|
if (StrUtil.isEmpty(fileId)) {
|
|
|
|
|
boolean remove = super.lambdaUpdate().eq(CaseEvidence::getId, evidenceId).remove();
|
|
|
|
|
if (remove) {
|
|
|
|
|
evidenceFileService.lambdaUpdate().eq(EvidenceFile::getEvidenceId, evidenceId).remove();
|
|
|
|
|
caseStatusManageService.whenUpdateEvidence(caseEvidence.getCaseId());
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
} else {
|
|
|
|
|
evidenceFileService.lambdaUpdate().eq(EvidenceFile::getEvidenceId, evidenceId)
|
|
|
|
|
.eq(EvidenceFile::getFileId, fileId).remove();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -205,8 +203,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
Page<CaseEvidence> page) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( null == queryDirectory || queryDirectory.getLevel() != 3){
|
|
|
|
|
if (null == queryDirectory || queryDirectory.getLevel() != 3) {
|
|
|
|
|
|
|
|
|
|
/*if (null != queryDirectory && CollUtil.isEmpty(queryDirectory.listAllFileId())){
|
|
|
|
|
return PageDTO.of(page.getCurrent(), page.getSize(), 0);
|
|
|
|
@ -219,10 +216,10 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
.like(StrUtil.isNotEmpty(evidenceName), CaseEvidence::getEvidenceName, evidenceName)
|
|
|
|
|
.orderBy(true, false, CaseEvidence::getUpdateTime)
|
|
|
|
|
.page(page).convert(EvidenceFileDTO::new);
|
|
|
|
|
}else {
|
|
|
|
|
} else {
|
|
|
|
|
// 三级目录查询证据文件
|
|
|
|
|
return evidenceFileService.pageListFileInfo(
|
|
|
|
|
null, caseId,evidenceName,List.of(directoryId), Page.of(page.getCurrent(), page.getSize()));
|
|
|
|
|
null, caseId, evidenceName, List.of(directoryId), Page.of(page.getCurrent(), page.getSize()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -282,8 +279,11 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
long attrStart = System.currentTimeMillis();
|
|
|
|
|
llmExtractDto.setPrompt(notePrompt.getPrompt());
|
|
|
|
|
llmExtractDto.setExtractAttributes(notePrompt.getExtractAttributes());
|
|
|
|
|
List<LLMExtractDto> llmExtractDtos = llmExtractService.extractAttribute(Collections.singletonList(llmExtractDto));
|
|
|
|
|
if (!llmExtractDtos.isEmpty()) {
|
|
|
|
|
llmExtractDto = llmExtractService.extractAttribute(Collections.singletonList(llmExtractDto)).get(0);
|
|
|
|
|
caseEvidence.setProperty(llmExtractDto.getExtractAttributes());
|
|
|
|
|
}
|
|
|
|
|
log.info("属性提取完成。更新证据处理状态为【属性提取完成】。属性:【{}】。耗时:【{}】", caseEvidence.getProperty(), System.currentTimeMillis() - attrStart);
|
|
|
|
|
caseEvidence.setProcessStatus(EvidenceConstants.PROCESS_STATUS_ATTR_EXTRACT_OK);
|
|
|
|
|
updateById(caseEvidence);
|
|
|
|
@ -442,25 +442,25 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
((CaseEvidenceService) AopContext.currentProxy()).preSyncSubmitOCR(evidenceFileDTOList);
|
|
|
|
|
|
|
|
|
|
for (CaseEvidenceDetailDTO caseEvidenceDetailDTO : operationalEvidenceList) {
|
|
|
|
|
if (StrUtil.equalsAny(caseEvidenceDetailDTO.getUpdateStatus(),"-1","1")){
|
|
|
|
|
if (StrUtil.equalsAny(caseEvidenceDetailDTO.getUpdateStatus(), "-1", "1")) {
|
|
|
|
|
boolean match = caseEvidenceDetailDTO.getFileList().stream().allMatch(file -> StrUtil.equals(file.getUpdateStatus(), "1"));
|
|
|
|
|
if(match){
|
|
|
|
|
if (match) {
|
|
|
|
|
// 需要分析(ocr识别+标题提取)
|
|
|
|
|
log.info("ocrAndExtract:开始调用evidenceAnalysis接口...证据id:{},证据名:{}",caseEvidenceDetailDTO.getId(), caseEvidenceDetailDTO.getEvidenceName());
|
|
|
|
|
log.info("ocrAndExtract:开始调用evidenceAnalysis接口...证据id:{},证据名:{}", caseEvidenceDetailDTO.getId(), caseEvidenceDetailDTO.getEvidenceName());
|
|
|
|
|
xxlJobService.executeTaskByJobHandler("evidenceAnalysis", caseEvidenceDetailDTO.getId());
|
|
|
|
|
}else {
|
|
|
|
|
} else {
|
|
|
|
|
log.info("ocrAndExtract:单独识别ocr数据");
|
|
|
|
|
boolean success = false;
|
|
|
|
|
for (EvidenceFileDTO evidenceFileDTO : caseEvidenceDetailDTO.getFileList()) {
|
|
|
|
|
success = ocrEvidenceService.submitOrcTask(evidenceFileDTO.getFileId());
|
|
|
|
|
if (!success){
|
|
|
|
|
if (!success) {
|
|
|
|
|
this.lambdaUpdate().eq(CaseEvidence::getId, evidenceFileDTO.getEvidenceId())
|
|
|
|
|
.set(CaseEvidence::getProcessStatus, EvidenceConstants.PROCESS_STATUS_FAILED).update();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (success){
|
|
|
|
|
if (success) {
|
|
|
|
|
this.lambdaUpdate().eq(CaseEvidence::getId, caseEvidenceDetailDTO.getId())
|
|
|
|
|
.set(CaseEvidence::getProcessStatus, EvidenceConstants.PROCESS_STATUS_SUCCESS).update();
|
|
|
|
|
}
|
|
|
|
@ -611,7 +611,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
for (EvidenceDirectoryDTO directoryDTO : verifyEvidenceReqVO.getEvidenceDirectoryList()) {
|
|
|
|
|
CaseEvidence evidenceInfo = directoryDTO.getEvidenceInfo();
|
|
|
|
|
List<EvidenceFileDTO> fileInfoList = directoryDTO.getFileInfoList();
|
|
|
|
|
if (CollUtil.isNotEmpty(fileInfoList) && evidenceInfo != null){
|
|
|
|
|
if (CollUtil.isNotEmpty(fileInfoList) && evidenceInfo != null) {
|
|
|
|
|
for (EvidenceFileDTO fileInfo : fileInfoList) {
|
|
|
|
|
fileInfo.setEvidenceInfo(evidenceInfo);
|
|
|
|
|
}
|
|
|
|
@ -660,7 +660,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
List<CategoryPromptDTO> categoryPromptDTOS = evidenceDirectoryService.listCategoryPrompt(caseId);
|
|
|
|
|
|
|
|
|
|
Map<String, CaseEvidence> caseEvidenceMap = caseEvidenceList.stream().collect(Collectors.toMap(CaseEvidence::getId, Function.identity()));
|
|
|
|
|
Map<String, CategoryPromptDTO> categoryPromptMap = categoryPromptDTOS.stream().collect(Collectors.toMap(CategoryPromptDTO::getDirectoryId,k->k,(v1,v2)->v1));
|
|
|
|
|
Map<String, CategoryPromptDTO> categoryPromptMap = categoryPromptDTOS.stream().collect(Collectors.toMap(CategoryPromptDTO::getDirectoryId, k -> k, (v1, v2) -> v1));
|
|
|
|
|
|
|
|
|
|
Iterator<EvidenceDirectoryDTO> iterator = evidenceDirectoryDTOS.iterator();
|
|
|
|
|
while (iterator.hasNext()) {
|
|
|
|
@ -711,7 +711,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
EvidenceDirectoryDTO parentDirectory = null;
|
|
|
|
|
for (EvidenceDirectoryDTO evidenceDirectoryDTO : evidenceDirectoryDTOS) {
|
|
|
|
|
parentDirectory = evidenceDirectoryDTO.findDirectory(CollUtil.getFirst(directoryIdList));
|
|
|
|
|
if (null != parentDirectory){
|
|
|
|
|
if (null != parentDirectory) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -720,7 +720,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
long count = evidenceDirectoryService.lambdaQuery().eq(EvidenceDirectory::getParentId, parentDirectory.getId())
|
|
|
|
|
.list().stream()
|
|
|
|
|
.filter(d -> StrUtil.contains(d.getDirectoryName(), evidenceDirectory.getDirectoryName())).count();
|
|
|
|
|
if (count > 0){
|
|
|
|
|
if (count > 0) {
|
|
|
|
|
evidenceDirectory.setDirectoryName(evidenceDirectory.getDirectoryName() + (count + 1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -809,11 +809,11 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
caseEvidenceDetailDTOS.add(caseEvidenceDetailDTO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (directory.getLevel() == 3){
|
|
|
|
|
if (directory.getLevel() == 3) {
|
|
|
|
|
// 不会存在需要创建目录的场景
|
|
|
|
|
CaseEvidence caseEvidence = super.lambdaQuery().eq(CaseEvidence::getDirectoryId, directory.getId()).one();
|
|
|
|
|
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO();
|
|
|
|
|
if (null != caseEvidence){
|
|
|
|
|
if (null != caseEvidence) {
|
|
|
|
|
caseEvidenceDetailDTO.setId(caseEvidence.getId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|