ScheduleTaskMgr.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package com.shkpr.service.aimodelpower.globalmgr;
  2. import com.global.base.log.LogLevelFlag;
  3. import com.global.base.log.LogPrintMgr;
  4. import com.global.base.thread.ThreadPoolProxy;
  5. import com.shkpr.service.aimodelpower.bizmgr.KprAimTapWaterBizFun;
  6. import com.shkpr.service.aimodelpower.bizmgr.KprAimWaterCollecationBizFun;
  7. import com.shkpr.service.aimodelpower.commtools.TimeTool;
  8. import com.shkpr.service.aimodelpower.constants.LogFlagBusiType;
  9. import com.zaxxer.hikari.HikariDataSource;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.beans.factory.annotation.Qualifier;
  12. import org.springframework.scheduling.annotation.*;
  13. import org.springframework.stereotype.Component;
  14. import javax.annotation.PostConstruct;
  15. import javax.annotation.PreDestroy;
  16. import javax.sql.DataSource;
  17. import java.sql.Connection;
  18. import java.sql.Time;
  19. import java.util.Timer;
  20. import java.util.TimerTask;
  21. @Component
  22. @EnableScheduling // 1.开启定时任务
  23. @EnableAsync // 2.开启多线程
  24. public class ScheduleTaskMgr {
  25. private String mStrClassName;
  26. public ScheduleTaskMgr() {
  27. mStrClassName = this.getClass().getSimpleName();
  28. }
  29. @SuppressWarnings("all")
  30. @Autowired
  31. @Qualifier("mainDatasource")
  32. private DataSource mainDataSource;
  33. @SuppressWarnings("all")
  34. @Autowired
  35. @Qualifier("secondDatasource")
  36. private DataSource secondDataSource;
  37. @PostConstruct
  38. public void afterPropertiesSet() throws Exception{
  39. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INIT.toStrValue(), mStrClassName
  40. ,String.format("init()..."));
  41. }
  42. @PreDestroy
  43. public void destroy() throws Exception{
  44. }
  45. @Scheduled(cron = "${cron.refresh.timer.clock}")
  46. public void taskRefreshTimeRes() {
  47. TimeTool.refreshUTCTimeRes();
  48. ThreadPoolProxy.getInstance().getFixedThreadPool("COMM").execute(new Runnable() {
  49. @Override
  50. public void run() {
  51. }
  52. });
  53. }
  54. //@Scheduled(cron = "0 0 5 * * ?") //每天凌晨05:00:00执行
  55. //@Scheduled(initialDelay = 600000, fixedRate = 600000) //延迟10分钟后第一次调用该方法,此后每隔10分钟再执行一次
  56. public void clearLocalCache(){
  57. }
  58. @Scheduled(cron = "0 0/10 * * * ?")
  59. public void keepDBConnectAlive(){
  60. if (mainDataSource != null){
  61. try {
  62. Class.forName(((HikariDataSource)mainDataSource).getDriverClassName());
  63. int step = ((HikariDataSource)mainDataSource).getHikariPoolMXBean().getIdleConnections() - ((HikariDataSource)mainDataSource).getMinimumIdle()*2;
  64. while ((step--) > 0){
  65. Connection connection = ((HikariDataSource)mainDataSource).getConnection();
  66. ((HikariDataSource)mainDataSource).evictConnection(connection);
  67. }
  68. } catch (Exception e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. if (secondDataSource != null){
  73. try {
  74. Class.forName(((HikariDataSource)secondDataSource).getDriverClassName());
  75. int step = ((HikariDataSource)secondDataSource).getHikariPoolMXBean().getIdleConnections() - ((HikariDataSource)secondDataSource).getMinimumIdle()*2;
  76. while ((step--) > 0){
  77. Connection connection = ((HikariDataSource)secondDataSource).getConnection();
  78. ((HikariDataSource)secondDataSource).evictConnection(connection);
  79. }
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. }
  83. }
  84. }
  85. //TODO 每天整点的五分执行检查小时用水量是否对齐,检查时间范围为当前时间到昨天
  86. @Scheduled(cron = "0 5 * * * *")
  87. // @Scheduled(cron = "0 0/1 * * * ?")
  88. public void executeTaskEveryHourAtTenMinutesRecordAll() {
  89. KprAimTapWaterBizFun.checkRecordAllData();
  90. }
  91. //TODO 每天整点的十分执行检查小时用水量是否对齐,检查时间范围为当前时间到昨天
  92. @Scheduled(cron = "0 10 * * * *")
  93. public void executeTaskEveryHourAtTenMinutesRecord() {
  94. KprAimTapWaterBizFun.checkRecordData();
  95. }
  96. //TODO 每天整点的15分执行预测日数据
  97. @Scheduled(cron = "0 15 * * * *")
  98. // @Scheduled(cron = "0 0/1 * * * ?")
  99. public void executeTbMWater() {
  100. KprAimWaterCollecationBizFun.insertYuceDataScheduled();
  101. }
  102. //TODO 每天整点的16分执行预测日小时数据
  103. @Scheduled(cron = "0 16 * * * *")
  104. public void executeTbMHourWater() {
  105. KprAimWaterCollecationBizFun.insertYuceHourDataScheduled();
  106. }
  107. //TODO 启动时执行 测试方法
  108. // @PostConstruct
  109. // public void initTest(){
  110. // Timer timer = new Timer();
  111. // // 创建定时器任务
  112. // TimerTask timerTask = new TimerTask() {
  113. // @Override
  114. // public void run() {
  115. //// KprAimTapWaterBizFun.checkRecordAllData();
  116. //// KprAimTapWaterBizFun.checkRecordData();
  117. // KprAimWaterCollecationBizFun.insertYuceDataScheduled();
  118. // }
  119. // };
  120. // timer.schedule(timerTask, 5000);
  121. //
  122. // Timer timer2 = new Timer();
  123. // TimerTask timerTask1 = new TimerTask() {
  124. // @Override
  125. // public void run() {
  126. // KprAimWaterCollecationBizFun.insertYuceHourDataScheduled();
  127. // }
  128. // };
  129. // timer2.schedule(timerTask1, 10000);
  130. // }
  131. //TODO 启动时执行一次
  132. @PostConstruct
  133. public void initOneTapWater(){
  134. Timer timer = new Timer();
  135. // 创建定时器任务
  136. TimerTask timerTask = new TimerTask() {
  137. @Override
  138. public void run() {
  139. KprAimTapWaterBizFun.initTapWaterData();
  140. }
  141. };
  142. timer.schedule(timerTask, 10000); // 10秒后执行一次
  143. }
  144. @PostConstruct
  145. public void initWaterRecordAll(){
  146. Timer timer = new Timer();
  147. TimerTask timerTask1 = new TimerTask() {
  148. @Override
  149. public void run() {
  150. KprAimTapWaterBizFun.initWaterCollecationReacordAll();
  151. }
  152. };
  153. timer.schedule(timerTask1,11000);//11秒后执行一次
  154. }
  155. }