SendDataToDcJob.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.jiayue.client.job;
  2. import com.jiayue.client.service.SendDataService;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.scheduling.annotation.Scheduled;
  5. import org.springframework.stereotype.Service;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Calendar;
  8. import java.util.Date;
  9. /**
  10. * 青海集中功率预测向数据中心回传数据:
  11. * 1.实际功率 短期 超短期 气象站 测风塔 风机 等数据
  12. * 2.每天凌晨2点执行,回传前一天数据,定时任务失败需要手动触发回传
  13. */
  14. @Service
  15. @Slf4j
  16. public class SendDataToDcJob {
  17. public final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  18. public final SendDataService sendDataService;
  19. public SendDataToDcJob(SendDataService sendDataService) {
  20. this.sendDataService = sendDataService;
  21. }
  22. /**
  23. * 获取当前时间所在天的0点0分
  24. *
  25. * @return 0点0分的毫秒
  26. */
  27. public String getDayStartTime() {
  28. Calendar date = Calendar.getInstance();
  29. date.setTime(new Date());
  30. date.set(Calendar.HOUR_OF_DAY, 0);
  31. date.set(Calendar.MINUTE, 0);
  32. date.set(Calendar.SECOND, 0);
  33. date.set(Calendar.MILLISECOND, 0);
  34. date.add(Calendar.DAY_OF_MONTH, -1);
  35. return this.formatter.format(date.getTime());
  36. }
  37. /**
  38. * 获取当前时间所在天的23点59分59秒
  39. *
  40. * @return 23点59分59秒的毫秒
  41. */
  42. public String getDayLastTime() {
  43. Calendar date = Calendar.getInstance();
  44. date.setTime(new Date());
  45. date.set(Calendar.HOUR_OF_DAY, 23);
  46. date.set(Calendar.MINUTE, 59);
  47. date.set(Calendar.SECOND, 59);
  48. date.set(Calendar.MILLISECOND, 999);
  49. date.add(Calendar.DAY_OF_MONTH, -1);
  50. return this.formatter.format(date.getTime());
  51. }
  52. /**
  53. * 每天凌晨2点执行
  54. */
  55. @Scheduled(cron = "10 1 2 * * ?")
  56. public void sendJob() {
  57. log.info("时间 【" + System.currentTimeMillis() + "】 向数据中心发送青海集中功率预测前一天的实际功率等数据。数据范围:【{}--{}】", getDayStartTime(), getDayLastTime());
  58. sendDataService.send(getDayStartTime(), getDayLastTime(), "all");
  59. }
  60. }