From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/job/QuartzJobUtil.java |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 73 insertions(+), 0 deletions(-)

diff --git a/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/job/QuartzJobUtil.java b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/job/QuartzJobUtil.java
new file mode 100644
index 0000000..42eac3e
--- /dev/null
+++ b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/job/QuartzJobUtil.java
@@ -0,0 +1,73 @@
+package jnpf.flowable.job;
+
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.*;
+import org.quartz.impl.StdSchedulerFactory;
+
+import java.util.Date;
+
+/**
+ * 绫荤殑鎻忚堪
+ *
+ * @author JNPF@YinMai Info. Co., Ltd
+ * @version 5.0.x
+ * @since 2024/9/20 16:48
+ */
+@Slf4j
+public class QuartzJobUtil {
+
+    private QuartzJobUtil() {
+    }
+
+    private static final SchedulerFactory schedulerFactory = new StdSchedulerFactory();
+
+    public static void addJob(String jobName, String cron, Class<? extends Job> jobClass, JobDataMap jobDataMap, Date startDate, Date endDate) {
+        if (jobDataMap == null) {
+            jobDataMap = new JobDataMap();
+        }
+        JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName).setJobData(jobDataMap).build();
+        Trigger trigger = TriggerBuilder.newTrigger()
+                .forJob(jobDetail)
+                .withIdentity(jobName)
+                .withSchedule(CronScheduleBuilder.cronSchedule(cron))
+                .startAt(startDate == null ? new Date() : startDate)
+                .endAt(endDate != null ? endDate : null)
+                .build();
+        try {
+            //鑾峰彇瀹炰緥鍖栫殑 Scheduler銆�
+            Scheduler scheduler = getScheduler();
+            //灏嗕换鍔″強鍏惰Е鍙戝櫒鏀惧叆璋冨害鍣�
+            scheduler.scheduleJob(jobDetail, trigger);
+            //璋冨害鍣ㄥ紑濮嬭皟搴︿换鍔�
+            if (!scheduler.isShutdown()) {
+                scheduler.start();
+            }
+        } catch (SchedulerException e) {
+            log.error("鏂板璋冨害澶辫触:" + e.getMessage());
+        }
+    }
+
+    private static Scheduler getScheduler() {
+        try {
+            return schedulerFactory.getScheduler();
+        } catch (SchedulerException e) {
+            e.getMessage();
+        }
+        return null;
+    }
+
+    public static void deleteJob(String jobName) {
+        try {
+            TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
+            Scheduler scheduler = getScheduler();
+            if (null != scheduler) {
+                scheduler.pauseTrigger(triggerKey);
+                scheduler.unscheduleJob(triggerKey);
+                scheduler.deleteJob(JobKey.jobKey(jobName));
+            }
+
+        } catch (SchedulerException e) {
+            e.getMessage();
+        }
+    }
+}

--
Gitblit v1.8.0