From 342e5fa110cd2644c9cdd02ff7e56b331218c35c Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期四, 21 五月 2026 11:55:22 +0800
Subject: [PATCH] fix(inspectionTask) 附件调整

---
 src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java |   67 +++++++++++++++++++++++++++++++--
 1 files changed, 63 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
index 8c30cb3..215d605 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -161,10 +161,17 @@
 
             dto.setDateStr(inspectionTask.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
 
-            // 鍒濆鍖栦笁涓檮浠跺垪琛�
-            dto.setCommonFileList(finalCommonFiles.stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION.getValue())).collect(Collectors.toList()));
-            dto.setCommonFileListAfter(finalCommonFiles.stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_AFTER.getValue())).collect(Collectors.toList()));
-            dto.setCommonFileListBefore(finalCommonFiles.stream().filter(commonFile -> commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue())).collect(Collectors.toList()));
+            // 鍒濆鍖栦笁涓檮浠跺垪琛紝鎸塩ommonId鍜宼ype杩囨护
+            Long taskId = inspectionTask.getId();
+            dto.setCommonFileList(finalCommonFiles.stream()
+                    .filter(commonFile -> commonFile.getCommonId().equals(taskId) && commonFile.getType().equals(FileNameType.INSPECTION.getValue()))
+                    .collect(Collectors.toList()));
+            dto.setCommonFileListAfter(finalCommonFiles.stream()
+                    .filter(commonFile -> commonFile.getCommonId().equals(taskId) && commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_AFTER.getValue()))
+                    .collect(Collectors.toList()));
+            dto.setCommonFileListBefore(finalCommonFiles.stream()
+                    .filter(commonFile -> commonFile.getCommonId().equals(taskId) && commonFile.getType().equals(FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue()))
+                    .collect(Collectors.toList()));
 
 
             return dto;
@@ -211,11 +218,63 @@
             i = inspectionTaskMapper.insert(inspectionTask);
         } else {
             i = inspectionTaskMapper.updateById(inspectionTask);
+            // 缂栬緫鏃跺鐞嗛檮浠跺垹闄ら�昏緫
+            handleFileDeletion(inspectionTask.getId(), inspectionTaskDto);
         }
+
         commonFileService.migrateTempFilesToFormal(inspectionTask.getId(),inspectionTaskDto.getTempFileIds());
         return i;
     }
 
+    /**
+     * 澶勭悊闄勪欢鍒犻櫎閫昏緫锛氬姣斿師鏈夐檮浠跺拰浼犲叆鐨勯檮浠讹紝鍒犻櫎琚Щ闄ょ殑闄勪欢
+     */
+    private void handleFileDeletion(Long taskId, InspectionTaskDto inspectionTaskDto) {
+        // 鏌ヨ鍘熸湁鐨勪笁绉嶇被鍨嬮檮浠�
+        List<CommonFile> existingFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
+                .eq(CommonFile::getCommonId, taskId)
+                .in(CommonFile::getType, Arrays.asList(
+                        FileNameType.INSPECTION.getValue(),
+                        FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue(),
+                        FileNameType.INSPECTION_PRODUCTION_AFTER.getValue())));
+
+        if (CollectionUtils.isEmpty(existingFiles)) {
+            return;
+        }
+
+        // 鑾峰彇鍓嶇浼犲叆鐨勯檮浠禝D闆嗗悎
+        Set<Long> submittedFileIds = new HashSet<>();
+        if (inspectionTaskDto.getCommonFileList() != null) {
+            inspectionTaskDto.getCommonFileList().stream()
+                    .map(CommonFile::getId)
+                    .filter(Objects::nonNull)
+                    .forEach(submittedFileIds::add);
+        }
+        if (inspectionTaskDto.getCommonFileListBefore() != null) {
+            inspectionTaskDto.getCommonFileListBefore().stream()
+                    .map(CommonFile::getId)
+                    .filter(Objects::nonNull)
+                    .forEach(submittedFileIds::add);
+        }
+        if (inspectionTaskDto.getCommonFileListAfter() != null) {
+            inspectionTaskDto.getCommonFileListAfter().stream()
+                    .map(CommonFile::getId)
+                    .filter(Objects::nonNull)
+                    .forEach(submittedFileIds::add);
+        }
+
+        // 鎵惧嚭闇�瑕佸垹闄ょ殑闄勪欢ID锛堝師鏈変絾鍓嶇娌′紶鐨勶級
+        List<Long> toDeleteIds = existingFiles.stream()
+                .map(CommonFile::getId)
+                .filter(id -> !submittedFileIds.contains(id))
+                .collect(Collectors.toList());
+
+        // 鍒犻櫎闄勪欢
+        if (!toDeleteIds.isEmpty()) {
+            commonFileService.delCommonFileByIds(toDeleteIds.toArray(new Long[0]));
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int delByIds(Long[] ids) {

--
Gitblit v1.9.3