| | |
| | | |
| | | @Override |
| | | public AjaxResult add(MaintenanceTask maintenanceTask) { |
| | | maintenanceTask.setActive(true); |
| | | // 计算首次执行时间 |
| | | TimingTask task = new TimingTask(); |
| | | task.setFrequencyType(maintenanceTask.getFrequencyType()); |
| | |
| | | maintenanceTask.setNextExecutionTime(firstExecutionTime); |
| | | int insert = maintenanceTaskMapper.insert(maintenanceTask); |
| | | if (insert > 0) { |
| | | maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask); |
| | | // 只有当 isActive 为 1 时才添加到定时任务调度器 |
| | | if (maintenanceTask.getIsActive() != null && maintenanceTask.getIsActive() == 1) { |
| | | maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask); |
| | | } |
| | | } |
| | | return AjaxResult.success("添加成功"); |
| | | } |
| | |
| | | if (maintenanceTask1 == null) { |
| | | return AjaxResult.warn("没有此数据"); |
| | | } |
| | | |
| | | // 保存旧的 isActive 状态 |
| | | Integer oldIsActive = maintenanceTask1.getIsActive(); |
| | | Integer newIsActive = maintenanceTask.getIsActive(); |
| | | |
| | | BeanUtils.copyProperties(maintenanceTask, maintenanceTask1); |
| | | int update = maintenanceTaskMapper.updateById(maintenanceTask1); |
| | | if (update > 0) { |
| | | maintenanceTaskScheduler.rescheduleMaintenanceTask(maintenanceTask1); |
| | | // 处理 isActive 状态变化 |
| | | if (newIsActive != null && newIsActive == 1) { |
| | | // 新状态为启用:添加到定时任务调度器 |
| | | if (oldIsActive == null || oldIsActive != 1) { |
| | | // 从未启用变为启用,添加到调度器 |
| | | maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask1); |
| | | } else { |
| | | // 已经启用,更新调度器中的任务 |
| | | maintenanceTaskScheduler.rescheduleMaintenanceTask(maintenanceTask1); |
| | | } |
| | | } else { |
| | | // 新状态为停用:从定时任务调度器中移除 |
| | | if (oldIsActive != null && oldIsActive == 1) { |
| | | maintenanceTaskScheduler.unscheduleMaintenanceTask(maintenanceTask1.getId()); |
| | | } |
| | | } |
| | | } |
| | | return AjaxResult.success("更新成功"); |
| | | } |
| | | |
| | | @Override |
| | | public AjaxResult delete(List<Long> ids) { |
| | | // 先从定时任务调度器中移除所有待删除的任务 |
| | | ids.forEach(id -> { |
| | | try { |
| | | maintenanceTaskScheduler.unscheduleMaintenanceTask(id); |
| | | } catch (Exception e) { |
| | | log.error("删除定时任务调度失败, id: {}", id, e); |
| | | } |
| | | }); |
| | | |
| | | // 再从数据库中删除记录 |
| | | int delete = maintenanceTaskMapper.deleteBatchIds(ids); |
| | | if (delete > 0) { |
| | | ids.forEach(id -> { |
| | | maintenanceTaskScheduler.unscheduleMaintenanceTask(id); |
| | | }); |
| | | return AjaxResult.success("删除成功"); |
| | | } |
| | | return AjaxResult.success("删除成功"); |
| | | return AjaxResult.error("删除失败"); |
| | | } |
| | | } |