package com.jiayue.client.job; import com.jiayue.client.service.SendDataService; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 青海集中功率预测向数据中心回传数据: * 1.实际功率 短期 超短期 气象站 测风塔 风机 等数据 * 2.每天凌晨2点执行,回传前一天数据,定时任务失败需要手动触发回传 */ @Service @Slf4j public class SendDataToDcJob { public final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public final SendDataService sendDataService; public SendDataToDcJob(SendDataService sendDataService) { this.sendDataService = sendDataService; } /** * 获取当前时间所在天的0点0分 * * @return 0点0分的毫秒 */ public String getDayStartTime() { Calendar date = Calendar.getInstance(); date.setTime(new Date()); date.set(Calendar.HOUR_OF_DAY, 0); date.set(Calendar.MINUTE, 0); date.set(Calendar.SECOND, 0); date.set(Calendar.MILLISECOND, 0); date.add(Calendar.DAY_OF_MONTH, -1); return this.formatter.format(date.getTime()); } /** * 获取当前时间所在天的23点59分59秒 * * @return 23点59分59秒的毫秒 */ public String getDayLastTime() { Calendar date = Calendar.getInstance(); date.setTime(new Date()); date.set(Calendar.HOUR_OF_DAY, 23); date.set(Calendar.MINUTE, 59); date.set(Calendar.SECOND, 59); date.set(Calendar.MILLISECOND, 999); date.add(Calendar.DAY_OF_MONTH, -1); return this.formatter.format(date.getTime()); } /** * 每天凌晨2点执行 */ @Scheduled(cron = "10 1 2 * * ?") public void sendJob() { log.info("时间 【" + System.currentTimeMillis() + "】 向数据中心发送青海集中功率预测前一天的实际功率等数据。数据范围:【{}--{}】", getDayStartTime(), getDayLastTime()); sendDataService.send(getDayStartTime(), getDayLastTime(), "all"); } }