package com.shkpr.service.aimodelpower.bizmgr; import com.shkpr.service.aimodelpower.commproperties.CollectProperties; import com.shkpr.service.aimodelpower.components.WaterVolumeCollector; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; /** * 水量管理 * * @author 欧阳劲驰 * @serial 1.0.4 */ @Component public class WaterVolumeBizMgr { final ThreadPoolTaskExecutor taskScheduler; final CollectProperties collectProperties; final WaterVolumeCollector waterVolumeCollector; public WaterVolumeBizMgr(@Qualifier("taskExecutor") ThreadPoolTaskExecutor taskScheduler , CollectProperties collectProperties , WaterVolumeCollector waterVolumeCollector) { this.taskScheduler = taskScheduler; this.collectProperties = collectProperties; this.waterVolumeCollector = waterVolumeCollector; } /** * 初始化 */ @PostConstruct public void init() { //采集4天数据 if (collectProperties.getBusinessCollected()) { taskScheduler.execute(() -> waterVolumeCollector.collectBusinessMinuteData(4 * 24, null)); taskScheduler.execute(() -> waterVolumeCollector.collectBusinessHourData(4 * 24, null)); } taskScheduler.execute(() -> waterVolumeCollector.collectDifferenceMinuteData(4 * 24, null)); taskScheduler.execute(() -> waterVolumeCollector.collectDifferenceHourData(4 * 24, null)); taskScheduler.execute(() -> waterVolumeCollector.collectRawData(4 * 24, null)); } /** * 分钟任务 */ @Scheduled(cron = "0 */10 * * * *") public void minuteTask() { //采集营业所1小时的分钟数据 if (collectProperties.getBusinessCollected()) taskScheduler.execute(() -> waterVolumeCollector.collectBusinessMinuteData(1, null)); //采集1小时的分钟数据 taskScheduler.execute(() -> waterVolumeCollector.collectDifferenceMinuteData(1, null)); } /** * 小时任务 */ @Scheduled(cron = "0 5 * * * *") public void hourTask() { //采集营业所2小时的小时数据 if (collectProperties.getBusinessCollected()) taskScheduler.execute(() -> waterVolumeCollector.collectBusinessHourData(2, null)); //采集2小时的小时数据 taskScheduler.execute(() -> waterVolumeCollector.collectDifferenceHourData(2, null)); } /** * 日任务 */ @Scheduled(cron = "0 5 0 * * ?") public void dayTask() { //采集次日的原始数据 taskScheduler.execute(() -> waterVolumeCollector.collectRawData(24, null)); } }