| | |
| | | if (timingTask.getAreaId() != null) { |
| | | queryWrapper.eq(TimingTask::getAreaId, timingTask.getAreaId()); |
| | | } |
| | | if (timingTask.getIsEnabled() != null) { |
| | | queryWrapper.eq(TimingTask::getIsEnabled, timingTask.getIsEnabled()); |
| | | } |
| | | IPage<TimingTask> taskPage = timingTaskMapper.selectPage(page, queryWrapper); |
| | | if (taskPage.getRecords().isEmpty()) { |
| | | return new Page<>(taskPage.getCurrent(), taskPage.getSize(), taskPage.getTotal()); |
| | |
| | | |
| | | if (Objects.isNull(timingTaskDto.getId())) { |
| | | timingTask.setRegistrationDate(LocalDate.now()); |
| | | timingTask.setActive(true); |
| | | if (timingTask.getIsEnabled() == null) { |
| | | timingTask.setIsEnabled(1); |
| | | } |
| | | timingTask.setNextExecutionTime(calculateFirstExecutionTime(timingTask)); |
| | | int result = timingTaskMapper.insert(timingTask); |
| | | if (result > 0) { |
| | | timingTaskScheduler.scheduleTimingTask(timingTask); |
| | | resetSchedulerStatus(timingTask); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | TimingTask existingTask = timingTaskMapper.selectById(timingTaskDto.getId()); |
| | | if (existingTask == null) { |
| | | throw new IllegalArgumentException("定时任务不存在: " + timingTaskDto.getId()); |
| | | } |
| | | if (timingTask.getIsEnabled() == null) { |
| | | timingTask.setIsEnabled(existingTask.getIsEnabled()); |
| | | } |
| | | if (timingTask.getNextExecutionTime() == null) { |
| | | timingTask.setNextExecutionTime(existingTask.getNextExecutionTime()); |
| | | } |
| | | if (timingTask.getRegistrationDate() == null) { |
| | | timingTask.setRegistrationDate(existingTask.getRegistrationDate()); |
| | | } |
| | | int result = timingTaskMapper.updateById(timingTask); |
| | | if (result > 0) { |
| | | timingTaskScheduler.rescheduleTimingTask(timingTask); |
| | | TimingTask latestTask = timingTaskMapper.selectById(timingTask.getId()); |
| | | if (latestTask != null) { |
| | | if (latestTask.getNextExecutionTime() == null) { |
| | | latestTask.setNextExecutionTime(calculateFirstExecutionTime(latestTask)); |
| | | timingTaskMapper.updateById(latestTask); |
| | | } |
| | | resetSchedulerStatus(latestTask); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public int changeEnable(Long taskId, Integer isEnabled) throws SchedulerException { |
| | | if (taskId == null || isEnabled == null) { |
| | | throw new IllegalArgumentException("id和isEnabled不能为空"); |
| | | } |
| | | TimingTask task = timingTaskMapper.selectById(taskId); |
| | | if (task == null) { |
| | | throw new IllegalArgumentException("定时任务不存在: " + taskId); |
| | | } |
| | | task.setIsEnabled(isEnabled); |
| | | int updated = timingTaskMapper.updateById(task); |
| | | if (updated > 0) { |
| | | if (task.getNextExecutionTime() == null) { |
| | | task.setNextExecutionTime(calculateFirstExecutionTime(task)); |
| | | timingTaskMapper.updateById(task); |
| | | } |
| | | resetSchedulerStatus(task); |
| | | } |
| | | return updated; |
| | | } |
| | | |
| | | private void resetSchedulerStatus(TimingTask task) throws SchedulerException { |
| | | timingTaskScheduler.rescheduleTimingTask(task); |
| | | if (isTaskEnabled(task.getIsEnabled())) { |
| | | timingTaskScheduler.resumeTimingTask(task.getId()); |
| | | } else { |
| | | timingTaskScheduler.pauseTimingTask(task.getId()); |
| | | } |
| | | } |
| | | |
| | | private boolean isTaskEnabled(Integer isEnabled) { |
| | | return isEnabled == null || isEnabled == 1; |
| | | } |
| | | |
| | | @Override |
| | | public int delByIds(Long[] ids) { |
| | | int i = timingTaskMapper.deleteBatchIds(Arrays.asList(ids)); |
| | | if (i > 0) { |