zhibing.pu
2024-07-25 79fc712ed025069c1d21de230bdc95c74910288c
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();
      }
   }
}