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