From 735704d585782169fa156f7bca72c6446fc62481 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Tue, 7 Oct 2025 14:29:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor(scheduler):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=B7=A1=E6=A3=80=E4=BB=BB=E5=8A=A1=E8=B0=83=E5=BA=A6=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除任务状态自动规范化逻辑 - 不再修改任务状态字段 - 仅根据任务状态 0=启用、1=停用 控制触发 - 移除运行状态缓存机制- 注释掉任务状态更新相关代码 - 调整任务记录失败状态值为2 --- .../scheduler/InspectionCronScheduler.java | 31 ++----------------- .../impl/InspectionTaskServiceImpl.java | 26 ++++++++-------- 2 files changed, 15 insertions(+), 42 deletions(-) diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/scheduler/InspectionCronScheduler.java b/ruoyi-video/src/main/java/com/ruoyi/video/scheduler/InspectionCronScheduler.java index 5eec258..5a3d7be 100644 --- a/ruoyi-video/src/main/java/com/ruoyi/video/scheduler/InspectionCronScheduler.java +++ b/ruoyi-video/src/main/java/com/ruoyi/video/scheduler/InspectionCronScheduler.java @@ -24,9 +24,10 @@ import java.util.concurrent.TimeUnit; /** * 内部巡检任务调度器(不依赖若依Quartz) - * - 周期性轮询 v_inspection_task 中启用(status='0')的任务 + * - 周期性轮询 v_inspection_task 中任务,按状态 0=启用、1=停用 控制是否触发 * - 使用 Spring CronExpression 计算下一次执行 * - 到点调用 InspectionTaskService.executeInspectionTask(taskId) + * - 不修改任务的状态字段(状态仅由外部手动启停控制) */ @Slf4j @Component @@ -119,21 +120,6 @@ public class InspectionCronScheduler { } catch (Exception e) { log.debug("更新nextExecuteTime失败: taskId={}, err={}", taskId, e.getMessage()); } - - // 若发现状态为“2”(服务执行完成后置状态),将其规范化回“0”以维持启用 - if ("2".equals(status)) { - try { - InspectionTask patch = new InspectionTask(); - patch.setTaskId(taskId); - patch.setStatus("0"); - patch.setUpdateTime(DateUtils.getNowDate()); - inspectionTaskMapper.updateInspectionTask(patch); - task.setStatus("0"); - } catch (Exception e) { - log.debug("规范化任务状态失败: taskId={}, err={}", taskId, e.getMessage()); - } - } - // 到点触发判定:如果 next <= now + 10s 窗口内,就触发一次 long nowMs = System.currentTimeMillis(); long nextMs = nextDate.getTime(); @@ -164,19 +150,6 @@ public class InspectionCronScheduler { } catch (Exception e) { log.error("执行巡检任务触发失败: taskId={}, err={}", taskId, e.getMessage(), e); } - - // 延迟规范化状态为启用(服务执行期间可能将其改为1或2) - try { - poller.schedule(() -> { - try { - InspectionTask patch2 = new InspectionTask(); - patch2.setTaskId(taskId); - patch2.setStatus("0"); - patch2.setUpdateTime(DateUtils.getNowDate()); - inspectionTaskMapper.updateInspectionTask(patch2); - } catch (Exception ignored) {} - }, 3, TimeUnit.SECONDS); - } catch (Exception ignore) {} } } } catch (Exception e) { diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskServiceImpl.java b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskServiceImpl.java index 2de7b31..4fc25ed 100644 --- a/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskServiceImpl.java +++ b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskServiceImpl.java @@ -64,7 +64,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { private IVMinioObjectService vMinioObjectService; // 运行状态缓存(避免重复执行) - private final Map runningTasks = new ConcurrentHashMap<>(); +// private final Map runningTasks = new ConcurrentHashMap<>(); private ModelManager modelManager; // 延迟初始化,避免启动时的依赖问题 @@ -117,14 +117,14 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { if (task == null) { return false; } - + // 启用任务,使用新版实体类的方法 task.setStatus("0"); // 0表示启用 task.setUpdateTime(DateUtils.getNowDate()); inspectionTaskMapper.updateInspectionTask(task); - - runningTasks.put(taskId, true); - + +// runningTasks.put(taskId, true); + // 这里应该集成到Quartz定时任务中 log.info("启动巡检任务: {}", taskId); return true; @@ -142,7 +142,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { task.setUpdateTime(DateUtils.getNowDate()); inspectionTaskMapper.updateInspectionTask(task); - runningTasks.remove(taskId); +// runningTasks.remove(taskId); log.info("停止巡检任务: {}", taskId); return true; @@ -170,8 +170,8 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { try { // 更新任务状态为执行中 - task.setStatus("1"); - inspectionTaskMapper.updateInspectionTask(task); +// task.setStatus("1"); +// inspectionTaskMapper.updateInspectionTask(task); // 获取设备信息 Device device = deviceService.selectDeviceByDeviceId(task.getDeviceId()); @@ -191,16 +191,16 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { inspectionTaskRecordMapper.updateInspectionTaskRecord(record); // 更新任务状态为已完成 - task.setStatus("2"); - inspectionTaskMapper.updateInspectionTask(task); +// task.setStatus("0"); +// inspectionTaskMapper.updateInspectionTask(task); } catch (Exception e) { log.error("巡检任务执行失败: taskId={}", taskId, e); updateRecordFailed(record, e.getMessage()); // 更新任务状态为已完成(虽然失败) - task.setStatus("2"); - inspectionTaskMapper.updateInspectionTask(task); +// task.setStatus("0"); +// inspectionTaskMapper.updateInspectionTask(task); } } @@ -208,7 +208,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService { * 更新记录为失败状态 */ private void updateRecordFailed(InspectionTaskRecord record, String errorMsg) { - record.setStatus(1); // 失败 + record.setStatus(2); // 失败 record.setResult("执行失败: " + errorMsg); inspectionTaskRecordMapper.updateInspectionTaskRecord(record); }