|
|
|
@ -124,16 +124,23 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
|
|
|
|
|
public boolean deleteEvidence(String evidenceId) {
|
|
|
|
|
public boolean deleteEvidence(String evidenceId,String fileId) {
|
|
|
|
|
|
|
|
|
|
CaseEvidence caseEvidence = super.getOptById(evidenceId).orElseThrow(() -> new IllegalArgumentException("证据信息不存在"));
|
|
|
|
|
boolean remove = super.lambdaUpdate().eq(CaseEvidence::getId, evidenceId).remove();
|
|
|
|
|
|
|
|
|
|
if (remove) {
|
|
|
|
|
evidenceFileService.lambdaUpdate().eq(EvidenceFile::getEvidenceId, evidenceId).remove();
|
|
|
|
|
caseStatusManageService.whenUpdateEvidence(caseEvidence.getCaseId());
|
|
|
|
|
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 {
|
|
|
|
|
evidenceFileService.lambdaUpdate().eq(EvidenceFile::getEvidenceId, evidenceId)
|
|
|
|
|
.eq(EvidenceFile::getFileId, fileId).remove();
|
|
|
|
|
}
|
|
|
|
|
return remove;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -165,15 +172,15 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
List<EvidenceDirectoryDTO> evidenceDirectoryDTOS = listDirectoryTree(caseId);
|
|
|
|
|
EvidenceDirectoryDTO queryDirectory = evidenceDirectoryService.findDirectoryById(directoryId, evidenceDirectoryDTOS);
|
|
|
|
|
|
|
|
|
|
IPage<CaseEvidence> caseEvidencePage = pageListCaseEvidence(queryDirectory, caseId, directoryId,
|
|
|
|
|
IPage<EvidenceFileDTO> fileDTOIPage = pageListCaseEvidence(queryDirectory, caseId, directoryId,
|
|
|
|
|
evidenceName, new Page<>(pageNum, pageSize));
|
|
|
|
|
|
|
|
|
|
if (caseEvidencePage.getTotal() == 0) {
|
|
|
|
|
if (fileDTOIPage.getTotal() == 0) {
|
|
|
|
|
return PageDTO.of(pageNum, pageSize, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 查询文件信息
|
|
|
|
|
List<String> evidenceIds = caseEvidencePage.getRecords().stream().map(CaseEvidence::getId).distinct().toList();
|
|
|
|
|
List<String> evidenceIds = fileDTOIPage.getRecords().stream().map(EvidenceFileDTO::getEvidenceId).distinct().toList();
|
|
|
|
|
List<EvidenceFileDTO> fileInfoList = evidenceFileService.listFileInfo(evidenceIds);
|
|
|
|
|
Map<String, List<EvidenceFileDTO>> evidenceFileMap = fileInfoList.stream().collect(Collectors.groupingBy(EvidenceFileDTO::getEvidenceId));
|
|
|
|
|
List<RecordFileDTO> recordFileDTOS = fileOcrProcessService.queryFileList(fileInfoList.stream().map(EvidenceFileDTO::getFileId).toList());
|
|
|
|
@ -181,9 +188,9 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
// 转换分页结果
|
|
|
|
|
//查询字典
|
|
|
|
|
List<ComDictionary> evidenceTypeDic = comDictionaryService.lambdaQuery().eq(ComDictionary::getType, "evidence_type").list();
|
|
|
|
|
return caseEvidencePage.convert(caseEvidence -> {
|
|
|
|
|
return fileDTOIPage.convert(caseEvidence -> {
|
|
|
|
|
|
|
|
|
|
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO(caseEvidence, evidenceFileMap.get(caseEvidence.getId()));
|
|
|
|
|
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO(caseEvidence, evidenceFileMap.get(caseEvidence.getEvidenceId()));
|
|
|
|
|
caseEvidenceDetailDTO.setEvidenceTypeDesc(
|
|
|
|
|
comDictionaryService.getName(evidenceTypeDic, "evidence_type", caseEvidence.getEvidenceType()));
|
|
|
|
|
caseEvidenceDetailDTO.setContentTypeValue(recordFileDTOS);
|
|
|
|
@ -193,7 +200,7 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private IPage<CaseEvidence> pageListCaseEvidence(EvidenceDirectoryDTO queryDirectory,
|
|
|
|
|
private IPage<EvidenceFileDTO> pageListCaseEvidence(EvidenceDirectoryDTO queryDirectory,
|
|
|
|
|
String caseId, String directoryId, String evidenceName,
|
|
|
|
|
Page<CaseEvidence> page) {
|
|
|
|
|
|
|
|
|
@ -211,27 +218,15 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
.in(CollUtil.isNotEmpty(directoryIds), CaseEvidence::getDirectoryId, directoryIds)
|
|
|
|
|
.like(StrUtil.isNotEmpty(evidenceName), CaseEvidence::getEvidenceName, evidenceName)
|
|
|
|
|
.orderBy(true, false, CaseEvidence::getUpdateTime)
|
|
|
|
|
.page(page);
|
|
|
|
|
.page(page).convert(EvidenceFileDTO::new);
|
|
|
|
|
}else {
|
|
|
|
|
// 三级目录查询证据文件
|
|
|
|
|
Page<EvidenceFileDTO> pageListFileInfo = evidenceFileService.pageListFileInfo(
|
|
|
|
|
return evidenceFileService.pageListFileInfo(
|
|
|
|
|
null, caseId,evidenceName,List.of(directoryId), Page.of(page.getCurrent(), page.getSize()));
|
|
|
|
|
return pageListFileInfo.convert(file -> file.toCaseEvidence(caseId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
private List<String> findAllDirectoryId(String directoryId,List<EvidenceDirectoryDTO> evidenceDirectoryDTOS){
|
|
|
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(directoryId)){
|
|
|
|
|
Optional<EvidenceDirectoryDTO> first = evidenceDirectoryDTOS.stream().filter(dto -> null != dto.findDirectory(directoryId)).findFirst();
|
|
|
|
|
if (first.isPresent()){
|
|
|
|
|
evidenceDirectoryDTOS = first.get().listAllDirectory();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return evidenceDirectoryDTOS.stream()
|
|
|
|
|
.flatMap(evidenceDirectoryDTO -> evidenceDirectoryDTO.listAllDirectory()
|
|
|
|
|
.stream().map(EvidenceDirectoryDTO::getId)).toList();
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public CaseEvidenceDetailDTO queryEvidenceDetail(String evidenceId) {
|
|
|
|
|
return super.getBaseMapper().queryEvidenceDetail(evidenceId);
|
|
|
|
@ -453,6 +448,23 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
// 需要分析(ocr识别+标题提取)
|
|
|
|
|
log.info("ocrAndExtract:开始调用evidenceAnalysis接口...证据id:{},证据名:{}",caseEvidenceDetailDTO.getId(), caseEvidenceDetailDTO.getEvidenceName());
|
|
|
|
|
xxlJobService.executeTaskByJobHandler("evidenceAnalysis", caseEvidenceDetailDTO.getId());
|
|
|
|
|
}else {
|
|
|
|
|
log.info("ocrAndExtract:单独识别ocr数据");
|
|
|
|
|
boolean success = false;
|
|
|
|
|
for (EvidenceFileDTO evidenceFileDTO : caseEvidenceDetailDTO.getFileList()) {
|
|
|
|
|
success = ocrEvidenceService.submitOrcTask(evidenceFileDTO.getFileId());
|
|
|
|
|
if (!success){
|
|
|
|
|
this.lambdaUpdate().eq(CaseEvidence::getId, evidenceFileDTO.getEvidenceId())
|
|
|
|
|
.set(CaseEvidence::getProcessStatus, EvidenceConstants.PROCESS_STATUS_FAILED).update();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (success){
|
|
|
|
|
this.lambdaUpdate().eq(CaseEvidence::getId, caseEvidenceDetailDTO.getId())
|
|
|
|
|
.set(CaseEvidence::getProcessStatus, EvidenceConstants.PROCESS_STATUS_SUCCESS).update();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -551,12 +563,16 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
List<CaseEvidenceDetailDTO> caseEvidenceDetailDTOS = queryEvidenceList(caseId, batchNo);
|
|
|
|
|
|
|
|
|
|
EvidenceDirectoryDTO topDirectory = new EvidenceDirectoryDTO(listDirectoryTree(caseId));
|
|
|
|
|
Map<String, List<EvidenceVerifyDTO>> evidenceMap = evidenceVerifyDTOS.stream().collect(Collectors.groupingBy(EvidenceVerifyDTO::getEvidenceId));
|
|
|
|
|
for (Map.Entry<String, List<EvidenceVerifyDTO>> entry : evidenceMap.entrySet()) {
|
|
|
|
|
String evidenceId = entry.getKey();
|
|
|
|
|
List<EvidenceVerifyDTO> value = entry.getValue();
|
|
|
|
|
|
|
|
|
|
// 更新证据属性
|
|
|
|
|
EvidenceDirectoryDTO directory = topDirectory.findDirectory(CollUtil.getFirst(value).getDirectoryId());
|
|
|
|
|
|
|
|
|
|
this.lambdaUpdate().eq(CaseEvidence::getId, evidenceId)
|
|
|
|
|
.set(CaseEvidence::getProperty, JSONUtil.toJsonStr(CollUtil.getFirst(value).getProperties()))
|
|
|
|
|
.set(CaseEvidence::getTitle, CollUtil.getFirst(value).getTitle())
|
|
|
|
@ -591,6 +607,16 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
if (CollUtil.isEmpty(evidenceDirectoryList)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 重新把外层的信息设置到证据文件对象中
|
|
|
|
|
for (EvidenceDirectoryDTO directoryDTO : verifyEvidenceReqVO.getEvidenceDirectoryList()) {
|
|
|
|
|
CaseEvidence evidenceInfo = directoryDTO.getEvidenceInfo();
|
|
|
|
|
List<EvidenceFileDTO> fileInfoList = directoryDTO.getFileInfoList();
|
|
|
|
|
if (CollUtil.isNotEmpty(fileInfoList) && evidenceInfo != null){
|
|
|
|
|
for (EvidenceFileDTO fileInfo : fileInfoList) {
|
|
|
|
|
fileInfo.setEvidenceInfo(evidenceInfo);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<EvidenceVerifyDTO> evidenceVerifyDTOS = evidenceDirectoryList.stream()
|
|
|
|
|
.flatMap(evidenceDirectoryDTO -> evidenceDirectoryDTO.listAllFile().stream())
|
|
|
|
@ -787,7 +813,10 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
|
|
|
|
|
// 不会存在需要创建目录的场景
|
|
|
|
|
CaseEvidence caseEvidence = super.lambdaQuery().eq(CaseEvidence::getDirectoryId, directory.getId()).one();
|
|
|
|
|
CaseEvidenceDetailDTO caseEvidenceDetailDTO = new CaseEvidenceDetailDTO();
|
|
|
|
|
caseEvidenceDetailDTO.setId(caseEvidence.getId());
|
|
|
|
|
if (null != caseEvidence){
|
|
|
|
|
caseEvidenceDetailDTO.setId(caseEvidence.getId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 证据名为目录名
|
|
|
|
|
caseEvidenceDetailDTO.setEvidenceName(evidenceFile.getDirectoryName());
|
|
|
|
|
caseEvidenceDetailDTO.setEvidenceType(directory.getCategoryId());
|
|
|
|
|