1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package com.ruoyi.quartz.util;
- import java.util.Date;
- import java.util.concurrent.Future;
- import org.quartz.DisallowConcurrentExecution;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
- import org.springframework.scheduling.quartz.QuartzJobBean;
- import com.ruoyi.common.constant.Constants;
- import com.ruoyi.common.constant.ScheduleConstants;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.common.utils.bean.BeanUtils;
- 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;
- /**
- * 定时任务处理
- *
- * @author ruoyi
- *
- */
- @DisallowConcurrentExecution
- public class ScheduleJob extends QuartzJobBean
- {
- private static final Logger log = LoggerFactory.getLogger(ScheduleJob.class);
- private ThreadPoolTaskExecutor executor = SpringUtils.getBean("threadPoolTaskExecutor");
- private final static ISysJobLogService jobLogService = SpringUtils.getBean(ISysJobLogService.class);
- @Override
- protected void executeInternal(JobExecutionContext context) throws JobExecutionException
- {
- SysJob job = new SysJob();
- BeanUtils.copyBeanProp(job, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));
- SysJobLog jobLog = new SysJobLog();
- jobLog.setJobName(job.getJobName());
- jobLog.setJobGroup(job.getJobGroup());
- jobLog.setMethodName(job.getMethodName());
- jobLog.setMethodParams(job.getMethodParams());
- jobLog.setCreateTime(new Date());
- long startTime = System.currentTimeMillis();
- try
- {
- // 执行任务
- log.info("任务开始执行 - 名称:{} 方法:{}", job.getJobName(), job.getMethodName());
- ScheduleRunnable task = new ScheduleRunnable(job.getJobName(), job.getMethodName(), job.getMethodParams());
- Future<?> future = executor.submit(task);
- future.get();
- long times = System.currentTimeMillis() - startTime;
- // 任务状态 0:成功 1:失败
- jobLog.setStatus(Constants.SUCCESS);
- jobLog.setJobMessage(job.getJobName() + " 总共耗时:" + times + "毫秒");
- log.info("任务执行结束 - 名称:{} 耗时:{} 毫秒", job.getJobName(), times);
- }
- catch (Exception e)
- {
- log.info("任务执行失败 - 名称:{} 方法:{}", job.getJobName(), job.getMethodName());
- log.error("任务执行异常 - :", e);
- long times = System.currentTimeMillis() - startTime;
- jobLog.setJobMessage(job.getJobName() + " 总共耗时:" + times + "毫秒");
- // 任务状态 0:成功 1:失败
- jobLog.setStatus(Constants.FAIL);
- jobLog.setExceptionInfo(StringUtils.substring(e.getMessage(), 0, 2000));
- }
- finally
- {
- jobLogService.addJobLog(jobLog);
- }
- }
- }
|