From 0dc3779c31af4f070d3dfec5cc9910d9caa7687c Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期六, 23 五月 2026 17:17:12 +0800
Subject: [PATCH] fix: 修改定时任务报错、任务可以开启和关闭、删除时移除定时任务
---
src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java | 62 +++++++++++++++++++++---------
1 files changed, 43 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
index 0c00da7..c666f3f 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
@@ -11,8 +11,8 @@
import com.ruoyi.inspectiontask.service.impl.TimingTaskServiceImpl;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@@ -24,19 +24,13 @@
*/
@Service
@Slf4j
+@RequiredArgsConstructor
public class MaintenanceTaskServiceImpl extends ServiceImpl<MaintenanceTaskMapper, MaintenanceTask> implements MaintenanceTaskService {
- @Autowired
- private MaintenanceTaskMapper maintenanceTaskMapper;
-
- @Autowired
- private SysUserMapper sysUserMapper;
-
- @Autowired
- private TimingTaskServiceImpl timingTaskService;
-
- @Autowired
- private MaintenanceTaskScheduler maintenanceTaskScheduler;
+ private final MaintenanceTaskMapper maintenanceTaskMapper;
+ private final SysUserMapper sysUserMapper;
+ private final TimingTaskServiceImpl timingTaskService;
+ private final MaintenanceTaskScheduler maintenanceTaskScheduler;
@Override
public AjaxResult listPage(Page page, MaintenanceTask maintenanceTask) {
@@ -73,7 +67,6 @@
@Override
public AjaxResult add(MaintenanceTask maintenanceTask) {
- maintenanceTask.setActive(true);
// 璁$畻棣栨鎵ц鏃堕棿
TimingTask task = new TimingTask();
task.setFrequencyType(maintenanceTask.getFrequencyType());
@@ -82,7 +75,10 @@
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("娣诲姞鎴愬姛");
}
@@ -93,22 +89,50 @@
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("鍒犻櫎澶辫触");
}
}
--
Gitblit v1.9.3