StartRunning.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.qmth.distributed.print.start;
  2. import com.qmth.distributed.print.business.service.BasicExamService;
  3. import com.qmth.teachcloud.common.entity.BasicExam;
  4. import com.qmth.teachcloud.common.service.AuthInfoService;
  5. import com.qmth.teachcloud.common.service.SysConfigService;
  6. import com.qmth.teachcloud.data.entity.TSyncData;
  7. import com.qmth.teachcloud.data.service.TSyncDataService;
  8. import com.qmth.teachcloud.task.enums.JobEnum;
  9. import com.qmth.teachcloud.task.job.*;
  10. import com.qmth.teachcloud.task.job.service.JobService;
  11. import com.qmth.teachcloud.task.service.QuartzService;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.boot.CommandLineRunner;
  16. import org.springframework.stereotype.Component;
  17. import javax.annotation.Resource;
  18. import java.util.HashMap;
  19. import java.util.List;
  20. import java.util.Map;
  21. /**
  22. * @Description: 服务启动时初始化运行,哪个微服务模块需要则拿此模版去用
  23. * @Param:
  24. * @return:
  25. * @Author: wangliang
  26. * @Date: 2020/7/3
  27. */
  28. @Component
  29. public class StartRunning implements CommandLineRunner {
  30. private final static Logger log = LoggerFactory.getLogger(StartRunning.class);
  31. @Resource
  32. private AuthInfoService authInfoService;
  33. @Resource
  34. private SysConfigService sysConfigService;
  35. @Resource
  36. private QuartzService quartzService;
  37. @Resource
  38. private JobService jobService;
  39. @Resource
  40. private TSyncDataService tSyncDataService;
  41. @Resource
  42. private BasicExamService basicExamService;
  43. @Override
  44. public void run(String... args) throws Exception {
  45. log.info("服务器启动时执行 start");
  46. log.info("服务器启动时执行,配置参数缓存 start");
  47. sysConfigService.selectAll();
  48. log.info("服务器启动时执行,配置参数缓存 end");
  49. log.info("服务器启动时执行,读取授权信息 start");
  50. authInfoService.selectAuthInfo();
  51. log.info("服务器启动时执行,读取授权信息 end");
  52. log.info("服务器启动时执行,机器心跳 start");
  53. jobService.machineHeart();
  54. log.info("服务器启动时执行,机器心跳 end");
  55. log.info("服务器启动时执行,任务到期提醒定时任务 start");
  56. Map expireJobMap = new HashMap();
  57. expireJobMap.computeIfAbsent("name", v -> SendSmsExpireJob.class.getName());
  58. quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.name(), JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.getGroupName());
  59. // 每天15点定时任务
  60. // quartzService.addJob(SendSmsExpireJob.class, JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.name(), JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.getGroupName(), "0 0 15 * * ?", expireJobMap);
  61. log.info("服务器启动时执行,任务到期提醒定时任务 end");
  62. log.info("服务器启动时执行,任务逾期提醒定时任务 start");
  63. Map orverdueJobMap = new HashMap();
  64. orverdueJobMap.computeIfAbsent("name", v -> SendSmsOverdueJob.class.getName());
  65. quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.name(), JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.getGroupName());
  66. // 每天9点定时任务
  67. // quartzService.addJob(SendSmsOverdueJob.class, JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.name(), JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.getGroupName(), "0 0 9 * * ?", orverdueJobMap);
  68. log.info("服务器启动时执行,任务逾期提醒定时任务 end");
  69. log.info("服务器启动时执行,短信发送失败重发定时任务 start");
  70. Map rensendJobMap = new HashMap();
  71. rensendJobMap.computeIfAbsent("name", v -> ResendSmsJob.class.getName());
  72. quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_RESEND_JOB.name(), JobEnum.SMS_NOTICE_TASK_RESEND_JOB.getGroupName());
  73. // 每隔1小时定时任务
  74. // quartzService.addJob(ResendSmsJob.class, JobEnum.SMS_NOTICE_TASK_RESEND_JOB.name(), JobEnum.SMS_NOTICE_TASK_RESEND_JOB.getGroupName(), "0 0/30 * * * ?", rensendJobMap);
  75. log.info("服务器启动时执行,短信发送失败重发定时任务 end");
  76. log.info("服务器启动时执行,MQ信息同步定时任务 start");
  77. Map redisMqJobMap = new HashMap();
  78. redisMqJobMap.computeIfAbsent("name", v -> RedisMqSyncJob.class.getName());
  79. quartzService.deleteJob(JobEnum.REDIS_MQ_JOB.name(), JobEnum.REDIS_MQ_JOB.getGroupName());
  80. // 每分钟定时任务
  81. quartzService.addJob(RedisMqSyncJob.class, JobEnum.REDIS_MQ_JOB.name(), JobEnum.REDIS_MQ_JOB.getGroupName(), "0 0/1 * * * ?", redisMqJobMap);
  82. log.info("服务器启动时执行,MQ信息同步定时任务 end");
  83. // 每天0点开始,每2小时一次
  84. log.info("服务器启动时执行,自动统分定时任务 start");
  85. Map reunifyJobMap = new HashMap();
  86. reunifyJobMap.computeIfAbsent("name", v -> SubjectCalculateJob.class.getName());
  87. quartzService.deleteJob(JobEnum.SYNC_REUNIFY_JOB.name(), JobEnum.SYNC_REUNIFY_JOB.getGroupName());
  88. quartzService.addJob(SubjectCalculateJob.class, JobEnum.SYNC_REUNIFY_JOB.name(), JobEnum.SYNC_REUNIFY_JOB.getGroupName(), "0 0 0/2 * * ?", reunifyJobMap);
  89. log.info("服务器启动时执行,自动统分定时任务 end");
  90. // 每1分钟一次
  91. log.info("服务器启动时执行,更新评卷员质量监控指标定时任务 start");
  92. Map qualityJobMap = new HashMap();
  93. qualityJobMap.computeIfAbsent("name", v -> UpdateMarkerQualityJob.class.getName());
  94. quartzService.deleteJob(JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY.getGroupName());
  95. quartzService.addJob(UpdateMarkerQualityJob.class, JobEnum.UPDATE_MARKER_QUALITY.name(), JobEnum.UPDATE_MARKER_QUALITY.getGroupName(), "0 */1 * * * ?", qualityJobMap);
  96. log.info("服务器启动时执行,更新评卷员质量监控指标定时任务 end");
  97. // 每1分钟一次
  98. log.info("服务器启动时执行,评卷任务生成定时任务 start");
  99. Map buildMarkTaskJobMap = new HashMap();
  100. buildMarkTaskJobMap.computeIfAbsent("name", v -> BuildMarkTaskJob.class.getName());
  101. quartzService.deleteJob(JobEnum.BUILD_MARK_TASK.name(), JobEnum.BUILD_MARK_TASK.getGroupName());
  102. quartzService.addJob(BuildMarkTaskJob.class, JobEnum.BUILD_MARK_TASK.name(), JobEnum.BUILD_MARK_TASK.getGroupName(), "0 */1 * * * ?", buildMarkTaskJobMap);
  103. log.info("服务器启动时执行,评卷任务生成定时任务 end");
  104. // 每1分钟一次
  105. log.info("服务器启动时执行,初始化阅卷数据定时任务 start");
  106. Map initMarkDataJobMap = new HashMap();
  107. initMarkDataJobMap.computeIfAbsent("name", v -> InitMarkDataJob.class.getName());
  108. quartzService.deleteJob(JobEnum.INIT_MARK_DATA.name(), JobEnum.INIT_MARK_DATA.getGroupName());
  109. quartzService.addJob(InitMarkDataJob.class, JobEnum.INIT_MARK_DATA.name(), JobEnum.INIT_MARK_DATA.getGroupName(), "0 */1 * * * ?", initMarkDataJobMap);
  110. log.info("服务器启动时执行,初始化阅卷数据定时任务 end");
  111. // 每10分钟一次
  112. log.info("服务器启动时执行,清空过期任务定时任务 start");
  113. Map clearTimeoutTaskJobMap = new HashMap();
  114. clearTimeoutTaskJobMap.computeIfAbsent("name", v -> ClearTimeoutTaskJob.class.getName());
  115. quartzService.deleteJob(JobEnum.CLEAR_TIMEOUT_TASK.name(), JobEnum.CLEAR_TIMEOUT_TASK.getGroupName());
  116. quartzService.addJob(ClearTimeoutTaskJob.class, JobEnum.CLEAR_TIMEOUT_TASK.name(), JobEnum.CLEAR_TIMEOUT_TASK.getGroupName(), "0 0/1 6-23 * * ?", clearTimeoutTaskJobMap);
  117. log.info("服务器启动时执行,清空过期任务定时任务 end");
  118. // 每2分钟一次
  119. log.info("服务器启动时执行,PDF生成定时任务 start");
  120. Map createPdfJobMap = new HashMap();
  121. createPdfJobMap.computeIfAbsent("name", v -> CreatePdfTaskJob.class.getName());
  122. quartzService.deleteJob(JobEnum.CREATE_PDF_JOB.name(), JobEnum.CREATE_PDF_JOB.getGroupName());
  123. quartzService.addJob(CreatePdfTaskJob.class, JobEnum.CREATE_PDF_JOB.name(), JobEnum.CREATE_PDF_JOB.getGroupName(), "0 0/2 * * * ?", createPdfJobMap);
  124. log.info("服务器启动时执行,PDF生成定时任务 end");
  125. // 数据同步
  126. // dataSync();
  127. log.info("服务器启动时执行 end");
  128. }
  129. private void dataSync() {
  130. log.info("服务器启动时执行,数据同步定时任务 start");
  131. long currentTime = System.currentTimeMillis();
  132. List<TSyncData> tSyncDataList = tSyncDataService.list();
  133. Map expireJobMap = new HashMap();
  134. expireJobMap.computeIfAbsent("name", v -> DataSyncJob.class.getName());
  135. for (TSyncData syncData : tSyncDataList) {
  136. Long startTime = syncData.getStartTime();
  137. Long endTime = syncData.getEndTime();
  138. BasicExam basicExam = basicExamService.getById(syncData.getExamId());
  139. // 考试已禁用、未到开始时间、超过结束时间,未设置执行时间 。不执行
  140. quartzService.deleteJob(JobEnum.DATA_SYNC.name() + syncData.getSchoolId(), JobEnum.DATA_SYNC.getGroupName());
  141. if (!basicExam.getEnable() || currentTime < startTime || currentTime > endTime || StringUtils.isBlank(syncData.getCron())) {
  142. continue;
  143. }
  144. quartzService.addJob(DataSyncJob.class, JobEnum.DATA_SYNC.name() + syncData.getSchoolId(), JobEnum.DATA_SYNC.getGroupName(), syncData.getCron(), expireJobMap);
  145. }
  146. log.info("服务器启动时执行,数据同步定时任务 end");
  147. }
  148. }