yuan
2026-06-26 fbda2f16d63dcad15de13ab0997ef51257e5815b
feat: 更新定时任务调度逻辑,支持启用状态下重新调度任务
已修改1个文件
17 ■■■■ 文件已修改
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
@@ -168,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) {
                // 从启用变为停用,移除任务
@@ -178,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) {
@@ -188,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;
        }