ScheduleJobServiceImpl.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.warewms.service.impl;
  2. import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
  3. import com.jfinal.plugin.activerecord.Db;
  4. import com.jfinal.plugin.activerecord.Page;
  5. import com.warewms.common.annotation.JFinalTx;
  6. import com.warewms.common.entity.Filter;
  7. import com.warewms.common.utils.PageUtils;
  8. import com.warewms.common.utils.Query;
  9. import com.warewms.dao.ScheduleJobDao;
  10. import com.warewms.job.utils.ScheduleUtils;
  11. import com.warewms.model.ScheduleJob;
  12. import com.warewms.service.ScheduleJobService;
  13. import com.warewms.utils.Constant;
  14. import org.apache.commons.lang.StringUtils;
  15. import org.quartz.CronTrigger;
  16. import org.quartz.Scheduler;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Service;
  19. import javax.annotation.PostConstruct;
  20. import java.util.*;
  21. @Service
  22. public class ScheduleJobServiceImpl extends BaseServiceImpl<ScheduleJobDao, ScheduleJob> implements ScheduleJobService {
  23. @Autowired
  24. private Scheduler scheduler;
  25. @Autowired
  26. ActiveRecordPlugin activeRecordPlugin;
  27. /**
  28. * 项目启动时,初始化定时器
  29. */
  30. @PostConstruct
  31. public void init(){
  32. List<ScheduleJob> scheduleJobList = this.findAll();
  33. for(ScheduleJob scheduleJob : scheduleJobList){
  34. CronTrigger cronTrigger = ScheduleUtils.getCronTrigger(scheduler, scheduleJob.getJobId());
  35. //如果不存在,则创建
  36. if(cronTrigger == null) {
  37. ScheduleUtils.createScheduleJob(scheduler, scheduleJob);
  38. }else {
  39. ScheduleUtils.updateScheduleJob(scheduler, scheduleJob);
  40. }
  41. }
  42. }
  43. @Override
  44. public PageUtils queryPage(Map<String, Object> params) {
  45. String beanName = (String)params.get("beanName");
  46. List<Filter> filters = new ArrayList<>();
  47. if(!StringUtils.isBlank(beanName)) {
  48. Filter filter = new Filter();
  49. filter.setProperty("bean_name");
  50. filter.setOperator(Filter.Operator.like);
  51. filter.setValue(beanName);
  52. filters.add(filter);
  53. }
  54. Query<ScheduleJob> query = new Query<ScheduleJob>(params);
  55. Page<ScheduleJob> pr = this.paginate(query.getCurrPage(), query.getLimit(), filters, query.getOrder());
  56. return new PageUtils(pr);
  57. }
  58. @Override
  59. @JFinalTx
  60. public void save(ScheduleJob scheduleJob) {
  61. scheduleJob.setCreateTime(new Date());
  62. scheduleJob.setStatus(Constant.ScheduleStatus.NORMAL.getValue());
  63. scheduleJob.save();
  64. ScheduleUtils.createScheduleJob(scheduler, scheduleJob);
  65. }
  66. @Override
  67. @JFinalTx
  68. public boolean update(ScheduleJob scheduleJob) {
  69. ScheduleUtils.updateScheduleJob(scheduler, scheduleJob);
  70. return scheduleJob.update();
  71. }
  72. @Override
  73. @JFinalTx
  74. public void deleteBatch(Long[] jobIds) {
  75. for(Long jobId : jobIds){
  76. ScheduleUtils.deleteScheduleJob(scheduler, jobId);
  77. }
  78. //删除数据
  79. this.dao.deleteBatch(jobIds);
  80. }
  81. @Override
  82. public int updateBatch(Long[] jobIds, int status){
  83. Map<String, Object> map = new HashMap<>();
  84. map.put("list", jobIds);
  85. map.put("status", status);
  86. List<ScheduleJob> scheduleJobList = new ArrayList<>();
  87. for (Long jobId : jobIds) {
  88. ScheduleJob scheduleJob = new ScheduleJob();
  89. scheduleJob.setJobId(jobId);
  90. scheduleJob.setStatus(status);
  91. scheduleJobList.add(scheduleJob);
  92. }
  93. Db.batchUpdate(scheduleJobList, scheduleJobList.size());
  94. return 1;
  95. }
  96. @Override
  97. @JFinalTx
  98. public void run(Long[] jobIds) {
  99. for(Long jobId : jobIds){
  100. ScheduleUtils.run(scheduler, this.findById(jobId));
  101. }
  102. }
  103. @Override
  104. @JFinalTx
  105. public void pause(Long[] jobIds) {
  106. for(Long jobId : jobIds){
  107. ScheduleUtils.pauseJob(scheduler, jobId);
  108. }
  109. updateBatch(jobIds, Constant.ScheduleStatus.PAUSE.getValue());
  110. }
  111. @Override
  112. @JFinalTx
  113. public void resume(Long[] jobIds) {
  114. for(Long jobId : jobIds){
  115. ScheduleUtils.resumeJob(scheduler, jobId);
  116. }
  117. updateBatch(jobIds, Constant.ScheduleStatus.NORMAL.getValue());
  118. }
  119. }