From b801ae3807276a960b205bf2e51b1f934cd605ac Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期四, 18 六月 2026 16:56:47 +0800
Subject: [PATCH] feat 设备巡检 调整为一次性完成

---
 src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java |   97 ++++++++++++++++++++++++++++++++++--------------
 1 files changed, 69 insertions(+), 28 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 215d605..8e1f365 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -18,7 +18,9 @@
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.inspectiontask.dto.InspectionTaskDto;
 import com.ruoyi.inspectiontask.mapper.InspectionTaskMapper;
+import com.ruoyi.inspectiontask.mapper.TimingTaskMapper;
 import com.ruoyi.inspectiontask.pojo.InspectionTask;
+import com.ruoyi.inspectiontask.pojo.TimingTask;
 import com.ruoyi.inspectiontask.service.InspectionTaskService;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
@@ -31,6 +33,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.IOException;
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.function.Function;
@@ -71,6 +74,9 @@
 
     @Autowired
     private CommonFileServiceImpl commonFileService;
+
+    @Autowired
+    private TimingTaskMapper timingTaskMapper;
 
     @Override
     public IPage<InspectionTaskDto> selectInspectionTaskList(Page<InspectionTask> page, InspectionTaskDto inspectionTaskDto) {
@@ -128,11 +134,25 @@
         //澶勭悊闄勪欢
         List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
                 .in(CommonFile::getCommonId, ids)
-                .in(CommonFile::getType, Arrays.asList(FileNameType.INSPECTION.getValue(), FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue(), FileNameType.INSPECTION_PRODUCTION_AFTER.getValue())));
+                .eq(CommonFile::getType, FileNameType.INSPECTION.getValue()));
         if(commonFiles == null){
             commonFiles = new ArrayList<>();
         }
         List<CommonFile> finalCommonFiles = commonFiles;
+
+        // 鎵归噺鏌ヨ瀹氭椂浠诲姟鑾峰彇nextExecutionTime
+        List<Long> timingTaskIds = entityPage.getRecords().stream()
+                .map(InspectionTask::getTimingTaskId)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+        Map<Long, TimingTask> timingTaskMap = new HashMap<>();
+        if (!timingTaskIds.isEmpty()) {
+            List<TimingTask> timingTasks = timingTaskMapper.selectBatchIds(timingTaskIds);
+            timingTaskMap = timingTasks.stream()
+                    .collect(Collectors.toMap(TimingTask::getId, Function.identity()));
+        }
+        final Map<Long, TimingTask> finalTimingTaskMap = timingTaskMap;
+        final LocalDateTime now = LocalDateTime.now();
 
         List<InspectionTaskDto> dtoList = entityPage.getRecords().stream().map(inspectionTask -> {
             InspectionTaskDto dto = new InspectionTaskDto();
@@ -161,18 +181,23 @@
 
             dto.setDateStr(inspectionTask.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
 
-            // 鍒濆鍖栦笁涓檮浠跺垪琛紝鎸塩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()))
+                    .filter(commonFile -> commonFile.getCommonId().equals(taskId))
                     .collect(Collectors.toList()));
 
+            // 璁$畻鐘舵�侊細宸茶繃鏈� > 宸℃涓� > 寰呭贰妫�
+            String status = calculateStatus(inspectionTask, finalTimingTaskMap, now);
+            dto.setStatus(status);
+
+            // 璁剧疆nextExecutionTime鐢ㄤ簬鍓嶇灞曠ず
+            if (inspectionTask.getTimingTaskId() != null) {
+                TimingTask timingTask = finalTimingTaskMap.get(inspectionTask.getTimingTaskId());
+                if (timingTask != null) {
+                    dto.setNextExecutionTime(timingTask.getNextExecutionTime());
+                }
+            }
 
             return dto;
         }).collect(Collectors.toList());
@@ -206,6 +231,40 @@
         return dto;
     }
 
+    /**
+     * 璁$畻宸℃浠诲姟鐘舵��
+     * @param inspectionTask 宸℃浠诲姟
+     * @param timingTaskMap 瀹氭椂浠诲姟Map
+     * @param now 褰撳墠鏃堕棿
+     * @return COMPLETED-宸插畬鎴愬贰妫�锛孍XPIRED-宸茶繃鏈燂紝PENDING-寰呭贰妫�
+     */
+    private String calculateStatus(InspectionTask inspectionTask, Map<Long, TimingTask> timingTaskMap, LocalDateTime now) {
+        if(inspectionTask.getTimingTaskId() == null){
+            return "EXPIRED";
+        }
+        boolean isExpired = false;
+        // 鍒ゆ柇鏄惁宸茶繃鏈�
+        if (inspectionTask.getTimingTaskId() != null) {
+            TimingTask timingTask = timingTaskMap.get(inspectionTask.getTimingTaskId());
+            if (timingTask != null && timingTask.getNextExecutionTime() != null) {
+                isExpired = now.isAfter(timingTask.getNextExecutionTime());
+            }
+        }
+
+        // 1. 鍒ゆ柇鏄惁宸插畬鎴愬贰妫�
+        if (inspectionTask.getHasException() != null) {
+            return "COMPLETED";
+        }
+
+        // 3. 宸茶繃鏈�
+        if (isExpired) {
+            return "EXPIRED";
+        }
+
+        // 4. 寰呭贰妫�
+        return "PENDING";
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int addOrEditInspectionTask(InspectionTaskDto inspectionTaskDto) throws IOException {
@@ -230,13 +289,9 @@
      * 澶勭悊闄勪欢鍒犻櫎閫昏緫锛氬姣斿師鏈夐檮浠跺拰浼犲叆鐨勯檮浠讹紝鍒犻櫎琚Щ闄ょ殑闄勪欢
      */
     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())));
+                .eq(CommonFile::getType, FileNameType.INSPECTION.getValue()));
 
         if (CollectionUtils.isEmpty(existingFiles)) {
             return;
@@ -246,18 +301,6 @@
         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);
@@ -283,8 +326,6 @@
             return 0;
         }
         commonFileService.deleteByBusinessIds(Arrays.asList(ids),FileNameType.INSPECTION.getValue());
-        commonFileService.deleteByBusinessIds(Arrays.asList(ids),FileNameType.INSPECTION_PRODUCTION_BEFORE.getValue());
-        commonFileService.deleteByBusinessIds(Arrays.asList(ids),FileNameType.INSPECTION_PRODUCTION_AFTER.getValue());
         return inspectionTaskMapper.deleteBatchIds(Arrays.asList(ids));
     }
 

--
Gitblit v1.9.3