liukangdong
2024-09-29 b2d360d9113b6955287108ca9e90d76a1f3c1419
server/service/src/main/java/com/doumee/dao/timer/scheduler/QuartzManage.java
@@ -1,5 +1,7 @@
package com.doumee.dao.timer.scheduler;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.dao.timer.entity.JobState;
import com.doumee.dao.timer.entity.QuartzJob;
import org.quartz.*;
@@ -85,14 +87,18 @@
            CronScheduleBuilder scheduleBuilder = CronScheduleBuilder
                                                .cronSchedule(quartzJob.getCronExpres())
                                                .withMisfireHandlingInstructionDoNothing();
            // 任务触发器
            CronTrigger trigger = getCronTrigger(quartzJob.getId())
                                .getTriggerBuilder().withIdentity(triggerKey)
                                .withSchedule(scheduleBuilder).build();
            trigger.getJobDataMap().put(QuartzJob.JOB_PARAM_KEY, quartzJob);
            scheduler.rescheduleJob(triggerKey, trigger);
            // 状态校验
            checkStop(quartzJob) ;
            CronTrigger t =  getCronTrigger(quartzJob.getId());
            if(t !=null){
                // 任务触发器
                CronTrigger trigger = t
                        .getTriggerBuilder().withIdentity(triggerKey)
                        .withSchedule(scheduleBuilder).build();
                trigger.getJobDataMap().put(QuartzJob.JOB_PARAM_KEY, quartzJob);
                scheduler.rescheduleJob(triggerKey, trigger);
                // 状态校验
                checkStop(quartzJob) ;
            }
        } catch (SchedulerException e) {
            throw new RuntimeException("updateJob Fail",e) ;
        }
@@ -142,7 +148,7 @@
                this.scheduler.pauseJob(getJobKey(quartzJob.getId()));
            }
        } catch (SchedulerException e){
            throw new RuntimeException("pauseJob Fail",e) ;
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"pauseJob Fail",e) ;
        }
    }