package com.casic.config.task; import com.casic.service.DeviceDataService; import com.casic.service.IPartitionStrategyService; import com.casic.service.UserDataDelayReceiver; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.config.TriggerTask; import org.springframework.scheduling.support.CronTrigger; /** * @author cz */ @Configuration @EnableScheduling @RequiredArgsConstructor public class TaskConfigurer implements SchedulingConfigurer { @Value("${casic.device.online.cron}") private String onlineStateCron; @Value("${casic.device.transfer-user.cron}") private String transferUserCron; @Value("${casic.device.partition.cron}") private String partitionCron; private final DeviceDataService deviceDataService; private final UserDataDelayReceiver userDataDelayReceiver; private final IPartitionStrategyService partitionStrategyService; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { TriggerTask onlineStateTask = new TriggerTask(nextDayDevice(), triggerContext -> { return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext); }); TriggerTask transferUserTask = new TriggerTask(getUserData(), triggerContext -> { return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext); }); TriggerTask partitionTask = new TriggerTask(createPartition(), triggerContext -> { return new CronTrigger(partitionCron).nextExecutionTime(triggerContext); }); taskRegistrar.addTriggerTask(onlineStateTask); taskRegistrar.addTriggerTask(transferUserTask); taskRegistrar.addTriggerTask(partitionTask); } private Runnable nextDayDevice() { return new Runnable() { @Override public void run() { deviceDataService.checkAndUpdateDeviceOnline(); } }; } /** * 定时同步普光 */ private Runnable getUserData() { return new Runnable() { @Override public void run() { userDataDelayReceiver.saveNewUserData(); } }; } /** * 定时同步普光 */ private Runnable createPartition() { return new Runnable() { @Override public void run() { partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log"); } }; } }