From 79d97c39f1d118824f91467feb9f4a55717fd0c0 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 26 七月 2024 14:03:41 +0800
Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/IgoTravel into 2.0

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/model/QuartzJob.java |   66 ++++++++++++--------------------
 1 files changed, 25 insertions(+), 41 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/model/QuartzJob.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/model/QuartzJob.java
index b43f938..9ec7b7a 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/model/QuartzJob.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/model/QuartzJob.java
@@ -1,13 +1,16 @@
 package com.stylefeng.guns.modular.system.util.quartz.model;
 
+import com.alibaba.fastjson.JSON;
 import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.util.SpringUtils;
 import lombok.Data;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
-import org.quartz.Job;
-import org.quartz.JobDataMap;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
+import org.quartz.*;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Map;
 
 /**
  * quartz任务类
@@ -20,17 +23,14 @@
 	/**
 	 * 任务名称
 	 */
-	@Getter
 	private String name;
 	/**
 	 * 任务分组
 	 */
-	@Getter
 	private String group;
 	/**
 	 * 自定义参数
 	 */
-	@Getter
 	private JobDataMap jobDataMap;
 	
 	
@@ -38,9 +38,7 @@
 	 * 构建QuartzJob对象
 	 * @return
 	 */
-	public QuartzJob buildQuartzJob() {
-		return buildQuartzJob(QuartzEnum.JOB_NAME.getValue());
-	}
+	public abstract QuartzJob buildQuartzJob();
 	
 	
 	
@@ -49,9 +47,7 @@
 	 * @param name  任务名称
 	 * @return
 	 */
-	public QuartzJob buildQuartzJob(String name) {
-		return buildQuartzJob(name, QuartzEnum.DEFAULT_GROUP.getValue());
-	}
+	public abstract QuartzJob buildQuartzJob(String name);
 	
 	
 	
@@ -61,9 +57,7 @@
 	 * @param group 任务分组名称
 	 * @return
 	 */
-	public QuartzJob buildQuartzJob(String name, String group) {
-		return buildQuartzJob(name, QuartzEnum.DEFAULT_GROUP.getValue(), null);
-	}
+	public abstract QuartzJob buildQuartzJob(String name, String group);
 	
 	/**
 	 * 构建QuartzJob对象
@@ -72,20 +66,7 @@
 	 * @param jobDataMap 自定义参数
 	 * @return
 	 */
-	public QuartzJob buildQuartzJob(String name, String group, JobDataMap jobDataMap) {
-		if(ToolUtil.isNotEmpty(name)){
-			this.name = name;
-		}else{
-			this.name = QuartzEnum.JOB_NAME.getValue();
-		}
-		if(ToolUtil.isNotEmpty(group)){
-			this.group = group;
-		}else{
-			this.group = QuartzEnum.DEFAULT_GROUP.getValue();
-		}
-		this.jobDataMap = jobDataMap;
-		return this;
-	}
+	public abstract QuartzJob buildQuartzJob(String name, String group, JobDataMap jobDataMap);
 	
 	/**
 	 * 需要执行的任务的业务逻辑方法
@@ -93,16 +74,19 @@
 	 */
 	public abstract void run(JobExecutionContext jobExecutionContext);
 	
-	/**
-	 * 执行器执行任务调用的方式
-	 * @param jobExecutionContext 定时任务上下文对象
-	 * @throws JobExecutionException
-	 */
-	@Override
-	public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-		String name = jobExecutionContext.getJobDetail().getKey().getName();
-		log.info(name + " scheduled task start!");
-		run(jobExecutionContext);
-	}
 	
+	@Override
+	public void execute(JobExecutionContext jobExecutionContext){
+		JobDetail jobDetail = jobExecutionContext.getJobDetail();
+		String name = jobDetail.getKey().getName();
+		log.info(name + " scheduled task start!\nJobDataMap:{}", JSON.toJSONString(jobDetail.getJobDataMap()));
+		try {
+			Class jobClass = jobDetail.getJobClass();
+			Method run = jobClass.getMethod("run", JobExecutionContext.class);
+			Object o = SpringUtils.getBean(jobClass);
+			Object invoke = run.invoke(o, jobExecutionContext);
+		} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
+			e.printStackTrace();
+		}
+	}
 }

--
Gitblit v1.7.1