diff --git a/src/main/java/com/supervision/police/controller/CaseEvidenceController.java b/src/main/java/com/supervision/police/controller/CaseEvidenceController.java index 0628e87..89eaca0 100644 --- a/src/main/java/com/supervision/police/controller/CaseEvidenceController.java +++ b/src/main/java/com/supervision/police/controller/CaseEvidenceController.java @@ -52,6 +52,13 @@ public class CaseEvidenceController { return R.ok(success); } + @Operation(summary = "批量删除案件证据信息") + @DeleteMapping("/batchDeleteEvidence") + public R batchDeleteEvidence(@RequestBody List evidenceIdWrappers) { + boolean success = caseEvidenceService.batchDeleteEvidence(evidenceIdWrappers); + return R.ok(success); + } + @Operation(summary = "分页查询案件证据信息列表") @GetMapping("/pageListEvidence") diff --git a/src/main/java/com/supervision/police/service/CaseEvidenceService.java b/src/main/java/com/supervision/police/service/CaseEvidenceService.java index 934f240..74f3ec7 100644 --- a/src/main/java/com/supervision/police/service/CaseEvidenceService.java +++ b/src/main/java/com/supervision/police/service/CaseEvidenceService.java @@ -34,6 +34,8 @@ public interface CaseEvidenceService extends IService { */ boolean deleteEvidence(String evidenceId,String fileId); + boolean batchDeleteEvidence(List evidenceIdWrappers); + /** * 查询案件证据信息列表 * @param caseId 案件id @@ -144,5 +146,4 @@ public interface CaseEvidenceService extends IService { EvidenceDirectory createDirectory(EvidenceDirectoryReqVO evidenceDirectory); void syncEvidenceAnalysis(List evidenceList); - } diff --git a/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java b/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java index 3a3b852..1e630f9 100644 --- a/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/CaseEvidenceServiceImpl.java @@ -129,24 +129,50 @@ public class CaseEvidenceServiceImpl extends ServiceImpl new IllegalArgumentException("证据信息不存在")); - if (StrUtil.isEmpty(fileId)) { + // 同步删除文件夹 + String caseId = caseEvidence.getCaseId(); + List evidenceDirectoryS = listDirectoryTree(caseId); + deleteEvidence(evidenceId, fileId, evidenceDirectoryS, caseEvidence); + return true; + } + + private void deleteEvidence(String evidenceId, String fileId, + List 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 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 wrappers) { + + if (CollUtil.isEmpty(wrappers)){ + return true; + } + List evidenceIds = wrappers.stream().map(EvidenceIdWrapper::getEvidenceId).toList(); + List caseEvidenceList = super.listByIds(evidenceIds); + String caseId = CollUtil.getFirst(caseEvidenceList).getCaseId(); + List evidenceDirectoryS = listDirectoryTree(caseId); + + // 同步删除文件夹 + Map 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; }