From 8b09fbc19a96b57bf1d0e4d7c79b51a76aeca554 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 28 三月 2025 19:57:56 +0800 Subject: [PATCH] 修改bug --- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/QuartzUtil.java | 123 ++++++++++++++++++---------------------- 1 files changed, 55 insertions(+), 68 deletions(-) diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/QuartzUtil.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/QuartzUtil.java index 0234df5..107ef5e 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/QuartzUtil.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/QuartzUtil.java @@ -1,12 +1,12 @@ package com.stylefeng.guns.modular.system.util.quartz; import com.stylefeng.guns.modular.system.util.quartz.model.QuartzEnum; -import com.stylefeng.guns.modular.system.util.quartz.model.QuartzJob; import lombok.extern.slf4j.Slf4j; import org.quartz.*; import org.quartz.impl.matchers.GroupMatcher; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.io.InputStream; import java.util.Date; import java.util.List; import java.util.Set; @@ -18,25 +18,11 @@ * @Date 2024/3/20 11:12 */ @Slf4j +@Component public class QuartzUtil { - /** - * 构建调度器 - */ - public static Scheduler scheduler; - - /** - * 启动调度器 - * @param propertiesStream 配置文件流 - * @return - */ - public static void start(InputStream propertiesStream) throws SchedulerException { - if(null == scheduler){ - scheduler = SchedulerUtil.getScheduler(propertiesStream); - } - scheduler.start(); - log.info(QuartzEnum.SCHEDULER_START_SUCCESS.getValue()); - } + @Autowired + private Scheduler scheduler; @@ -44,40 +30,50 @@ /** * 添加普通定时任务 - * @param quartzJob 任务类 * @param startTime 任务开始执行时间,为空则立即执行 * @param intervalInMilliseconds 执行间隔毫秒数 * @param repeatCount 重复执行次数,-1表示永远执行 * @throws SchedulerException */ - public static void addSimpleQuartzTask(QuartzJob quartzJob, Date startTime, long intervalInMilliseconds, int repeatCount) throws SchedulerException { - if(null == scheduler){ - log.error("请先加载任务调取器"); + public void addSimpleQuartzTask(Class<? extends Job> clazz, String job_name, String group_name, JobDataMap jobDataMap, Date startTime, long intervalInMilliseconds, int repeatCount) throws SchedulerException { + JobKey jobKey = JobKey.jobKey(job_name, group_name); + if(scheduler.checkExists(jobKey)){ + log.error("[添加定时任务]已存在该作业,jobkey为:{}", jobKey); return; } - JobDetail jobDetail = getJobDetail(quartzJob); - Trigger simpleTrigger = getSimpleTrigger(quartzJob, startTime, intervalInMilliseconds, repeatCount); - scheduler.scheduleJob(jobDetail, simpleTrigger); - log.info(QuartzEnum.ADD_SIMPLE_TRIGGER_SUCCESS.getValue()); + // 构建 Job + JobDetail job = JobBuilder.newJob(clazz) + .setJobData(jobDataMap) + .withIdentity(jobKey).build(); + // 构建 Trigger + Trigger trigger = getSimpleTrigger(job_name, group_name, startTime, intervalInMilliseconds, repeatCount); + // 启动调度器 + scheduler.scheduleJob(job, trigger); + scheduler.start(); } /** * 添加Cron表达式的定时任务 - * @param quartzJob 任务类 * @param cron cron表达式 * @throws SchedulerException */ - public static void addCronQuartzTask(QuartzJob quartzJob, String cron) throws SchedulerException { - if(null == scheduler){ - log.error("请先加载任务调取器"); + public void addCronQuartzTask(Class<? extends Job> clazz, String job_name, String group_name, JobDataMap jobDataMap, String cron) throws SchedulerException { + JobKey jobKey = JobKey.jobKey(job_name, group_name); + if(scheduler.checkExists(jobKey)){ + log.error("[添加定时任务]已存在该作业,jobkey为:{}", jobKey); return; } - JobDetail jobDetail = getJobDetail(quartzJob); - Trigger cronTrigger = getCronTrigger(quartzJob, cron); - scheduler.scheduleJob(jobDetail, cronTrigger); - log.info(QuartzEnum.ADD_CRON_TRIGGER_SUCCESS.getValue()); + // 构建 Job + JobDetail job = JobBuilder.newJob(clazz) + .setJobData(jobDataMap) + .withIdentity(jobKey).build(); + // 构建 Trigger + Trigger trigger = getCronTrigger(job_name, group_name, cron); + // 启动调度器 + scheduler.scheduleJob(job, trigger); + scheduler.start(); } @@ -87,7 +83,7 @@ * @param group 任务分组 * @return */ - public static boolean deleteQuartzTask(String name, String group){ + public boolean deleteQuartzTask(String name, String group){ JobKey jobKey = new JobKey(name, group); boolean b = false; try { @@ -103,7 +99,7 @@ * @param jobKey * @return */ - public static boolean deleteQuartzTask(JobKey jobKey){ + public boolean deleteQuartzTask(JobKey jobKey){ boolean b = false; try { b = scheduler.deleteJob(jobKey); @@ -118,7 +114,7 @@ * @param group 分组名称 * @return */ - public static boolean deleteGroupQuartzTask(String group){ + public boolean deleteGroupQuartzTask(String group){ try { GroupMatcher<JobKey> groupMatcher = GroupMatcher.groupEquals(group); Set<JobKey> jobKeys = scheduler.getJobKeys(groupMatcher); @@ -139,7 +135,7 @@ * 清空所有定时任务 * @return */ - public static boolean deleteAllQuartzTask(){ + public boolean deleteAllQuartzTask(){ try { List<String> jobGroupNames = scheduler.getJobGroupNames(); for (String jobGroupName : jobGroupNames) { @@ -163,19 +159,16 @@ /** * 构建任务描述JobDetail对象 - * @param quartzJob 任务对象 * @return */ - private static JobDetail getJobDetail(QuartzJob quartzJob){ - String name = quartzJob.getName(); - String group = quartzJob.getGroup(); - if(null == name || "".equals(name)){ - name = QuartzEnum.JOB_NAME.getValue(); + private JobDetail getJobDetail(Job job, String job_name, String group_name){ + if(null == job_name || "".equals(job_name)){ + job_name = QuartzEnum.JOB_NAME.getValue(); } - if(null == group || "".equals(group)){ - group = QuartzEnum.DEFAULT_GROUP.getValue(); + if(null == group_name || "".equals(group_name)){ + group_name = QuartzEnum.DEFAULT_GROUP.getValue(); } - return getJobDetail(quartzJob, name, group, quartzJob.getJobDataMap()); + return getJobDetail(job, job_name, group_name, null); } @@ -188,10 +181,10 @@ * @param jobDataMap 自定义参数 * @return */ - private static JobDetail getJobDetail(Job job, String job_name, String group_name, JobDataMap jobDataMap){ + private JobDetail getJobDetail(Job job, String job_name, String group_name, JobDataMap jobDataMap){ JobDetail jobDetail = JobBuilder.newJob(job.getClass()) .withIdentity(job_name, group_name) - .usingJobData(jobDataMap) + .setJobData(jobDataMap) .build(); return jobDetail; } @@ -199,20 +192,17 @@ /** * 构建Trigger执行器 - * @param quartzJob 任务类 * @param startTime 任务开始执行时间,为空则立即执行 * @param intervalInMilliseconds 执行间隔毫秒数 * @param repeatCount 重读执行次数,-1表示永远执行 * @return */ - private static Trigger getSimpleTrigger(QuartzJob quartzJob, Date startTime, long intervalInMilliseconds, int repeatCount){ - String name = quartzJob.getName(); - String group = quartzJob.getGroup(); - if(null == name || "".equals(name)){ - name = QuartzEnum.JOB_NAME.getValue(); + private static Trigger getSimpleTrigger(String job_name, String group_name, Date startTime, long intervalInMilliseconds, int repeatCount){ + if(null == job_name || "".equals(job_name)){ + job_name = QuartzEnum.JOB_NAME.getValue(); } - if(null == group || "".equals(group)){ - group = QuartzEnum.DEFAULT_GROUP.getValue(); + if(null == group_name || "".equals(group_name)){ + group_name = QuartzEnum.DEFAULT_GROUP.getValue(); } TriggerBuilder<Trigger> triggerTriggerBuilder = TriggerBuilder.newTrigger(); if(null == startTime){ @@ -222,7 +212,7 @@ } SimpleTrigger trigger = triggerTriggerBuilder - .withIdentity(name, group) + .withIdentity(job_name, group_name) .withSchedule( SimpleScheduleBuilder .simpleSchedule() @@ -235,22 +225,19 @@ /** * 构建cronExpression表达式执行器 - * @param quartzJob 任务类 * @param cron cron表达式 * @return */ - private static Trigger getCronTrigger(QuartzJob quartzJob, String cron) { - String name = quartzJob.getName(); - String group = quartzJob.getGroup(); - if(null == name || "".equals(name)){ - name = QuartzEnum.JOB_NAME.getValue(); + private static Trigger getCronTrigger(String job_name, String group_name, String cron) { + if(null == job_name || "".equals(job_name)){ + job_name = QuartzEnum.JOB_NAME.getValue(); } - if(null == group || "".equals(group)){ - group = QuartzEnum.DEFAULT_GROUP.getValue(); + if(null == group_name || "".equals(group_name)){ + group_name = QuartzEnum.DEFAULT_GROUP.getValue(); } CronTrigger trigger = TriggerBuilder.newTrigger() .startNow() - .withIdentity(name, group) + .withIdentity(job_name, group_name) .withSchedule( CronScheduleBuilder.cronSchedule(cron) ).build(); -- Gitblit v1.7.1