ScheduleJob.java 3.0 KB

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