From 0f98ec728d0403b1726273d94dc00f06993888b6 Mon Sep 17 00:00:00 2001
From: chenjiantian <214228265@qq.com>
Date: 星期四, 16 十二月 2021 18:36:01 +0800
Subject: [PATCH] 灯模块

---
 sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzServiceImpl.java |   51 ++++++++++++++++++++++++++++-----------------------
 1 files changed, 28 insertions(+), 23 deletions(-)

diff --git a/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzServiceImpl.java b/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzServiceImpl.java
index ec54efb..538c1f4 100644
--- a/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzServiceImpl.java
+++ b/sandu-common/src/main/java/com/sandu/common/quartz/service/QuartzServiceImpl.java
@@ -1,14 +1,16 @@
 package com.sandu.common.quartz.service;
 
 import com.sandu.common.execption.BusinessException;
-import com.sandu.common.quartz.ExecutionJob;
-import com.sandu.common.quartz.dto.QuartzJobDto;
 import lombok.extern.slf4j.Slf4j;
 import org.quartz.*;
+import org.quartz.impl.triggers.CronTriggerImpl;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.scheduling.quartz.QuartzJobBean;
 import org.springframework.stereotype.Service;
+
 import javax.annotation.Resource;
+import java.util.Date;
+import java.util.Map;
 
 /**
  * @author chenjiantian
@@ -24,20 +26,22 @@
     private Scheduler scheduler;
 
     @Override
-    public void addJob(Class<? extends QuartzJobBean> jobClass, QuartzJobDto quartzJobDto) {
+    public void addJob(Class<? extends QuartzJobBean> jobClass, Long jobId, String cron, Map<String, Object> jobData) {
         try {
             String simpleName = jobClass.getSimpleName();
-            JobDetail jobDetail = JobBuilder.newJob(ExecutionJob.class)
-                    .withIdentity(simpleName + quartzJobDto.getId())
+            JobDetail jobDetail = JobBuilder.newJob(jobClass)
+                    .withIdentity(simpleName + jobId)
                     .build();
             CronTrigger cronTrigger = TriggerBuilder.newTrigger()
-                    .withIdentity(simpleName + quartzJobDto.getId())
-                    .withSchedule(CronScheduleBuilder.cronSchedule(quartzJobDto.getCronExpression()))
+                    .withIdentity(simpleName + jobId)
+                    .startNow()
+                    .withSchedule(CronScheduleBuilder.cronSchedule(cron))
                     .build();
-            cronTrigger.getJobDataMap().put(QuartzJobDto.JOB_KEY, quartzJobDto);
-
+            cronTrigger.getJobDataMap().putAll(jobData);
+            ((CronTriggerImpl) cronTrigger).setStartTime(new Date());
             scheduler.scheduleJob(jobDetail, cronTrigger);
 
+            log.info("娣诲姞瀹氭椂鍣▄}", simpleName + jobId);
         } catch (SchedulerException e) {
             log.error("鍒涘缓瀹氭椂浠诲姟澶辫触", e);
             throw new BusinessException("鍒涘缓瀹氭椂浠诲姟澶辫触");
@@ -45,17 +49,17 @@
     }
 
     @Override
-    public void updateJobCron(Class<? extends QuartzJobBean> jobClass, QuartzJobDto quartzJobDto) {
+    public void updateJobCron(Class<? extends QuartzJobBean> jobClass, Long jobId, String cron, Map<String, Object> jobData) {
         try {
-            TriggerKey triggerKey = TriggerKey.triggerKey(jobClass.getSimpleName() + quartzJobDto.getId());
+            TriggerKey triggerKey = TriggerKey.triggerKey(jobClass.getSimpleName() + jobId);
             CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
             if (trigger == null) {
-                addJob(jobClass, quartzJobDto);
+                addJob(jobClass, jobId, cron, jobData);
                 trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
             }
-            CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(quartzJobDto.getCronExpression());
+            CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
             trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
-            trigger.getJobDataMap().put(QuartzJobDto.JOB_KEY, quartzJobDto);
+            trigger.getJobDataMap().putAll(jobData);
 
             scheduler.rescheduleJob(triggerKey, trigger);
         } catch (SchedulerException e) {
@@ -70,6 +74,7 @@
             JobKey jobKey = JobKey.jobKey(jobClass.getSimpleName() + jobId);
             scheduler.pauseJob(jobKey);
             scheduler.deleteJob(jobKey);
+            log.info("鍒犻櫎瀹氭椂鍣▄}", jobClass.getSimpleName() + jobId);
         } catch (SchedulerException e) {
             log.error("鍒犻櫎瀹氭椂浠诲姟澶辫触", e);
             throw new BusinessException("鍒犻櫎瀹氭椂浠诲姟澶辫触");
@@ -88,15 +93,15 @@
     }
 
     @Override
-    public void resumeJob(Class<? extends QuartzJobBean> jobClass, QuartzJobDto quartzJobDto) {
+    public void resumeJob(Class<? extends QuartzJobBean> jobClass, Long jobId, String cron, Map<String, Object> jobData) {
         try {
-            TriggerKey triggerKey = TriggerKey.triggerKey(jobClass.getSimpleName() + quartzJobDto.getId());
+            TriggerKey triggerKey = TriggerKey.triggerKey(jobClass.getSimpleName() + jobId);
             CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
             // 濡傛灉涓嶅瓨鍦ㄥ垯鍒涘缓涓�涓畾鏃朵换鍔�
             if (trigger == null) {
-                addJob(jobClass, quartzJobDto);
+                addJob(jobClass, jobId, cron, jobData);
             }
-            JobKey jobKey = JobKey.jobKey(jobClass.getSimpleName() + quartzJobDto.getId());
+            JobKey jobKey = JobKey.jobKey(jobClass.getSimpleName() + jobId);
             scheduler.resumeJob(jobKey);
         } catch (Exception e) {
             log.error("鎭㈠瀹氭椂浠诲姟澶辫触", e);
@@ -105,17 +110,17 @@
     }
 
     @Override
-    public void runJobNow(Class<? extends QuartzJobBean> jobClass, QuartzJobDto quartzJobDto) {
+    public void runJobNow(Class<? extends QuartzJobBean> jobClass, Long jobId, String cron, Map<String, Object> jobData) {
         try {
-            TriggerKey triggerKey = TriggerKey.triggerKey(jobClass.getSimpleName() + quartzJobDto.getId());
+            TriggerKey triggerKey = TriggerKey.triggerKey(jobClass.getSimpleName() + jobId);
             CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
             // 濡傛灉涓嶅瓨鍦ㄥ垯鍒涘缓涓�涓畾鏃朵换鍔�
             if (trigger == null) {
-                addJob(jobClass, quartzJobDto);
+                addJob(jobClass, jobId, cron, jobData);
             }
             JobDataMap dataMap = new JobDataMap();
-            dataMap.put(QuartzJobDto.JOB_KEY, quartzJobDto);
-            JobKey jobKey = JobKey.jobKey(jobClass.getSimpleName() + quartzJobDto.getId());
+            dataMap.putAll(jobData);
+            JobKey jobKey = JobKey.jobKey(jobClass.getSimpleName() + jobId);
             scheduler.triggerJob(jobKey, dataMap);
         } catch (Exception e) {
             log.error("瀹氭椂浠诲姟鎵ц澶辫触", e);

--
Gitblit v1.9.3