package com.gyee.impala.schdule; import com.gyee.impala.common.feign.RemoteServiceBuilder; import com.gyee.impala.common.util.DateUtil; import com.gyee.impala.common.util.FileUtil; import com.gyee.impala.common.util.SnowFlakeUtil; import com.gyee.impala.model.custom.TsDoubleData; import com.gyee.impala.model.master.Windturbine; import com.gyee.impala.model.master.Windturbinepoint; import com.gyee.impala.service.master.WindturbineService; import com.gyee.impala.service.master.WindturbinepointService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import java.util.ArrayList; import java.util.List; //@Component @Slf4j public class TaskPerformance { // 分钟 * 秒 private final Integer interval = 5 * 60; // 实时欠发状态 private final String RSSQFZT = "RSSQFZT"; // 发电机转速 private final String FDJZS = "AI012"; private final String FDJZSB = "AI012B"; // 明细状态 private final String FJMXZT = "ZTMX"; // 桨叶角度 private final String JYJD = "AI031"; private final String START_TIME = "2021-06-01 00:00:00"; private final String END_TIME = "2021-11-20 00:00:00"; @Autowired private RemoteServiceBuilder remoteServiceBuilder; @Autowired private WindturbineService windturbineService; @Autowired private WindturbinepointService windturbinepointService; /** * 性能下降统计 * 延时30s执行 * 每隔60s执行一次 */ @Scheduled(initialDelay = 30 * 1000, fixedRate = 2 * 86400000 * 1000) public void performanceNSS(){ List listNSS = windturbineService.getWindTurbineId("NSS_FDC"); if (listNSS == null || listNSS.size() < 0) return; List data = new ArrayList<>(); for (int i = 0; i < listNSS.size(); i++){ if (i > 10) break; System.out.println("======: " + listNSS.get(i).getId()); Windturbinepoint wp_zs = windturbinepointService.getItemByWtIdAndUniformCode(listNSS.get(i).getId(), FDJZS); Windturbinepoint wp_zt = windturbinepointService.getItemByWtIdAndUniformCode(listNSS.get(i).getId(), FJMXZT); Windturbinepoint wp_qf = windturbinepointService.getItemByWtIdAndUniformCode(listNSS.get(i).getId(), RSSQFZT); Windturbinepoint wp_jy = windturbinepointService.getItemByWtIdAndUniformCode(listNSS.get(i).getId(), JYJD); List zsData = remoteServiceBuilder.ShardingService().getHistorySnapAI(wp_zs.getPoint(), DateUtil.covertDateTimestamp(START_TIME), DateUtil.covertDateTimestamp(END_TIME), interval); List ztData = remoteServiceBuilder.ShardingService().getHistorySnapAI(wp_zt.getPoint(), DateUtil.covertDateTimestamp(START_TIME), DateUtil.covertDateTimestamp(END_TIME), interval); List qfData = remoteServiceBuilder.ShardingService().getHistorySnapAI(wp_qf.getPoint(), DateUtil.covertDateTimestamp(START_TIME), DateUtil.covertDateTimestamp(END_TIME), interval); List jdData = remoteServiceBuilder.ShardingService().getHistorySnapAI(wp_jy.getPoint(), DateUtil.covertDateTimestamp(START_TIME), DateUtil.covertDateTimestamp(END_TIME), interval); int k = 0; int m = 0; List list = new ArrayList<>(); List list1 = new ArrayList<>(); for (int j = 0; j < zsData.size(); j++) { if (zsData.get(j).getDoubleValue() >= 14 && ztData.get(j).getDoubleValue() == 2 && qfData.get(j).getDoubleValue() > 3 && jdData.get(j).getDoubleValue() == 0) { k++; list.add(DateUtil.format(zsData.get(j).getTs(), DateUtil.DATE_TIME_PATTERN)); } else if(zsData.get(j).getDoubleValue() >= 14 && ztData.get(j).getDoubleValue() == 2 && qfData.get(j).getDoubleValue() <= 2 && jdData.get(j).getDoubleValue() == 0){ m++; list1.add(DateUtil.format(zsData.get(j).getTs(), DateUtil.DATE_TIME_PATTERN)); } else { // 统计欠发 if (k >= 5) { data.add(SnowFlakeUtil.generateId() + "^0^NSS_FDC^" + listNSS.get(i).getId() + "^" + list.get(0) + "^" + list.get(list.size() - 1) + "^" + String.format("%.1f",(double)(k * interval) / 3600) + "^0^牛首山风电场^^^^\n"); } k = 0; list.clear(); // 统计不欠发 大于5小时 if (m >= 60) { data.add(SnowFlakeUtil.generateId() + "^1^NSS_FDC^" + listNSS.get(i).getId() + "^" + list1.get(0) + "^" + list1.get(list1.size() - 1) + "^" + String.format("%.1f",(double)(m * interval) / 3600) + "^0^牛首山风电场^^^^\n"); } m = 0; list1.clear(); } } } FileUtil.writeFile("nss_caseperformence_1_45", data); } }