1. 证据改造代码提交

topo_dev
xueqingkun 4 months ago
parent 6d4c605891
commit 6b1cdc73fa

@ -48,7 +48,7 @@ public class CaseEvidenceController {
@DeleteMapping("/deleteEvidence")
public R<Boolean> deleteEvidence(@RequestBody EvidenceIdWrapper evidenceIdWrapper) {
Assert.notEmpty(evidenceIdWrapper.getEvidenceId(), "证据id不能为空");
boolean success = caseEvidenceService.deleteEvidence(evidenceIdWrapper.getEvidenceId());
boolean success = caseEvidenceService.deleteEvidence(evidenceIdWrapper.getEvidenceId(),evidenceIdWrapper.getFileId());
return R.ok(success);
}

@ -78,6 +78,8 @@ public class CaseEvidenceDetailDTO {
*/
private String processStatus;
private String fileId;
public CaseEvidenceDetailDTO() {
}
@ -94,6 +96,19 @@ public class CaseEvidenceDetailDTO {
}
this.fileList = fileList;
}
public CaseEvidenceDetailDTO(EvidenceFileDTO caseEvidence, List<EvidenceFileDTO> fileList) {
if (Objects.nonNull(caseEvidence)){
this.id = caseEvidence.getEvidenceId();
this.evidenceName = caseEvidence.getEvidenceName();
this.evidenceType = caseEvidence.getEvidenceType();
this.provider = caseEvidence.getProvider();
this.processStatus = caseEvidence.getProcessStatus();
this.fileId = caseEvidence.getFileId();
this.directoryId = caseEvidence.getDirectoryId();
}
this.fileList = fileList;
}
public void setContentTypeValue(List<RecordFileDTO> recordFileDTOS){
if (CollUtil.isEmpty(this.fileList)){

@ -49,6 +49,7 @@ public class EvidenceCategoryDTO {
*/
private List<EvidenceCategoryDTO> child;
/**
*
*/

@ -51,12 +51,15 @@ public class EvidenceDirectoryDTO {
*/
private List<EvidenceFileDTO> fileInfoList = new ArrayList<>();
private CaseEvidence evidenceInfo;
private int level = -1;
public EvidenceDirectoryDTO() {
}
public EvidenceDirectoryDTO(List<EvidenceDirectoryDTO> children) {
}
public EvidenceDirectoryDTO(EvidenceDirectory directory){
if (directory == null){
@ -216,6 +219,13 @@ public class EvidenceDirectoryDTO {
evidenceFileDTO.setEvidenceInfo(caseEvidenceMap.get(evidenceFileDTO.getEvidenceId()));
}
}
if (this.level == 3 ){
if (CollUtil.isNotEmpty(this.getFileInfoList())){
this.evidenceInfo = caseEvidenceMap.get(CollUtil.getFirst(this.getFileInfoList()).getEvidenceId());
}
}
}
public void removeEmptyDirectory(){

@ -66,7 +66,17 @@ public class EvidenceFileDTO {
private String evidenceType;
public EvidenceFileDTO() {
}
public EvidenceFileDTO(CaseEvidence caseEvidence) {
this.evidenceId = caseEvidence.getId();
this.evidenceName = caseEvidence.getEvidenceName();
this.provider = caseEvidence.getProvider();
this.evidenceType = caseEvidence.getEvidenceType();
this.processStatus = caseEvidence.getProcessStatus();
this.directoryId = caseEvidence.getDirectoryId();
}
public CaseEvidence toCaseEvidence(String caseId) {
CaseEvidence caseEvidence = new CaseEvidence();
@ -79,7 +89,6 @@ public class EvidenceFileDTO {
if (StrUtil.isNotEmpty(this.processStatus)){
caseEvidence.setProcessStatus(EvidenceConstants.PROCESS_STATUS_MAPPING.get(this.processStatus));
}
caseEvidence.setProvider(this.getProvider());
return caseEvidence;
}

@ -6,4 +6,6 @@ import lombok.Data;
public class EvidenceIdWrapper {
private String evidenceId;
private String fileId;
}

@ -20,4 +20,6 @@ public class EvidenceVerifyDTO {
private String title;
private List<NotePromptExtractAttributesDto> properties;
private String directoryId;
}

@ -32,7 +32,7 @@ public interface CaseEvidenceService extends IService<CaseEvidence> {
* @param evidenceId id
* @return true/false
*/
boolean deleteEvidence(String evidenceId);
boolean deleteEvidence(String evidenceId,String fileId);
/**
*

@ -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());

@ -27,8 +27,11 @@ public class EvidenceCategoryServiceImpl extends ServiceImpl<EvidenceCategoryMap
List<EvidenceCategoryDTO> list = super.getBaseMapper().listCategoryDTO(caseType);
for (EvidenceCategoryDTO categoryDTO : list) {
categoryDTO.setChild(list.stream()
.filter(evidenceCategoryDTO -> StrUtil.equals(categoryDTO.getId(),evidenceCategoryDTO.getParentId())).toList());
List<EvidenceCategoryDTO> child = list.stream()
.filter(evidenceCategoryDTO -> StrUtil.equals(categoryDTO.getId(), evidenceCategoryDTO.getParentId())).toList();
if (CollUtil.isNotEmpty(child)){
categoryDTO.setChild(child);
}
}
return list.stream().filter(categoryDTO -> StrUtil.isEmpty(categoryDTO.getParentId())).toList();
}

Loading…
Cancel
Save