ScheduleJob.java 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.ruoyi.quartz.util;
  2. import java.util.Date;
  3. import java.util.concurrent.Future;
  4. import org.quartz.DisallowConcurrentExecution;
  5. import org.quartz.JobExecutionContext;
  6. import org.quartz.JobExecutionException;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  10. import org.springframework.scheduling.quartz.QuartzJobBean;
  11. import com.ruoyi.common.constant.Constants;
  12. import com.ruoyi.common.constant.ScheduleConstants;
  13. import com.ruoyi.common.utils.StringUtils;
  14. import com.ruoyi.common.utils.bean.BeanUtils;
  15. import com.ruoyi.common.utils.spring.SpringUtils;
  16. import com.ruoyi.quartz.domain.SysJob;
  17. import com.ruoyi.quartz.domain.SysJobLog;
  18. import com.ruoyi.quartz.service.ISysJobLogService;
  19. /**
  20. * 定时任务处理
  21. *
  22. * @author ruoyi
  23. *
  24. */
  25. @DisallowConcurrentExecution
  26. public class ScheduleJob extends QuartzJobBean
  27. {
  28. private static final Logger log = LoggerFactory.getLogger(ScheduleJob.class);
  29. private ThreadPoolTaskExecutor executor = SpringUtils.getBean("threadPoolTaskExecutor");
  30. private final static ISysJobLogService jobLogService = SpringUtils.getBean(ISysJobLogService.class);
  31. @Override
  32. protected void executeInternal(JobExecutionContext context) throws JobExecutionException
  33. {
  34. SysJob job = new SysJob();
  35. BeanUtils.copyBeanProp(job, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));
  36. SysJobLog jobLog = new SysJobLog();
  37. jobLog.setJobName(job.getJobName());
  38. jobLog.setJobGroup(job.getJobGroup());
  39. jobLog.setMethodName(job.getMethodName());
  40. jobLog.setMethodParams(job.getMethodParams());
  41. jobLog.setCreateTime(new Date());
  42. long startTime = System.currentTimeMillis();
  43. try
  44. {
  45. // 执行任务
  46. log.info("任务开始执行 - 名称:{} 方法:{}", job.getJobName(), job.getMethodName());
  47. ScheduleRunnable task = new ScheduleRunnable(job.getJobName(), job.getMethodName(), job.getMethodParams());
  48. Future<?> future = executor.submit(task);
  49. future.get();
  50. long times = System.currentTimeMillis() - startTime;
  51. // 任务状态 0:成功 1:失败
  52. jobLog.setStatus(Constants.SUCCESS);
  53. jobLog.setJobMessage(job.getJobName() + " 总共耗时:" + times + "毫秒");
  54. log.info("任务执行结束 - 名称:{} 耗时:{} 毫秒", job.getJobName(), times);
  55. }
  56. catch (Exception e)
  57. {
  58. log.info("任务执行失败 - 名称:{} 方法:{}", job.getJobName(), job.getMethodName());
  59. log.error("任务执行异常 - :", e);
  60. long times = System.currentTimeMillis() - startTime;
  61. jobLog.setJobMessage(job.getJobName() + " 总共耗时:" + times + "毫秒");
  62. // 任务状态 0:成功 1:失败
  63. jobLog.setStatus(Constants.FAIL);
  64. jobLog.setExceptionInfo(StringUtils.substring(e.getMessage(), 0, 2000));
  65. }
  66. finally
  67. {
  68. jobLogService.addJobLog(jobLog);
  69. }
  70. }
  71. }