huminmin
2026-06-02 e18e4614ec036b8fa6f130f51fd19e24280a51d0
src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskScheduler.java
@@ -45,21 +45,26 @@
       try{
           TriggerKey triggerKey = new TriggerKey("triggerMaintenanceTask_" + task.getId());
           // 获取现有触发器并转换为 CronTrigger
           // 获取现有触发器
           Trigger oldTrigger = scheduler.getTrigger(triggerKey);
           // 不存在则添加
           if (oldTrigger == null) {
               scheduleMaintenanceTask(task);
               return;
           }
           if (!(oldTrigger instanceof CronTrigger)) {
               throw new SchedulerException("Existing trigger is not a CronTrigger");
           }
           // 3. 构建CronTrigger,确保持久化配置
           // 构建新的CronTrigger
           CronTrigger newTrigger = TriggerBuilder.newTrigger()
                   .withIdentity(triggerKey)                // 唯一标识,用于持久化存储
                   .withDescription(task.getTaskName() + "_TRIGGER") // 触发器描述
                   .forJob(oldTrigger.getJobKey())                       // 关联对应的Job
                   .withIdentity(triggerKey)
                   .withDescription(task.getTaskName() + "_TRIGGER")
                   .forJob(oldTrigger.getJobKey())
                   .withSchedule(CronScheduleBuilder
                           .cronSchedule(convertToCronExpression(task)) // 错过执行时的策略(根据业务调整)
                           .cronSchedule(convertToCronExpression(task))
                   )
                   // 4. 设置开始时间(若为null则立即生效)
                   .startAt(task.getNextExecutionTime() != null
                           ? Date.from(task.getNextExecutionTime().atZone(ZoneId.systemDefault()).toInstant())
                           : new Date())