123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- package com.gyee.impala.schdule;
- import com.gyee.impala.common.config.GyeeConfig;
- import com.gyee.impala.common.constant.Constants;
- import com.gyee.impala.common.feign.RemoteServiceBuilder;
- import com.gyee.impala.common.spring.InitialRunner;
- import com.gyee.impala.common.util.DateUtil;
- import com.gyee.impala.common.util.GyeeUtil;
- import com.gyee.impala.common.util.SnowFlakeUtil;
- import com.gyee.impala.model.custom.TsDoubleData;
- import com.gyee.impala.model.master.Caseperformance;
- import com.gyee.impala.model.master.Windturbine;
- import com.gyee.impala.model.master.Windturbinepoint;
- import com.gyee.impala.service.master.CaseperformanceService;
- import com.gyee.impala.service.master.WindturbinepointService;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.List;
- /**
- * 基于欠发矩阵的统计
- */
- @Component
- @Slf4j
- public class TaskPerformance {
- /** 等间隔查询 秒 **/
- private final Integer interval = 1;
- @Autowired
- private GyeeConfig gyeeConfig;
- @Autowired
- private RemoteServiceBuilder remoteService;
- @Autowired
- private WindturbinepointService windturbinepointService;
- @Autowired
- private CaseperformanceService performanceService;
- // @Scheduled(initialDelay = 10 * 1000, fixedRate = 2 * 86400000 * 1000)
- // @Scheduled(cron = "0 40 2 * * ?")
- public void performanceNSS(){
- if (InitialRunner.wpMap.size() == 0)
- return;
- Calendar cal = Calendar.getInstance();
- InitialRunner.wpMap.forEach((k, v) -> v.stream().forEach(wt ->{
- try{
- /********************** 关系库获取测点名 ******************************/
- List<Windturbinepoint> wp_zs = windturbinepointService.getItemByWtIdAndUniformCode(wt.getId(), Constants.AI_FDJZS);
- List<Windturbinepoint> wp_zt = windturbinepointService.getItemByWtIdAndUniformCode(wt.getId(), Constants.DI_FJMXZT);
- List<Windturbinepoint> wp_qf = windturbinepointService.getItemByWtIdAndUniformCode(wt.getId(), Constants.DI_RSSQFZT);
- List<Windturbinepoint> wp_jy = windturbinepointService.getItemByWtIdAndUniformCode(wt.getId(), Constants.AI_JYJD);
- List<Windturbinepoint> wp_xd = windturbinepointService.getItemByWtIdAndUniformCode(wt.getId(), Constants.DI_XDZT);
- /********************** 关系库获取测点名 ******************************/
- long time = DateUtil.covertDateTimestamp(gyeeConfig.getInitTime());
- Caseperformance item = performanceService.getOneMaxTimeByWtId(wt.getId());
- if (item != null)
- time = DateUtil.covertDateTimestamp(item.getEndtime());
- long currentTime = System.currentTimeMillis();
- while(time < currentTime){
- long st = time;
- cal.setTime(new Date(time));
- cal.add(Calendar.DATE, 30);
- long et = cal.getTimeInMillis();
- if (wp_zs.size() > 0 || wp_zt.size() > 0 && wp_qf.size() > 0 && wp_jy.size()>0 && wp_xd.size() > 0){
- /********************** Golden读取原始数据 ******************************/
- List<TsDoubleData> zsData = remoteService.adapter().getHistorySnapAI(wp_zs.get(0).getPoint(), st, et, interval);
- List<TsDoubleData> ztData = remoteService.adapter().getHistorySnapAI(wp_zt.get(0).getPoint(), st, et, interval);
- List<TsDoubleData> qfData = remoteService.adapter().getHistorySnapAI(wp_qf.get(0).getPoint(), st, et, interval);
- List<TsDoubleData> jdData = remoteService.adapter().getHistorySnapAI(wp_jy.get(0).getPoint(), st, et, interval);
- List<TsDoubleData> xdData = remoteService.adapter().getHistorySnapAI(wp_xd.get(0).getPoint(), st, et, interval);
- /********************** Golden读取原始数据 ******************************/
- /** 分析保存至kudu*/
- saveCasePerformance(wt, k, zsData, ztData, qfData, jdData, xdData);
- time = et;
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- } catch (Exception e){
- log.error(e.getMessage());
- }
- }));
- }
- private void saveCasePerformance(Windturbine wt, String station, List<TsDoubleData> zsData, List<TsDoubleData> ztData,
- List<TsDoubleData> qfData, List<TsDoubleData> jdData, List<TsDoubleData> xdData ){
- List<Caseperformance> list = new ArrayList<>();
- List<String> lt = new ArrayList<>();
- List<String> ls = new ArrayList<>();
- for (int j = 0; j < zsData.size(); j++) {
- /**性能差**/
- if (GyeeUtil.convertNum(wt, zsData.get(j).getDoubleValue()) >= 1400
- && ztData.get(j).getDoubleValue() == 2
- && qfData.get(j).getDoubleValue() > 3
- && jdData.get(j).getDoubleValue() == 0
- && xdData.get(j).getDoubleValue() == 0) {
- lt.add(DateUtil.format(zsData.get(j).getTs(), DateUtil.DATE_TIME_PATTERN));
- }
- /**性能好**/
- if(GyeeUtil.convertNum(wt, zsData.get(j).getDoubleValue()) >= 1400
- && ztData.get(j).getDoubleValue() == 2
- && qfData.get(j).getDoubleValue() <= 2
- && jdData.get(j).getDoubleValue() == 0
- && xdData.get(j).getDoubleValue() == 0){
- ls.add(DateUtil.format(zsData.get(j).getTs(), DateUtil.DATE_TIME_PATTERN));
- }
- /**数据整理保存至kudu**/
- if (lt.size() > 1 || ls.size() > 1){
- Caseperformance obj = new Caseperformance();
- // 统计欠发
- if (lt.size() > 1) {
- obj.setTag(0);
- obj.setStarttime(lt.get(0));
- obj.setEndtime(lt.get(lt.size() - 1));
- obj.setIntervals(Double.valueOf(String.format("%.1f",(double)(lt.size() * interval) / 3600)));
- lt.clear();
- }
- // 统计不欠发
- if (ls.size() > 1) {
- obj.setTag(1);
- obj.setStarttime(ls.get(0));
- obj.setEndtime(ls.get(lt.size() - 1));
- obj.setIntervals(Double.valueOf(String.format("%.1f",(double)(ls.size() * interval) / 3600)));
- ls.clear();
- }
- obj.setId(SnowFlakeUtil.generateId());
- obj.setStationen(station);
- obj.setWindturbineid(wt.getId());
- obj.setAlgtype("QFMX");
- obj.setModel(wt.getModel());
- obj.setStationcn(InitialRunner.stationMap.get(station));
- obj.setManufacturer(InitialRunner.wpList.get(InitialRunner.wpList.indexOf(station)).getManufacturer());
- list.add(obj);
- }
- }
- performanceService.insertBatch(list);
- }
- public static void main(String[] args){
- }
- }
|