2 天以前 e772b3d8cf395e9d441419373d883601350fbf0b
src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
@@ -147,4 +147,47 @@
        }
        return AjaxResult.success("删除成功");
    }
    @Override
    public AjaxResult changeEnable(Long id, Integer isEnabled) {
        MaintenanceTask oldTask = maintenanceTaskMapper.selectById(id);
        if (oldTask == null) {
            return AjaxResult.error("保养任务不存在");
        }
        MaintenanceTask update = new MaintenanceTask();
        update.setId(id);
        update.setIsEnabled(isEnabled);
        update.setActive(isEnabled != null && isEnabled == 1);
        int result = maintenanceTaskMapper.updateById(update);
        if (result > 0) {
            try {
                if (isEnabled != null && isEnabled == 1) {
                    // 启用:恢复或重新调度
                    if (oldTask.getIsEnabled() != null && oldTask.getIsEnabled() == 0) {
                        // 从禁用改为启用,重新计算下次执行时间(如果没有)
                        if (oldTask.getNextExecutionTime() == null || oldTask.getNextExecutionTime().isBefore(LocalDateTime.now())) {
                            TimingTask tempTask = new TimingTask();
                            tempTask.setFrequencyType(oldTask.getFrequencyType());
                            tempTask.setFrequencyDetail(oldTask.getFrequencyDetail());
                            LocalDateTime nextTime = timingTaskService.calculateFirstExecutionTime(tempTask);
                            update.setNextExecutionTime(nextTime);
                            maintenanceTaskMapper.updateById(update);
                        }
                        maintenanceTaskScheduler.scheduleMaintenanceTask(oldTask);
                    } else {
                        maintenanceTaskScheduler.resumeMaintenanceTask(id);
                    }
                } else {
                    // 禁用:暂停调度
                    maintenanceTaskScheduler.pauseMaintenanceTask(id);
                }
            } catch (Exception e) {
                log.error("调整保养任务调度状态失败", e);
            }
            return AjaxResult.success("更新成功");
        }
        return AjaxResult.error("更新失败");
    }
}