123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- package com.shkpr.service.aimodelpower.globalmgr;
- import com.global.base.log.LogLevelFlag;
- import com.global.base.log.LogPrintMgr;
- import com.global.base.thread.ThreadPoolProxy;
- import com.shkpr.service.aimodelpower.bizmgr.KprAimTapWaterBizFun;
- import com.shkpr.service.aimodelpower.bizmgr.KprAimWaterCollecationBizFun;
- import com.shkpr.service.aimodelpower.commtools.TimeTool;
- import com.shkpr.service.aimodelpower.constants.LogFlagBusiType;
- import com.zaxxer.hikari.HikariDataSource;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.scheduling.annotation.*;
- import org.springframework.stereotype.Component;
- import javax.annotation.PostConstruct;
- import javax.annotation.PreDestroy;
- import javax.sql.DataSource;
- import java.sql.Connection;
- import java.sql.Time;
- import java.util.Timer;
- import java.util.TimerTask;
- @Component
- @EnableScheduling // 1.开启定时任务
- @EnableAsync // 2.开启多线程
- public class ScheduleTaskMgr {
- private String mStrClassName;
- public ScheduleTaskMgr() {
- mStrClassName = this.getClass().getSimpleName();
- }
- @SuppressWarnings("all")
- @Autowired
- @Qualifier("mainDatasource")
- private DataSource mainDataSource;
- @SuppressWarnings("all")
- @Autowired
- @Qualifier("secondDatasource")
- private DataSource secondDataSource;
- @PostConstruct
- public void afterPropertiesSet() throws Exception{
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INIT.toStrValue(), mStrClassName
- ,String.format("init()..."));
- }
- @PreDestroy
- public void destroy() throws Exception{
- }
- @Scheduled(cron = "${cron.refresh.timer.clock}")
- public void taskRefreshTimeRes() {
- TimeTool.refreshUTCTimeRes();
- ThreadPoolProxy.getInstance().getFixedThreadPool("COMM").execute(new Runnable() {
- @Override
- public void run() {
- }
- });
- }
- //@Scheduled(cron = "0 0 5 * * ?") //每天凌晨05:00:00执行
- //@Scheduled(initialDelay = 600000, fixedRate = 600000) //延迟10分钟后第一次调用该方法,此后每隔10分钟再执行一次
- public void clearLocalCache(){
- }
- @Scheduled(cron = "0 0/10 * * * ?")
- public void keepDBConnectAlive(){
- if (mainDataSource != null){
- try {
- Class.forName(((HikariDataSource)mainDataSource).getDriverClassName());
- int step = ((HikariDataSource)mainDataSource).getHikariPoolMXBean().getIdleConnections() - ((HikariDataSource)mainDataSource).getMinimumIdle()*2;
- while ((step--) > 0){
- Connection connection = ((HikariDataSource)mainDataSource).getConnection();
- ((HikariDataSource)mainDataSource).evictConnection(connection);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- if (secondDataSource != null){
- try {
- Class.forName(((HikariDataSource)secondDataSource).getDriverClassName());
- int step = ((HikariDataSource)secondDataSource).getHikariPoolMXBean().getIdleConnections() - ((HikariDataSource)secondDataSource).getMinimumIdle()*2;
- while ((step--) > 0){
- Connection connection = ((HikariDataSource)secondDataSource).getConnection();
- ((HikariDataSource)secondDataSource).evictConnection(connection);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- //TODO 每天整点的五分执行检查小时用水量是否对齐,检查时间范围为当前时间到昨天
- @Scheduled(cron = "0 5 * * * *")
- // @Scheduled(cron = "0 0/1 * * * ?")
- public void executeTaskEveryHourAtTenMinutesRecordAll() {
- KprAimTapWaterBizFun.checkRecordAllData();
- }
- //TODO 每天整点的十分执行检查小时用水量是否对齐,检查时间范围为当前时间到昨天
- @Scheduled(cron = "0 10 * * * *")
- public void executeTaskEveryHourAtTenMinutesRecord() {
- KprAimTapWaterBizFun.checkRecordData();
- }
- //TODO 每天整点的15分执行预测日数据
- @Scheduled(cron = "0 15 * * * *")
- // @Scheduled(cron = "0 0/1 * * * ?")
- public void executeTbMWater() {
- KprAimWaterCollecationBizFun.insertYuceDataScheduled();
- }
- //TODO 每天整点的16分执行预测日小时数据
- @Scheduled(cron = "0 16 * * * *")
- public void executeTbMHourWater() {
- KprAimWaterCollecationBizFun.insertYuceHourDataScheduled();
- }
- //TODO 启动时执行 测试方法
- // @PostConstruct
- // public void initTest(){
- // Timer timer = new Timer();
- // // 创建定时器任务
- // TimerTask timerTask = new TimerTask() {
- // @Override
- // public void run() {
- //// KprAimTapWaterBizFun.checkRecordAllData();
- //// KprAimTapWaterBizFun.checkRecordData();
- // KprAimWaterCollecationBizFun.insertYuceDataScheduled();
- // }
- // };
- // timer.schedule(timerTask, 5000);
- //
- // Timer timer2 = new Timer();
- // TimerTask timerTask1 = new TimerTask() {
- // @Override
- // public void run() {
- // KprAimWaterCollecationBizFun.insertYuceHourDataScheduled();
- // }
- // };
- // timer2.schedule(timerTask1, 10000);
- // }
- //TODO 启动时执行一次
- @PostConstruct
- public void initOneTapWater(){
- Timer timer = new Timer();
- // 创建定时器任务
- TimerTask timerTask = new TimerTask() {
- @Override
- public void run() {
- KprAimTapWaterBizFun.initTapWaterData();
- }
- };
- timer.schedule(timerTask, 10000); // 10秒后执行一次
- }
- @PostConstruct
- public void initWaterRecordAll(){
- Timer timer = new Timer();
- TimerTask timerTask1 = new TimerTask() {
- @Override
- public void run() {
- KprAimTapWaterBizFun.initWaterCollecationReacordAll();
- }
- };
- timer.schedule(timerTask1,11000);//11秒后执行一次
- }
- }
|