1. 修复证据改造bug

topo_dev
xueqingkun 6 months ago
parent ae39e7428d
commit ebaa73b40a

@ -52,6 +52,13 @@ public class CaseEvidenceController {
return R.ok(success);
}
@Operation(summary = "批量删除案件证据信息")
@DeleteMapping("/batchDeleteEvidence")
public R<Boolean> batchDeleteEvidence(@RequestBody List<EvidenceIdWrapper> evidenceIdWrappers) {
boolean success = caseEvidenceService.batchDeleteEvidence(evidenceIdWrappers);
return R.ok(success);
}
@Operation(summary = "分页查询案件证据信息列表")
@GetMapping("/pageListEvidence")

@ -34,6 +34,8 @@ public interface CaseEvidenceService extends IService<CaseEvidence> {
*/
boolean deleteEvidence(String evidenceId,String fileId);
boolean batchDeleteEvidence(List<EvidenceIdWrapper> evidenceIdWrappers);
/**
*
* @param caseId id
@ -144,5 +146,4 @@ public interface CaseEvidenceService extends IService<CaseEvidence> {
EvidenceDirectory createDirectory(EvidenceDirectoryReqVO evidenceDirectory);
void syncEvidenceAnalysis(List<CaseEvidenceDetailDTO> evidenceList);
}

@ -129,24 +129,50 @@ public class CaseEvidenceServiceImpl extends ServiceImpl<CaseEvidenceMapper, Cas
public boolean deleteEvidence(String evidenceId, String fileId) {
CaseEvidence caseEvidence = super.getOptById(evidenceId).orElseThrow(() -> new IllegalArgumentException("证据信息不存在"));
if (StrUtil.isEmpty(fileId)) {
// 同步删除文件夹
String caseId = caseEvidence.getCaseId();
List<EvidenceDirectoryDTO> evidenceDirectoryS = listDirectoryTree(caseId);
deleteEvidence(evidenceId, fileId, evidenceDirectoryS, caseEvidence);
return true;
}
private void deleteEvidence(String evidenceId, String fileId,
List<EvidenceDirectoryDTO> evidenceDirectoryS, CaseEvidence caseEvidence) {
EvidenceDirectoryDTO directoryDTO = new EvidenceDirectoryDTO(evidenceDirectoryS);
EvidenceDirectoryDTO directory = directoryDTO.findDirectory(caseEvidence.getDirectoryId());
if (directory.getLevel() != 3 || StrUtil.isEmpty(fileId)) {
// 当前证据不属于三级目录下的证据,删除文件的同时也要清楚证据数据
boolean remove = super.lambdaUpdate().eq(CaseEvidence::getId, evidenceId).remove();
if (remove) {
evidenceFileService.lambdaUpdate().eq(EvidenceFile::getEvidenceId, evidenceId).remove();
// 同步删除文件夹
String caseId = caseEvidence.getCaseId();
List<EvidenceDirectoryDTO> evidenceDirectoryS = listDirectoryTree(caseId);
EvidenceDirectoryDTO directoryDTO = new EvidenceDirectoryDTO(evidenceDirectoryS);
EvidenceDirectoryDTO directory = directoryDTO.findDirectory(caseEvidence.getDirectoryId());
evidenceDirectoryService.removeDirectoryIf(directory.getId(),()->directory.getLevel() == 3);
evidenceDirectoryService.removeDirectoryIf(directory.getId(), () -> directory.getLevel() == 3);
caseStatusManageService.whenUpdateEvidence(caseEvidence.getCaseId());
}
} else {
evidenceFileService.lambdaUpdate().eq(EvidenceFile::getEvidenceId, evidenceId)
.eq(EvidenceFile::getFileId, fileId).remove();
}
}
@Override
@Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class)
public boolean batchDeleteEvidence(List<EvidenceIdWrapper> wrappers) {
if (CollUtil.isEmpty(wrappers)){
return true;
}
List<String> evidenceIds = wrappers.stream().map(EvidenceIdWrapper::getEvidenceId).toList();
List<CaseEvidence> caseEvidenceList = super.listByIds(evidenceIds);
String caseId = CollUtil.getFirst(caseEvidenceList).getCaseId();
List<EvidenceDirectoryDTO> evidenceDirectoryS = listDirectoryTree(caseId);
// 同步删除文件夹
Map<String, CaseEvidence> caseEvidenceMap = caseEvidenceList.stream().collect(Collectors.toMap(CaseEvidence::getId, v -> v));
for (EvidenceIdWrapper evidenceIdWrapper : wrappers) {
deleteEvidence(evidenceIdWrapper.getEvidenceId(), evidenceIdWrapper.getFileId(),
evidenceDirectoryS, caseEvidenceMap.get(evidenceIdWrapper.getEvidenceId()));
}
return true;
}

Loading…
Cancel
Save