TaskPerformance.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.gyee.impala.schdule;
  2. import com.gyee.impala.common.feign.RemoteServiceBuilder;
  3. import com.gyee.impala.common.util.DateUtil;
  4. import com.gyee.impala.common.util.FileUtil;
  5. import com.gyee.impala.common.util.SnowFlakeUtil;
  6. import com.gyee.impala.model.custom.TsDoubleData;
  7. import com.gyee.impala.model.master.Windturbine;
  8. import com.gyee.impala.model.master.Windturbinepoint;
  9. import com.gyee.impala.service.master.WindturbineService;
  10. import com.gyee.impala.service.master.WindturbinepointService;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.scheduling.annotation.Scheduled;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. //@Component
  17. @Slf4j
  18. public class TaskPerformance {
  19. // 分钟 * 秒
  20. private final Integer interval = 5 * 60;
  21. // 实时欠发状态
  22. private final String RSSQFZT = "RSSQFZT";
  23. // 发电机转速
  24. private final String FDJZS = "AI012";
  25. private final String FDJZSB = "AI012B";
  26. // 明细状态
  27. private final String FJMXZT = "ZTMX";
  28. // 桨叶角度
  29. private final String JYJD = "AI031";
  30. private final String START_TIME = "2021-06-01 00:00:00";
  31. private final String END_TIME = "2021-11-20 00:00:00";
  32. @Autowired
  33. private RemoteServiceBuilder remoteServiceBuilder;
  34. @Autowired
  35. private WindturbineService windturbineService;
  36. @Autowired
  37. private WindturbinepointService windturbinepointService;
  38. /**
  39. * 性能下降统计
  40. * 延时30s执行
  41. * 每隔60s执行一次
  42. */
  43. @Scheduled(initialDelay = 30 * 1000, fixedRate = 2 * 86400000 * 1000)
  44. public void performanceNSS(){
  45. List<Windturbine> listNSS = windturbineService.getWindTurbineId("NSS_FDC");
  46. if (listNSS == null || listNSS.size() < 0)
  47. return;
  48. List<String> data = new ArrayList<>();
  49. for (int i = 0; i < listNSS.size(); i++){
  50. if (i > 10)
  51. break;
  52. System.out.println("======: " + listNSS.get(i).getId());
  53. Windturbinepoint wp_zs = windturbinepointService.getItemByWtIdAndUniformCode(listNSS.get(i).getId(), FDJZS);
  54. Windturbinepoint wp_zt = windturbinepointService.getItemByWtIdAndUniformCode(listNSS.get(i).getId(), FJMXZT);
  55. Windturbinepoint wp_qf = windturbinepointService.getItemByWtIdAndUniformCode(listNSS.get(i).getId(), RSSQFZT);
  56. Windturbinepoint wp_jy = windturbinepointService.getItemByWtIdAndUniformCode(listNSS.get(i).getId(), JYJD);
  57. List<TsDoubleData> zsData = remoteServiceBuilder.ShardingService().getHistorySnapAI(wp_zs.getPoint(),
  58. DateUtil.covertDateTimestamp(START_TIME), DateUtil.covertDateTimestamp(END_TIME), interval);
  59. List<TsDoubleData> ztData = remoteServiceBuilder.ShardingService().getHistorySnapAI(wp_zt.getPoint(),
  60. DateUtil.covertDateTimestamp(START_TIME), DateUtil.covertDateTimestamp(END_TIME), interval);
  61. List<TsDoubleData> qfData = remoteServiceBuilder.ShardingService().getHistorySnapAI(wp_qf.getPoint(),
  62. DateUtil.covertDateTimestamp(START_TIME), DateUtil.covertDateTimestamp(END_TIME), interval);
  63. List<TsDoubleData> jdData = remoteServiceBuilder.ShardingService().getHistorySnapAI(wp_jy.getPoint(),
  64. DateUtil.covertDateTimestamp(START_TIME), DateUtil.covertDateTimestamp(END_TIME), interval);
  65. int k = 0;
  66. int m = 0;
  67. List<String> list = new ArrayList<>();
  68. List<String> list1 = new ArrayList<>();
  69. for (int j = 0; j < zsData.size(); j++) {
  70. if (zsData.get(j).getDoubleValue() >= 14
  71. && ztData.get(j).getDoubleValue() == 2
  72. && qfData.get(j).getDoubleValue() > 3
  73. && jdData.get(j).getDoubleValue() == 0) {
  74. k++;
  75. list.add(DateUtil.format(zsData.get(j).getTs(), DateUtil.DATE_TIME_PATTERN));
  76. } else if(zsData.get(j).getDoubleValue() >= 14
  77. && ztData.get(j).getDoubleValue() == 2
  78. && qfData.get(j).getDoubleValue() <= 2
  79. && jdData.get(j).getDoubleValue() == 0){
  80. m++;
  81. list1.add(DateUtil.format(zsData.get(j).getTs(), DateUtil.DATE_TIME_PATTERN));
  82. }
  83. else {
  84. // 统计欠发
  85. if (k >= 5) {
  86. data.add(SnowFlakeUtil.generateId() + "^0^NSS_FDC^"
  87. + listNSS.get(i).getId() + "^" + list.get(0) + "^"
  88. + list.get(list.size() - 1) + "^"
  89. + String.format("%.1f",(double)(k * interval) / 3600)
  90. + "^0^牛首山风电场^^^^\n");
  91. }
  92. k = 0;
  93. list.clear();
  94. // 统计不欠发 大于5小时
  95. if (m >= 60) {
  96. data.add(SnowFlakeUtil.generateId() + "^1^NSS_FDC^"
  97. + listNSS.get(i).getId() + "^" + list1.get(0) + "^"
  98. + list1.get(list1.size() - 1) + "^"
  99. + String.format("%.1f",(double)(m * interval) / 3600)
  100. + "^0^牛首山风电场^^^^\n");
  101. }
  102. m = 0;
  103. list1.clear();
  104. }
  105. }
  106. }
  107. FileUtil.writeFile("nss_caseperformence_1_45", data);
  108. }
  109. }