yuan
2026-06-26 fbda2f16d63dcad15de13ab0997ef51257e5815b
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
@@ -53,6 +53,7 @@
        if (StringUtils.isNotBlank(timingTask.getTaskName())) {
            queryWrapper.like(TimingTask::getTaskName, timingTask.getTaskName());
        }
        queryWrapper.orderByDesc(TimingTask::getCreateTime);
        IPage<TimingTask> taskPage = timingTaskMapper.selectPage(page, queryWrapper);
        // 2. 如果没有数据,直接返回空分页
@@ -78,6 +79,13 @@
                        .filter(StringUtils::isNotBlank)
                        .map(Long::valueOf)
                        .forEach(userIds::add);
            }
        });
        // 收集验收入ID
        taskPage.getRecords().forEach(task -> {
            if (task.getInspectionAcceptorId() != null) {
                userIds.add(task.getInspectionAcceptorId());
            }
        });
@@ -109,6 +117,11 @@
                    }
                }
                dto.setInspector(inspectorNickNames);
            }
            // 设置验收人昵称
            if (task.getInspectionAcceptorId() != null) {
                dto.setInspectionAcceptor(userNickNameMap.getOrDefault(task.getInspectionAcceptorId(), "未知用户"));
            }
            return dto;
@@ -155,6 +168,10 @@
            TimingTask oldTask = timingTaskMapper.selectById(timingTaskDto.getId());
            Integer oldIsActive = oldTask != null ? oldTask.getIsActive() : 0;
            Integer newIsActive = timingTask.getIsActive();
            if (Integer.valueOf(1).equals(newIsActive)) {
                LocalDateTime firstExecutionTime = calculateFirstExecutionTime(timingTask);
                timingTask.setNextExecutionTime(firstExecutionTime);
            }
            int result = timingTaskMapper.updateById(timingTask);
            if (result > 0) {
                // 从启用变为停用,移除任务
@@ -165,9 +182,6 @@
                // 从停用变为启用,添加任务
                else if (!Integer.valueOf(1).equals(oldIsActive)
                        && Integer.valueOf(1).equals(newIsActive)) {
                    // 计算首次执行时间
                    LocalDateTime firstExecutionTime = calculateFirstExecutionTime(timingTask);
                    timingTask.setNextExecutionTime(firstExecutionTime);
                    try {
                        timingTaskScheduler.scheduleTimingTask(timingTask);
                    } catch (Exception e) {
@@ -175,6 +189,16 @@
                        throw new ServiceException("添加巡检任务失败");
                    }
                }
                // 保持启用状态,重新调度任务
                else if (Integer.valueOf(1).equals(oldIsActive)
                        && Integer.valueOf(1).equals(newIsActive)) {
                    try {
                        timingTaskScheduler.rescheduleTimingTask(timingTask);
                    } catch (Exception e) {
                        log.error("更新巡检任务失败 : {}", e.getMessage(), e);
                        throw new ServiceException("更新巡检任务失败");
                    }
                }
            }
            return result;
        }