StartCommand.java 2.74 KB
package com.bsth;

import com.bsth.client.ClientApp;
import com.bsth.data.BasicCacheData;
import com.bsth.data.charts_data.AccuracyDataHandler;
import com.bsth.data.geo.loader.thread.DataLoadThread;
import com.bsth.data.gps.process.DataMainProcessor;
import com.bsth.data.history.HistoryConsumeTimeDataHandler;
import com.bsth.data.history.recovery.RecoveryByHistoryGps;
import com.bsth.data.schedule.ScheduleCacheData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;


/**
 * 随应用启动运行
 *
 * @author PanZhao
 */
@Component
public class StartCommand implements CommandLineRunner {

    @Autowired
    DataLoadThread fixedLoadCacheThread;

    @Autowired
    BasicCacheData.RefreshDataThead basicRefreshThead;

    @Autowired
    ScheduleCacheData.RefreshScheduleCacheThread refreshScheduleCacheThread;

    @Autowired
    DataMainProcessor dataMainProcessor;
    @Autowired
    ClientApp clientApp;
    @Autowired
    HistoryConsumeTimeDataHandler historyConsumeTimeDataHandler;

    @Autowired
    AccuracyDataHandler accuracyDataHandler;

    @Autowired
    RecoveryByHistoryGps recoveryByHistoryGps;

    Logger logger = LoggerFactory.getLogger(this.getClass());

    @Override
    public void run(String... arg0) {

        try {
            ScheduledExecutorService sexec = Application.mainServices;

            //加载基础对照信息
            basicRefreshThead.run();
            sexec.scheduleWithFixedDelay(basicRefreshThead, 60 * 60, 60 * 60, TimeUnit.SECONDS);
            //加载 geo 数据(增量)
            logger.info("load geo data start...");
            fixedLoadCacheThread.run();
            logger.info("load geo data end...");
            sexec.scheduleWithFixedDelay(fixedLoadCacheThread, 60 * 300, 60 * 300, TimeUnit.SECONDS);


            /**/ //定时刷新班次信息
             sexec.scheduleWithFixedDelay(refreshScheduleCacheThread, 60, 30, TimeUnit.SECONDS);

             //gps socket client
             clientApp.init();
             //gps 数据处理
             dataMainProcessor.start();

             //历史站点耗时数据
             historyConsumeTimeDataHandler.start();

             //预测准确性
             accuracyDataHandler.start();



            //historyConsumeTimeDataHandler.start();//历史站点耗时数据
            //recoveryByHistoryGps.recovery();//恢复到离站
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}