|
@@ -1,11 +1,5 @@
|
|
|
package com.ruoyi.quartz.util;
|
|
|
|
|
|
-import java.util.Date;
|
|
|
-import org.quartz.Job;
|
|
|
-import org.quartz.JobExecutionContext;
|
|
|
-import org.quartz.JobExecutionException;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
import com.ruoyi.common.constant.Constants;
|
|
|
import com.ruoyi.common.constant.ScheduleConstants;
|
|
|
import com.ruoyi.common.utils.ExceptionUtil;
|
|
@@ -15,14 +9,20 @@ import com.ruoyi.common.utils.spring.SpringUtils;
|
|
|
import com.ruoyi.quartz.domain.SysJob;
|
|
|
import com.ruoyi.quartz.domain.SysJobLog;
|
|
|
import com.ruoyi.quartz.service.ISysJobLogService;
|
|
|
+import org.quartz.Job;
|
|
|
+import org.quartz.JobExecutionContext;
|
|
|
+import org.quartz.JobExecutionException;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
|
|
|
/**
|
|
|
* 抽象quartz调用
|
|
|
*
|
|
|
* @author ruoyi
|
|
|
*/
|
|
|
-public abstract class AbstractQuartzJob implements Job
|
|
|
-{
|
|
|
+public abstract class AbstractQuartzJob implements Job {
|
|
|
private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class);
|
|
|
|
|
|
/**
|
|
@@ -31,21 +31,16 @@ public abstract class AbstractQuartzJob implements Job
|
|
|
private static ThreadLocal<Date> threadLocal = new ThreadLocal<>();
|
|
|
|
|
|
@Override
|
|
|
- public void execute(JobExecutionContext context) throws JobExecutionException
|
|
|
- {
|
|
|
+ public void execute(JobExecutionContext context) throws JobExecutionException {
|
|
|
SysJob sysJob = new SysJob();
|
|
|
BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));
|
|
|
- try
|
|
|
- {
|
|
|
+ try {
|
|
|
before(context, sysJob);
|
|
|
- if (sysJob != null)
|
|
|
- {
|
|
|
+ if (sysJob != null) {
|
|
|
doExecute(context, sysJob);
|
|
|
}
|
|
|
after(context, sysJob, null);
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
+ } catch (Exception e) {
|
|
|
log.error("任务执行异常 - :", e);
|
|
|
after(context, sysJob, e);
|
|
|
}
|
|
@@ -55,10 +50,10 @@ public abstract class AbstractQuartzJob implements Job
|
|
|
* 执行前
|
|
|
*
|
|
|
* @param context 工作执行上下文对象
|
|
|
- * @param sysJob 系统计划任务
|
|
|
+ * @param sysJob 系统计划任务
|
|
|
*/
|
|
|
- protected void before(JobExecutionContext context, SysJob sysJob)
|
|
|
- {
|
|
|
+ protected void before(JobExecutionContext context, SysJob sysJob) {
|
|
|
+ log.info("定时任务:{},开始", sysJob.getJobName());
|
|
|
threadLocal.set(new Date());
|
|
|
}
|
|
|
|
|
@@ -66,10 +61,9 @@ public abstract class AbstractQuartzJob implements Job
|
|
|
* 执行后
|
|
|
*
|
|
|
* @param context 工作执行上下文对象
|
|
|
- * @param sysJob 系统计划任务
|
|
|
+ * @param sysJob 系统计划任务
|
|
|
*/
|
|
|
- protected void after(JobExecutionContext context, SysJob sysJob, Exception e)
|
|
|
- {
|
|
|
+ protected void after(JobExecutionContext context, SysJob sysJob, Exception e) {
|
|
|
Date startTime = threadLocal.get();
|
|
|
threadLocal.remove();
|
|
|
|
|
@@ -79,28 +73,27 @@ public abstract class AbstractQuartzJob implements Job
|
|
|
sysJobLog.setInvokeTarget(sysJob.getInvokeTarget());
|
|
|
sysJobLog.setStartTime(startTime);
|
|
|
sysJobLog.setStopTime(new Date());
|
|
|
+ sysJobLog.setCreateTime(new Date());
|
|
|
long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime();
|
|
|
sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时:" + runMs + "毫秒");
|
|
|
- if (e != null)
|
|
|
- {
|
|
|
+ if (e != null) {
|
|
|
sysJobLog.setStatus(Constants.FAIL);
|
|
|
String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000);
|
|
|
sysJobLog.setExceptionInfo(errorMsg);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
+ } else {
|
|
|
sysJobLog.setStatus(Constants.SUCCESS);
|
|
|
}
|
|
|
|
|
|
// 写入数据库当中
|
|
|
SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog);
|
|
|
+ log.info("定时任务:{},结束", sysJob.getJobName());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 执行方法,由子类重载
|
|
|
*
|
|
|
* @param context 工作执行上下文对象
|
|
|
- * @param sysJob 系统计划任务
|
|
|
+ * @param sysJob 系统计划任务
|
|
|
* @throws Exception 执行过程中的异常
|
|
|
*/
|
|
|
protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception;
|