From bfa0b11dfbfe5b71e11f4544e688e4d9f325d1b5 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 09 六月 2025 10:26:51 +0800
Subject: [PATCH] 修改bug和管理后台报表
---
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/QuartzUtil.java | 125 ++++++++++++++++++-----------------------
1 files changed, 54 insertions(+), 71 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 8d9a039..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,29 +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){
- if(null == scheduler){
- scheduler = SchedulerUtil.getScheduler(propertiesStream);
- }
- try {
- scheduler.start();
- log.info(QuartzEnum.SCHEDULER_START_SUCCESS.getValue());
- } catch (SchedulerException e) {
- e.printStackTrace();
- }
- }
+ @Autowired
+ private Scheduler scheduler;
@@ -48,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();
}
@@ -91,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 {
@@ -107,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);
@@ -122,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);
@@ -143,7 +135,7 @@
* 清空所有定时任务
* @return
*/
- public static boolean deleteAllQuartzTask(){
+ public boolean deleteAllQuartzTask(){
try {
List<String> jobGroupNames = scheduler.getJobGroupNames();
for (String jobGroupName : jobGroupNames) {
@@ -167,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);
}
@@ -192,7 +181,7 @@
* @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)
.setJobData(jobDataMap)
@@ -203,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){
@@ -226,7 +212,7 @@
}
SimpleTrigger trigger = triggerTriggerBuilder
- .withIdentity(name, group)
+ .withIdentity(job_name, group_name)
.withSchedule(
SimpleScheduleBuilder
.simpleSchedule()
@@ -239,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