Bladeren bron

dsfsdf34324

xusl 1 jaar geleden
bovenliggende
commit
9bde829a2f
26 gewijzigde bestanden met toevoegingen van 0 en 4069 verwijderingen
  1. 0 136
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE12.java
  2. 0 136
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE13.java
  3. 0 201
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE14.java
  4. 0 94
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE15.java
  5. 0 136
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE17.java
  6. 0 109
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE21.java
  7. 0 153
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE21Old.java
  8. 0 146
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE22.java
  9. 0 143
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE23.java
  10. 0 97
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE23Old.java
  11. 0 230
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE32.java
  12. 0 230
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE33.java
  13. 0 232
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE34.java
  14. 0 135
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE36.java
  15. 0 124
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE37.java
  16. 0 138
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE41.java
  17. 0 135
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE43.java
  18. 0 123
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE44.java
  19. 0 123
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE45.java
  20. 0 135
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE51.java
  21. 0 155
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE52.java
  22. 0 191
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE61.java
  23. 0 314
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE62.java
  24. 0 152
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE63.java
  25. 0 166
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE64.java
  26. 0 135
      ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE99.java

+ 0 - 136
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE12.java

@@ -1,136 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 河北准确率
- * 华北监能市场【2019】254号文件
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE12 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE12(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    psList.sort(Comparator.comparing(PowerStationStatusData::getOpenCapacity).reversed());
-    //获取时段内最大开机容量
-    if(psList.size()>0){
-      cap = psList.get(0).getOpenCapacity();
-    }
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC7(dataDq,cap);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    int n =0;
-    BigDecimal single;
-    BigDecimal count = IAccuracyPassRateCalculate.ZERO;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-      List<ForecastPowerUltraShortTermHis> ultraList = forecastPowerUltraShortTermHisRepository.findByForecastTime(finalTime);
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(ultraList!=null && ultraList.size()>0 && pFilter !=null && pFilter.size()>0){
-        for(ForecastPowerUltraShortTermHis f : ultraList){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",pFilter.get(0).getAbleValue());
-          map.put("yc",f.getAbleValue());
-          dataCdq.add(map);
-        }
-      }
-
-      if (dataCdq != null && dataCdq.size() > 0) {
-        try {
-          single = CalculateMethod.calculateC7(dataCdq,cap);
-          count = count.add(single);
-          n++;
-        } catch (Exception e) {
-          e.printStackTrace();
-          log.error("计算超短期单点准确率错误");
-        }
-      }
-    }
-
-    if(n>0){
-      BigDecimal nBig  = new BigDecimal(String.valueOf(n));
-      accuarcyCdq = count.divide(nBig,2,BigDecimal.ROUND_HALF_UP);
-      accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 136
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE13.java

@@ -1,136 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 河北准确率
- * 华北监能市场【2019】254号文件
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE13 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE13(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    psList.sort(Comparator.comparing(PowerStationStatusData::getOpenCapacity).reversed());
-    //获取时段内最大开机容量
-    if(psList.size()>0){
-      cap = psList.get(0).getOpenCapacity();
-    }
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC7(dataDq,cap);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    int n =0;
-    BigDecimal single;
-    BigDecimal count = IAccuracyPassRateCalculate.ZERO;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-      List<ForecastPowerUltraShortTermHis> ultraList = forecastPowerUltraShortTermHisRepository.findByForecastTime(finalTime);
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(ultraList!=null && ultraList.size()>0 && pFilter !=null && pFilter.size()>0){
-        for(ForecastPowerUltraShortTermHis f : ultraList){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",pFilter.get(0).getAbleValue());
-          map.put("yc",f.getAbleValue());
-          dataCdq.add(map);
-        }
-      }
-
-      if (dataCdq != null && dataCdq.size() > 0) {
-        try {
-          single = CalculateMethod.calculateC7(dataCdq,cap);
-          count = count.add(single);
-          n++;
-        } catch (Exception e) {
-          e.printStackTrace();
-          log.error("计算超短期单点准确率错误");
-        }
-      }
-    }
-
-    if(n>0){
-      BigDecimal nBig  = new BigDecimal(String.valueOf(n));
-      accuarcyCdq = count.divide(nBig,2,BigDecimal.ROUND_HALF_UP);
-      accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 201
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE14.java

@@ -1,201 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.core.integration.constant.StatusConstant;
-import com.jiayue.ipfcst.common.core.integration.correct.dq.IForePowerShortTermCorrect;
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.entity.integration.InForecastPowerShortTermHis;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import com.jiayue.ipfcst.fileupload.integration.service.InForecastPowerShortTermHisService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 山西准确率
- * 2016 584号文件
- * 按日统计 00:00 - 23:45
- *
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE14 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  private final InForecastPowerShortTermHisService inForecastPowerShortTermHisService;
-
-  private final IForePowerShortTermCorrect inForePowerShortTermCorrect;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE14(PowerStationStatusDataRepository powerStationStatusDataRepository,
-                                             ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository,
-                                             ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository,
-                                             SysParameterService sysParameterService,
-                                             AccuracyPassRateRepository accuracyPassRateRepository,
-                                             InForecastPowerShortTermHisService inForecastPowerShortTermHisService,
-                                             IForePowerShortTermCorrect inForePowerShortTermCorrect
-  ) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-    this.inForecastPowerShortTermHisService = inForecastPowerShortTermHisService;
-    this.inForePowerShortTermCorrect = inForePowerShortTermCorrect;
-
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime = IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    BigDecimal compare = new BigDecimal("80");
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    BigDecimal passRateDq;
-    BigDecimal passRateCdq;
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-
-
-    List<Map<String, BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        map.put("cap", cap);
-        dataDq.add(map);
-      }
-
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC2(dataDq, cap);
-        passRateDq = CalculateMethod.calculateB1(dataDq, compare);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString() + "%");
-        accuracyPassRate.setShortTermPassRate(passRateDq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String, BigDecimal>> dataCdq = new ArrayList<>();
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        map.put("cap", cap);
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC2(dataCdq, cap);
-        passRateCdq = CalculateMethod.calculateB1(dataCdq, compare);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString() + "%");
-        accuracyPassRate.setUltraShortTermPassRate(passRateCdq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    } else {
-      accuracyPassRate.setUltraShortTermPassRate("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-
-    /************** ***********************************计算一体化短期准确率-start****************************************************/
-    //一体化短期计算
-    if (inForePowerShortTermCorrect.beanType().equals(StatusConstant.BEAN_TYPE_REAL)) {
-      List<Map<String, BigDecimal>> idataDq = new ArrayList<>();
-      List<InForecastPowerShortTermHis> ifList = inForecastPowerShortTermHisService.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-      for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-        long finalTime = stepTime;
-        List<InForecastPowerShortTermHis> ifFilter = ifList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-        List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-        if (ifFilter != null && ifFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-          Map<String, BigDecimal> map = new HashMap<>();
-          map.put("sj", pFilter.get(0).getAbleValue());
-          map.put("yc", ifFilter.get(0).getFpValue());
-          map.put("cap", cap);
-          idataDq.add(map);
-        }
-
-      }
-      AccuracyPassRate iaccuracyPassRate = new AccuracyPassRate();
-      iaccuracyPassRate.setTime(endTime);
-      iaccuracyPassRate.setBackupA(StatusConstant.INTEGRATION_SIGN);
-      BigDecimal iaccuarcyDq;
-
-      BigDecimal ipassRateDq;
-
-      if (idataDq != null && idataDq.size() > 0) {
-        try {
-          iaccuarcyDq = CalculateMethod.calculateC2(idataDq, cap);
-          ipassRateDq = CalculateMethod.calculateB1(idataDq, compare);
-          iaccuracyPassRate.setShortTermAccuracy(iaccuarcyDq.toString() + "%");
-          iaccuracyPassRate.setShortTermPassRate(ipassRateDq.toString() + "%");
-        } catch (Exception e) {
-          e.printStackTrace();
-          log.error("计算短期准确率错误");
-        }
-
-      } else {
-        iaccuracyPassRate.setShortTermAccuracy("无可用数据计算");
-      }
-
-      this.accuracyPassRateRepository.save(iaccuracyPassRate);
-
-    }
-    /************** ***********************************计算一体化短期准确率-end****************************************************/
-
-  }
-
-}

+ 0 - 94
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE15.java

@@ -1,94 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 蒙东准确率
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE15 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE15(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    BigDecimal compare = new BigDecimal("75");
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal passRateDq;
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        map.put("cap",cap);
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC5(dataDq);
-        passRateDq = CalculateMethod.calculateB1(dataDq,compare);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-        accuracyPassRate.setShortTermPassRate(passRateDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率合格率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 136
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE17.java

@@ -1,136 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 河北准确率
- * 华北监能市场【2019】254号文件
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE17 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE17(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    psList.sort(Comparator.comparing(PowerStationStatusData::getOpenCapacity).reversed());
-    //获取时段内最大开机容量
-    if(psList.size()>0){
-      cap = psList.get(0).getOpenCapacity();
-    }
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC7(dataDq,cap);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    int n =0;
-    BigDecimal single;
-    BigDecimal count = IAccuracyPassRateCalculate.ZERO;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-      List<ForecastPowerUltraShortTermHis> ultraList = forecastPowerUltraShortTermHisRepository.findByForecastTime(finalTime);
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(ultraList!=null && ultraList.size()>0 && pFilter !=null && pFilter.size()>0){
-        for(ForecastPowerUltraShortTermHis f : ultraList){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",pFilter.get(0).getAbleValue());
-          map.put("yc",f.getAbleValue());
-          dataCdq.add(map);
-        }
-      }
-
-      if (dataCdq != null && dataCdq.size() > 0) {
-        try {
-          single = CalculateMethod.calculateC7(dataCdq,cap);
-          count = count.add(single);
-          n++;
-        } catch (Exception e) {
-          e.printStackTrace();
-          log.error("计算超短期单点准确率错误");
-        }
-      }
-    }
-
-    if(n>0){
-      BigDecimal nBig  = new BigDecimal(String.valueOf(n));
-      accuarcyCdq = count.divide(nBig,2,BigDecimal.ROUND_HALF_UP);
-      accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 109
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE21.java

@@ -1,109 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.AccuracyPassRate;
-import com.jiayue.ipfcst.common.data.entity.ElectricField;
-import com.jiayue.ipfcst.common.data.entity.ForecastPowerShortTermHis;
-import com.jiayue.ipfcst.common.data.entity.PowerStationStatusData;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 辽宁准确率合格率
- * 辽宁风电场及光伏电站
- * 东北监能市场(2020) 113 号
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE21 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE21(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal passRateDq;
-    BigDecimal compare = new BigDecimal("75");
-    String eType = electricField.getElectricFieldTypeEnum().name();
-    if(eType.equals("E1")){
-      compare = new BigDecimal("85");
-    }
-
-    List<PowerStationStatusData> psList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    //4.1  王涛张恩柱 讨论  负值也带入
-//    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        PowerStationStatusData p = pFilter.get(0);
-        float openCapacity = p.getOpenCapacity().floatValue();
-        //过滤掉开机容量小于0的数据
-        if(openCapacity > IAccuracyPassRateCalculate.ZERO.floatValue()){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",p.getAbleValue());
-          map.put("cap",p.getOpenCapacity());
-          map.put("yc",fFilter.get(0).getAbleValue());
-          dataDq.add(map);
-        }
-
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC5(dataDq);
-        passRateDq = CalculateMethod.calculateB1(dataDq,compare);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-        accuracyPassRate.setShortTermPassRate(passRateDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率合格率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-      accuracyPassRate.setShortTermPassRate("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 153
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE21Old.java

@@ -1,153 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 辽宁省准确率 老版
- * 东北2019115号文件
- * 按15分钟统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE21Old implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE21Old(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-    long moment15 = 900000L;
-
-    BigDecimal capacity = electricField.getCapacity();
-    BigDecimal radioMin = new BigDecimal("0.1");
-    BigDecimal compareMin = IAccuracyPassRateCalculate.compareRadio(radioMin, capacity, 2);
-    BigDecimal radioMax = new BigDecimal("1.03");
-    BigDecimal compareMax = IAccuracyPassRateCalculate.compareRadio(radioMax, capacity, 2);
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    String accuarcyDq ;
-    String accuarcyCdq = "";
-    PowerStationStatusData powerStationStatusData = this.powerStationStatusDataRepository.findByTime(new Date(endTime));
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    // 获取短期计算准确率获取该天是提前几天预测的
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    ForecastPowerShortTermHis forecastPowerShortTermHis = this.forecastPowerShortTermHisRepository.findByForecastTimeAndForecastHowLongAgo(endTime, howLongAgoForDq);
-
-    if (powerStationStatusData != null && forecastPowerShortTermHis != null) {
-      BigDecimal pAbleValue = powerStationStatusData.getAbleValue();
-      BigDecimal fAbleValue = forecastPowerShortTermHis.getAbleValue();
-      //预测和实际都小于装机10% 不予考核
-      if(pAbleValue.floatValue()<compareMin.floatValue() && fAbleValue.floatValue()<compareMin.floatValue() ){
-        accuracyPassRate.setShortTermAccuracy("不予考核");
-        //预测或实际大于装机103% 误差100%
-      }else if(pAbleValue.floatValue()>compareMax.floatValue() || fAbleValue.floatValue()>compareMax.floatValue() ){
-        accuracyPassRate.setShortTermAccuracy(IAccuracyPassRateCalculate.ZERO.toString()+"%");
-      }else{
-        try {
-          accuarcyDq = CalculateMethod.calculateC3(fAbleValue,pAbleValue).toString()+"%";
-          accuracyPassRate.setShortTermAccuracy(accuarcyDq);
-        } catch (Exception e) {
-          e.printStackTrace();
-          log.error("计算短期准确率错误");
-        }
-      }
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无计算数据");
-    }
-    /************** ***********************************计算短期准确率-end*****************************************************/
-
-    /*************************************************计算超短期准确率-start*****************************************************/
-    //计算单点
-    List<ForecastPowerUltraShortTermHis> ultraList = this.forecastPowerUltraShortTermHisRepository.findByForecastTime(endTime);
-    if(ultraList !=null && ultraList.size()>0 && powerStationStatusData != null){
-      Double avgValue = ultraList.stream().mapToDouble(f-> f.getAbleValue().doubleValue()).average().getAsDouble();
-      String avgStr = String.valueOf(avgValue);
-      BigDecimal ultraAvg = new BigDecimal(avgStr);
-      BigDecimal pAbleValue = powerStationStatusData.getAbleValue();
-      // 预测 可用  实际 都小于装机10% 不予考核
-      if(ultraAvg.floatValue()<compareMin.floatValue() && pAbleValue.floatValue() < compareMin.floatValue()
-          && powerStationStatusData.getRealValue().floatValue() < compareMin.floatValue() ){
-        accuarcyCdq = "单点:不予考核|";
-      }else{
-        try {
-          accuarcyCdq ="单点:"+ CalculateMethod.calculateC3(ultraAvg,pAbleValue).toString()+"%|";
-        } catch (Exception e) {
-          e.printStackTrace();
-          log.error("计算超短期准确率错误");
-        }
-      }
-    }else{
-      accuarcyCdq = "单点:无计算数据|";
-    }
-    //平均
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> uList = this.forecastPowerUltraShortTermHisRepository.findByForecastTime(finalTime);
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(uList!=null && uList.size()>0 && pFilter !=null && pFilter.size()>0){
-        Double avgValue = uList.stream().mapToDouble(f-> f.getAbleValue().doubleValue()).average().getAsDouble();
-        String avgStr = String.valueOf(avgValue);
-        BigDecimal ultraAvg = new BigDecimal(avgStr);
-        BigDecimal pAbleValue = pFilter.get(0).getAbleValue();
-        // 预测 可用  实际 都小于装机10% 不予考核
-        if(ultraAvg.floatValue()>=compareMin.floatValue() || pAbleValue.floatValue() >= compareMin.floatValue()
-          || powerStationStatusData.getRealValue().floatValue() >= compareMin.floatValue() ){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",pAbleValue);
-          map.put("yc",ultraAvg);
-          dataCdq.add(map);
-        }
-
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        accuarcyCdq =accuarcyCdq+ "平均"+CalculateMethod.calculateC8(dataCdq).toString()+"%";
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期平均准确率错误");
-      }
-    }else{
-      accuarcyCdq = accuarcyCdq+"平均:无计算数据";
-    }
-    accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq);
-    /*************************************************计算超短期准确率-end*****************************************************/
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 146
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE22.java

@@ -1,146 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 吉林准确率
- * 吉林风电场及光伏电站
- * 东北监能市场(2020) 113 号
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE22 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE22(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    BigDecimal cap = electricField.getCapacity();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    BigDecimal passRateDq;
-    BigDecimal passRateCdq;
-    BigDecimal compare = new BigDecimal("75");
-    String eType = electricField.getElectricFieldTypeEnum().name();
-    if(eType.equals("E1")){
-      compare = new BigDecimal("85");
-    }
-
-    List<PowerStationStatusData> psList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    //4.1  王涛张恩柱 讨论  负值也带入
-//    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        PowerStationStatusData p = pFilter.get(0);
-        float openCapacity = p.getOpenCapacity().floatValue();
-        //过滤掉开机容量小于0的数据
-        if(openCapacity > IAccuracyPassRateCalculate.ZERO.floatValue()){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",p.getAbleValue());
-          map.put("cap",p.getOpenCapacity());
-          map.put("yc",fFilter.get(0).getAbleValue());
-          dataDq.add(map);
-        }
-
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC5(dataDq);
-        passRateDq = CalculateMethod.calculateB1(dataDq,compare);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-        accuracyPassRate.setShortTermPassRate(passRateDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率合格率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-      accuracyPassRate.setShortTermPassRate("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        map.put("cap",fFilter.get(0).getCapacity());
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC1(dataCdq,cap);
-        passRateCdq = CalculateMethod.calculateB1(dataCdq,compare);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-        accuracyPassRate.setUltraShortTermPassRate(passRateCdq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率合格错误");
-      }
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 143
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE23.java

@@ -1,143 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 黑龙江准确率合格率
- * 黑龙江风电场及光伏电站
- * 东北监能市场(2020) 113 号
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE23 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE23(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-  @Override
-  public void generateData(ElectricField electricField) {
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal cap = electricField.getCapacity();
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    BigDecimal passRateDq;
-    BigDecimal passRateCdq;
-    BigDecimal compare = new BigDecimal("75");
-    String eType = electricField.getElectricFieldTypeEnum().name();
-    if(eType.equals("E1")){
-      compare = new BigDecimal("85");
-    }
-
-    List<PowerStationStatusData> psList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    //4.1  王涛张恩柱 讨论  负值也带入
-//    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        PowerStationStatusData p = pFilter.get(0);
-        float openCapacity = p.getOpenCapacity().floatValue();
-        //过滤掉开机容量小于0的数据
-        if(openCapacity > IAccuracyPassRateCalculate.ZERO.floatValue()){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",p.getAbleValue());
-          map.put("cap",p.getOpenCapacity());
-          map.put("yc",fFilter.get(0).getAbleValue());
-          dataDq.add(map);
-        }
-
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC5(dataDq);
-        passRateDq = CalculateMethod.calculateB1(dataDq,compare);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-        accuracyPassRate.setShortTermPassRate(passRateDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率合格率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-      accuracyPassRate.setShortTermPassRate("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        map.put("cap",fFilter.get(0).getCapacity());
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC1(dataCdq,cap);
-        passRateCdq = CalculateMethod.calculateB1(dataCdq,compare);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-        accuracyPassRate.setUltraShortTermPassRate(passRateCdq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率合格错误");
-      }
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 97
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE23Old.java

@@ -1,97 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.AccuracyPassRate;
-import com.jiayue.ipfcst.common.data.entity.ElectricField;
-import com.jiayue.ipfcst.common.data.entity.ForecastPowerShortTermHis;
-import com.jiayue.ipfcst.common.data.entity.PowerStationStatusData;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 黑龙江准确率 老版
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE23Old implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE23Old(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    BigDecimal compare = new BigDecimal("75");
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal passRateDq;
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        map.put("cap",cap);
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC5(dataDq);
-        passRateDq = CalculateMethod.calculateB1(dataDq,compare);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-        accuracyPassRate.setShortTermPassRate(passRateDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率合格率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 230
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE32.java

@@ -1,230 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 江苏准确率
- *
- * 按日统计 00:15 -00:00
- * @author whc
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE32 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE32(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTime();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    String eType = electricField.getElectricFieldTypeEnum().name();
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    dataDq = this.dataFilter(fList,psList,eType,"dq",startTime,endTime);
-    if (dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC6(dataDq);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    dataCdq = this.dataFilter(uList,psList,eType,"cdq",startTime,endTime);
-    if (dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC6(dataCdq);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-
-  /**
-   *  数据过滤
-   * @param list 预测数据
-   * @param rList 实际功率
-   * @param electricFieldType 场站类型
-   * @param dataType 预测数据类型
-   * @param strartTime 开始时间
-   * @param endTime 结束时间
-   * @return 过滤后结果集
-   */
-  private List<Map<String, BigDecimal>> dataFilter(List list, List<PowerStationStatusData> rList, String electricFieldType, String dataType, long strartTime, long endTime) {
-    /**
-     * 光伏:
-     * 短期功率预测:
-     * 情况一:白天11:00—14:00不管发电功率多少都参与考核包含11:00和14:00整点时刻(此期间实际功率若为零,则实际功率按照0.01MW计算),
-     * 其余时间发电功率需要大于等于10MW时参与考核,小于10MW时不参与考核,不统计入考核点数(包括PMi为零的时候);
-     * 超短期功率预测:
-     * 和日前功率预测(短期功率预测)考核规则一样。超短期目前考核点位为第一个
-     * (建议设置可零活配置的点位)。
-     */
-
-    /**
-     * 风电:
-     * 短期功率预测:
-     * 情况一:发电功率需要大于等于10MW时参与考核,小于10MW时不参与考核,不统计考核点数(包括PMi为零的时候)。
-     * 超短期功率预测:
-     * 和日前功率预测(短期功率预测)考核规则一样。超短期目前考核点位为第一个
-     * (建议设置可零活配置的点位)
-     */
-
-    //思路:
-    // 1.无论超短期还是短期,风电和光伏的数据,首先都需要过滤掉同一时刻缺少实际值或者缺少预测值或者2个值同时缺少数据的时刻
-    // 2.当同一时刻,预测值和实际值都不缺少时候,再进行下一步
-    // 3.由于cdq和dq对于场站类型来说,计算过滤条件都是相同的,所以只需要区分场站类型即可。不需要再区分dq和cdq的数据类型
-    List<ForecastPowerShortTermHis> dqList = new ArrayList<>();
-    List<ForecastPowerUltraShortTermHis> cdqList = new ArrayList<>();
-    long moment15 = 900000L;
-    BigDecimal df = new BigDecimal("0.01");
-    BigDecimal compare = new BigDecimal("10");
-    List<Map<String, BigDecimal>> result = new ArrayList<>();
-    if (dataType.equals("dq")) {
-      dqList = list;
-    } else {
-      cdqList = list;
-    }
-    //只要有一个集合为空,那么准确率就无法计算
-    if (rList != null && rList.size() > 0 && list != null && list.size() > 0) {
-      for (long i = strartTime; i <= endTime; i = i + moment15) {
-        long stepTime = i;
-        //过滤出该时间的预测值
-        List ycFilter = null;
-        if (dataType.equals("dq")) {
-          ycFilter = dqList.stream().filter(t -> t.getForecastTime() == stepTime).collect(Collectors.toList());
-        } else {
-          ycFilter = cdqList.stream().filter(t -> t.getForecastTime() == stepTime).collect(Collectors.toList());
-        }
-
-        //过滤出该时间的实际功率值
-        List<PowerStationStatusData> rpFilter = null;
-        rpFilter = rList.stream().filter(t -> t.getTime().getTime() == stepTime).collect(Collectors.toList());
-        //过滤掉同一时刻预测和实际值有缺失的数据
-        if ((ycFilter != null && ycFilter.size() > 0) && (rpFilter != null && rpFilter.size() > 0)) {
-          //实际值
-          BigDecimal rpValue = rpFilter.get(0).getAbleValue();
-          //预测值
-          BigDecimal ycValue;
-          if (dataType.equals("dq")) {
-            ycValue = ((List<ForecastPowerShortTermHis>) ycFilter).get(0).getAbleValue();
-          } else {
-            ycValue = ((List<ForecastPowerUltraShortTermHis>) ycFilter).get(0).getAbleValue();
-          }
-          //区分光伏场站和风电场站
-          if (electricFieldType.equals("E1")) {
-            //光伏电站过滤条件
-            //计算出该天11:00和14:00点的时间戳
-            Calendar calendar = Calendar.getInstance();
-            calendar.setTimeInMillis(strartTime);
-            calendar.set(Calendar.HOUR_OF_DAY, 11);
-            calendar.set(Calendar.MINUTE, 0);
-            calendar.set(Calendar.SECOND, 0);
-            calendar.set(Calendar.MILLISECOND, 0);
-            long time11 = calendar.getTimeInMillis();
-            calendar.set(Calendar.HOUR_OF_DAY, 14);
-            long time14 = calendar.getTimeInMillis();
-            //如果时间是在11点和14点之间(包含11点和14点)
-
-            if (stepTime >= time11 && stepTime <= time14) {
-              //无论实际功率是否大于10MW 都计算
-              Map<String, BigDecimal> map = new HashMap<>();
-              map.put("yc", ycValue);
-              //如果实际功率为0就让实际功率=0.01MW
-              if (rpValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-
-                map.put("sj",df);
-              } else {
-                map.put("sj", rpValue);
-              }
-              result.add(map);
-            } else {
-              //不在11点和14点之间的实际功率只有大于等于10MW的才进行计算
-              if (rpValue.floatValue() >= compare.floatValue()) {
-                Map<String, BigDecimal> map = new HashMap<>();
-                map.put("yc", ycValue);
-                map.put("sj", rpValue);
-                result.add(map);
-              }
-            }
-
-          } else {
-            //风电电站过滤条件
-            //无论何时,只有实际功率>=10MW才会计算
-            if (rpValue.floatValue() >= compare.floatValue()) {
-              Map<String, BigDecimal> map = new HashMap<>();
-              map.put("yc", ycValue);
-              map.put("sj", rpValue);
-              result.add(map);
-            }
-          }
-
-        }
-
-      }
-    }
-
-    return result;
-  }
-
-
-}

+ 0 - 230
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE33.java

@@ -1,230 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 安徽准确率
- * 安徽省需求整理—20190829——005版本
- * 按日统计 00:15 -00:00
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE33 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE33(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTime();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    String eType = electricField.getElectricFieldTypeEnum().name();
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    dataDq = this.dataFilter(fList,psList,eType,"dq",startTime,endTime);
-    if (dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC6(dataDq);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    dataCdq = this.dataFilter(uList,psList,eType,"cdq",startTime,endTime);
-    if (dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC6(dataCdq);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-
-  /**
-   *  数据过滤
-   * @param list 预测数据
-   * @param rList 实际功率
-   * @param electricFieldType 场站类型
-   * @param dataType 预测数据类型
-   * @param strartTime 开始时间
-   * @param endTime 结束时间
-   * @return 过滤后结果集
-   */
-  private List<Map<String, BigDecimal>> dataFilter(List list, List<PowerStationStatusData> rList, String electricFieldType, String dataType, long strartTime, long endTime) {
-    /**
-     * 光伏:
-     * 短期功率预测:
-     * 情况一:白天11:00—14:00不管发电功率多少都参与考核包含11:00和14:00整点时刻(此期间实际功率若为零,则实际功率按照0.01MW计算),
-     * 其余时间发电功率需要大于等于10MW时参与考核,小于10MW时不参与考核,不统计入考核点数(包括PMi为零的时候);
-     * 超短期功率预测:
-     * 和日前功率预测(短期功率预测)考核规则一样。超短期目前考核点位为第一个
-     * (建议设置可零活配置的点位)。
-     */
-
-    /**
-     * 风电:
-     * 短期功率预测:
-     * 情况一:发电功率需要大于等于10MW时参与考核,小于10MW时不参与考核,不统计考核点数(包括PMi为零的时候)。
-     * 超短期功率预测:
-     * 和日前功率预测(短期功率预测)考核规则一样。超短期目前考核点位为第一个
-     * (建议设置可零活配置的点位)
-     */
-
-    //思路:
-    // 1.无论超短期还是短期,风电和光伏的数据,首先都需要过滤掉同一时刻缺少实际值或者缺少预测值或者2个值同时缺少数据的时刻
-    // 2.当同一时刻,预测值和实际值都不缺少时候,再进行下一步
-    // 3.由于cdq和dq对于场站类型来说,计算过滤条件都是相同的,所以只需要区分场站类型即可。不需要再区分dq和cdq的数据类型
-    List<ForecastPowerShortTermHis> dqList = new ArrayList<>();
-    List<ForecastPowerUltraShortTermHis> cdqList = new ArrayList<>();
-    long moment15 = 900000L;
-    BigDecimal df = new BigDecimal("0.01");
-    BigDecimal compare = new BigDecimal("10");
-    List<Map<String, BigDecimal>> result = new ArrayList<>();
-    if (dataType.equals("dq")) {
-      dqList = list;
-    } else {
-      cdqList = list;
-    }
-    //只要有一个集合为空,那么准确率就无法计算
-    if (rList != null && rList.size() > 0 && list != null && list.size() > 0) {
-      for (long i = strartTime; i <= endTime; i = i + moment15) {
-        long stepTime = i;
-        //过滤出该时间的预测值
-        List ycFilter = null;
-        if (dataType.equals("dq")) {
-          ycFilter = dqList.stream().filter(t -> t.getForecastTime() == stepTime).collect(Collectors.toList());
-        } else {
-          ycFilter = cdqList.stream().filter(t -> t.getForecastTime() == stepTime).collect(Collectors.toList());
-        }
-
-        //过滤出该时间的实际功率值
-        List<PowerStationStatusData> rpFilter = null;
-        rpFilter = rList.stream().filter(t -> t.getTime().getTime() == stepTime).collect(Collectors.toList());
-        //过滤掉同一时刻预测和实际值有缺失的数据
-        if ((ycFilter != null && ycFilter.size() > 0) && (rpFilter != null && rpFilter.size() > 0)) {
-          //实际值
-          BigDecimal rpValue = rpFilter.get(0).getAbleValue();
-          //预测值
-          BigDecimal ycValue;
-          if (dataType.equals("dq")) {
-            ycValue = ((List<ForecastPowerShortTermHis>) ycFilter).get(0).getAbleValue();
-          } else {
-            ycValue = ((List<ForecastPowerUltraShortTermHis>) ycFilter).get(0).getAbleValue();
-          }
-          //区分光伏场站和风电场站
-          if (electricFieldType.equals("E1")) {
-            //光伏电站过滤条件
-            //计算出该天11:00和14:00点的时间戳
-            Calendar calendar = Calendar.getInstance();
-            calendar.setTimeInMillis(strartTime);
-            calendar.set(Calendar.HOUR_OF_DAY, 11);
-            calendar.set(Calendar.MINUTE, 0);
-            calendar.set(Calendar.SECOND, 0);
-            calendar.set(Calendar.MILLISECOND, 0);
-            long time11 = calendar.getTimeInMillis();
-            calendar.set(Calendar.HOUR_OF_DAY, 14);
-            long time14 = calendar.getTimeInMillis();
-            //如果时间是在11点和14点之间(包含11点和14点)
-
-            if (stepTime >= time11 && stepTime <= time14) {
-              //无论实际功率是否大于10MW 都计算
-              Map<String, BigDecimal> map = new HashMap<>();
-              map.put("yc", ycValue);
-              //如果实际功率为0就让实际功率=0.01MW
-              if (rpValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-
-                map.put("sj",df);
-              } else {
-                map.put("sj", rpValue);
-              }
-              result.add(map);
-            } else {
-              //不在11点和14点之间的实际功率只有大于等于10MW的才进行计算
-              if (rpValue.floatValue() >= compare.floatValue()) {
-                Map<String, BigDecimal> map = new HashMap<>();
-                map.put("yc", ycValue);
-                map.put("sj", rpValue);
-                result.add(map);
-              }
-            }
-
-          } else {
-            //风电电站过滤条件
-            //无论何时,只有实际功率>=10MW才会计算
-            if (rpValue.floatValue() >= compare.floatValue()) {
-              Map<String, BigDecimal> map = new HashMap<>();
-              map.put("yc", ycValue);
-              map.put("sj", rpValue);
-              result.add(map);
-            }
-          }
-
-        }
-
-      }
-    }
-
-    return result;
-  }
-
-
-}

+ 0 - 232
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE34.java

@@ -1,232 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 安徽准确率
- * 安徽省需求整理—20190829——005版本
- * 按日统计 00:15 -00:00
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE34 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE34(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTime();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    String eType = electricField.getElectricFieldTypeEnum().name();
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    dataDq = this.dataFilter(fList,psList,eType,"dq",startTime,endTime);
-    if (dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC6(dataDq);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    dataCdq = this.dataFilter(uList,psList,eType,"cdq",startTime,endTime);
-    if (dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC6(dataCdq);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-
-  /**
-   *  数据过滤
-   * @param list 预测数据
-   * @param rList 实际功率
-   * @param electricFieldType 场站类型
-   * @param dataType 预测数据类型
-   * @param strartTime 开始时间
-   * @param endTime 结束时间
-   * @return 过滤后结果集
-   */
-  private List<Map<String, BigDecimal>> dataFilter(List list, List<PowerStationStatusData> rList, String electricFieldType, String dataType, long strartTime, long endTime) {
-    /**
-     * 光伏:
-     * 短期功率预测:
-     * 情况一:白天11:00—14:00不管发电功率多少都参与考核包含11:00和14:00整点时刻(此期间实际功率若为零,则实际功率按照0.01MW计算),
-     * 其余时间发电功率需要大于等于10MW时参与考核,小于10MW时不参与考核,不统计入考核点数(包括PMi为零的时候);
-     * 超短期功率预测:
-     * 和日前功率预测(短期功率预测)考核规则一样。超短期目前考核点位为第一个
-     * (建议设置可零活配置的点位)。
-     */
-
-    /**
-     * 风电:
-     * 短期功率预测:
-     * 情况一:发电功率需要大于等于10MW时参与考核,小于10MW时不参与考核,不统计考核点数(包括PMi为零的时候)。
-     * 超短期功率预测:
-     * 和日前功率预测(短期功率预测)考核规则一样。超短期目前考核点位为第一个
-     * (建议设置可零活配置的点位)
-     */
-
-    //思路:
-    // 1.无论超短期还是短期,风电和光伏的数据,首先都需要过滤掉同一时刻缺少实际值或者缺少预测值或者2个值同时缺少数据的时刻
-    // 2.当同一时刻,预测值和实际值都不缺少时候,再进行下一步
-    // 3.由于cdq和dq对于场站类型来说,计算过滤条件都是相同的,所以只需要区分场站类型即可。不需要再区分dq和cdq的数据类型
-    List<ForecastPowerShortTermHis> dqList = new ArrayList<>();
-    List<ForecastPowerUltraShortTermHis> cdqList = new ArrayList<>();
-    long moment15 = 900000L;
-    BigDecimal df = new BigDecimal("0.01");
-    BigDecimal compare = new BigDecimal("10");
-    List<Map<String, BigDecimal>> result = new ArrayList<>();
-    if (dataType.equals("dq")) {
-      dqList = list;
-    } else {
-      cdqList = list;
-    }
-    //只要有一个集合为空,那么准确率就无法计算
-    if (rList != null && rList.size() > 0 && list != null && list.size() > 0) {
-      for (long i = strartTime; i <= endTime; i = i + moment15) {
-        long stepTime = i;
-        //过滤出该时间的预测值
-        List ycFilter = null;
-        if (dataType.equals("dq")) {
-          ycFilter = dqList.stream().filter(t -> t.getForecastTime() == stepTime).collect(Collectors.toList());
-        } else {
-          ycFilter = cdqList.stream().filter(t -> t.getForecastTime() == stepTime).collect(Collectors.toList());
-        }
-
-        //过滤出该时间的实际功率值
-        List<PowerStationStatusData> rpFilter = null;
-        rpFilter = rList.stream().filter(t -> t.getTime().getTime() == stepTime).collect(Collectors.toList());
-        //过滤掉同一时刻预测和实际值有缺失的数据
-        if ((ycFilter != null && ycFilter.size() > 0) && (rpFilter != null && rpFilter.size() > 0)) {
-          //实际值
-          BigDecimal rpValue = rpFilter.get(0).getAbleValue();
-          //预测值
-          BigDecimal ycValue;
-          if (dataType.equals("dq")) {
-            ycValue = ((List<ForecastPowerShortTermHis>) ycFilter).get(0).getAbleValue();
-          } else {
-            ycValue = ((List<ForecastPowerUltraShortTermHis>) ycFilter).get(0).getAbleValue();
-          }
-          //区分光伏场站和风电场站
-          if (electricFieldType.equals("E1")) {
-            //光伏电站过滤条件
-            //计算出该天11:00和14:00点的时间戳
-            Calendar calendar = Calendar.getInstance();
-            calendar.setTimeInMillis(strartTime);
-            calendar.set(Calendar.HOUR_OF_DAY, 11);
-            calendar.set(Calendar.MINUTE, 0);
-            calendar.set(Calendar.SECOND, 0);
-            calendar.set(Calendar.MILLISECOND, 0);
-            long time11 = calendar.getTimeInMillis();
-            calendar.set(Calendar.HOUR_OF_DAY, 14);
-            long time14 = calendar.getTimeInMillis();
-            //如果时间是在11点和14点之间(包含11点和14点)
-
-            if (stepTime >= time11 && stepTime <= time14) {
-              //无论实际功率是否大于10MW 都计算
-              Map<String, BigDecimal> map = new HashMap<>();
-              map.put("yc", ycValue);
-              //如果实际功率为0就让实际功率=0.01MW
-              if (rpValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-
-                map.put("sj",df);
-              } else {
-                map.put("sj", rpValue);
-              }
-              result.add(map);
-            } else {
-              //不在11点和14点之间的实际功率只有大于等于10MW的才进行计算
-              if (rpValue.floatValue() >= compare.floatValue()) {
-                Map<String, BigDecimal> map = new HashMap<>();
-                map.put("yc", ycValue);
-                map.put("sj", rpValue);
-                result.add(map);
-              }
-            }
-
-          } else {
-            //风电电站过滤条件
-            //无论何时,只有实际功率>=10MW才会计算
-            if (rpValue.floatValue() >= compare.floatValue()) {
-              Map<String, BigDecimal> map = new HashMap<>();
-              map.put("yc", ycValue);
-              map.put("sj", rpValue);
-              result.add(map);
-            }
-          }
-
-        }
-
-      }
-    }
-
-    return result;
-  }
-
-
-}

+ 0 - 135
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE36.java

@@ -1,135 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 江西准确率
- * 华中区域“两个细则”(2019模拟运行版)
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE36 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE36(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-    long moment15 = 900000L;
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    String eType = electricField.getElectricFieldTypeEnum().name();
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String, BigDecimal>> dataDq = new ArrayList<>();
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        if (eType.equals("E1")) {
-          //光场站
-          accuarcyDq = CalculateMethod.calculateC2(dataDq, cap);
-        } else {
-          //风场站
-          accuarcyDq = CalculateMethod.calculateC1(dataDq, cap);
-        }
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String, BigDecimal>> dataCdq = new ArrayList<>();
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        if (eType.equals("E1")) {
-          //光场站
-          accuarcyCdq = CalculateMethod.calculateC2(dataCdq, cap);
-        } else {
-          //风场站
-          accuarcyCdq = CalculateMethod.calculateC1(dataCdq, cap);
-        }
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 124
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE37.java

@@ -1,124 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 山东准确率
- * 鲁监能市场【2019】25号 风
- * 鲁监能市场【2019】42号 光
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE37 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE37(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getRealValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC1(dataDq,cap);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getRealValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC1(dataCdq,cap);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 138
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE41.java

@@ -1,138 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 河南准确率
- * 河南风电场及光伏电站
- * 并网运行管理实施细则
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE41 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE41(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        PowerStationStatusData p = pFilter.get(0);
-        float openCapacity = p.getOpenCapacity().floatValue();
-        //过滤掉开机容量小于0的数据
-        if(openCapacity > IAccuracyPassRateCalculate.ZERO.floatValue()){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",p.getAbleValue());
-          map.put("cap",p.getOpenCapacity());
-          map.put("yc",fFilter.get(0).getAbleValue());
-          dataDq.add(map);
-        }
-
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC5(dataDq);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        PowerStationStatusData p = pFilter.get(0);
-        BigDecimal openCapacity = p.getOpenCapacity();
-        //过滤掉开机容量为0的数据
-        if(openCapacity.floatValue() != IAccuracyPassRateCalculate.ZERO.floatValue()){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",p.getAbleValue());
-          map.put("cap",p.getOpenCapacity());
-          map.put("yc",fFilter.get(0).getAbleValue());
-          dataCdq.add(map);
-        }
-
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC5(dataCdq);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 135
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE43.java

@@ -1,135 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 湖南准确率
- * 华中区域“两个细则”(2019模拟运行版)
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE43 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE43(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-    long moment15 = 900000L;
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    String eType = electricField.getElectricFieldTypeEnum().name();
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String, BigDecimal>> dataDq = new ArrayList<>();
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        if (eType.equals("E1")) {
-          //光场站
-          accuarcyDq = CalculateMethod.calculateC2(dataDq, cap);
-        } else {
-          //风场站
-          accuarcyDq = CalculateMethod.calculateC1(dataDq, cap);
-        }
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String, BigDecimal>> dataCdq = new ArrayList<>();
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        if (eType.equals("E1")) {
-          //光场站
-          accuarcyCdq = CalculateMethod.calculateC2(dataCdq, cap);
-        } else {
-          //风场站
-          accuarcyCdq = CalculateMethod.calculateC1(dataCdq, cap);
-        }
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 123
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE44.java

@@ -1,123 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 广东准确率
- * 南方监能市场〔2017〕 440 号
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE44 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE44(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC1(dataDq,cap);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC1(dataCdq,cap);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 123
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE45.java

@@ -1,123 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 广西准确率
- * 南方监能市场〔2017〕 440 号
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE45 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE45(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC1(dataDq,cap);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC1(dataCdq,cap);
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 135
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE51.java

@@ -1,135 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 四川准确率
- * 川能监市场【2017】28号
- * 按日统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE51 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE51(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-    long moment15 = 900000L;
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    String eType = electricField.getElectricFieldTypeEnum().name();
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String, BigDecimal>> dataDq = new ArrayList<>();
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        if (eType.equals("E1")) {
-          //光场站
-          accuarcyDq = CalculateMethod.calculateC2(dataDq, cap);
-        } else {
-          //风场站
-          accuarcyDq = CalculateMethod.calculateC1(dataDq, cap);
-        }
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String, BigDecimal>> dataCdq = new ArrayList<>();
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        if (eType.equals("E1")) {
-          //光场站
-          accuarcyCdq = CalculateMethod.calculateC2(dataCdq, cap);
-        } else {
-          //风场站
-          accuarcyCdq = CalculateMethod.calculateC1(dataCdq, cap);
-        }
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 155
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE52.java

@@ -1,155 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 贵州准确率
- * 南方监能市场〔2017〕 440 号
- * 按日统计 00:00 - 23:45
- *
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE52 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE52(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime = IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String, BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC1(dataDq, cap);
-        String shortAccuracyRateMinStr = this.sysParameterService.getSysParameter("SHORT_ACCURACY_RATE_MIN", null);
-
-        // 如果短期准确率阈值不为空
-        if (shortAccuracyRateMinStr!=null) {
-          BigDecimal shortAccuracyRateMin = new BigDecimal(shortAccuracyRateMinStr);
-          // 如果低于83,则准确率为83 + 0~1随机数 (张恩柱决定)
-          if (accuarcyDq.compareTo(shortAccuracyRateMin) == -1) {
-            float minF = 0f;
-            float maxF = 1f;
-            //生成随机数
-            BigDecimal sj = new BigDecimal(Math.random() * (maxF - minF) + minF).setScale(2, BigDecimal.ROUND_DOWN);
-            // 准确率 =  83 + 0~1随机数
-            accuarcyDq = shortAccuracyRateMin.add(sj);
-          }
-        }
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "16");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> uList = forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForCdq);
-    List<Map<String, BigDecimal>> dataCdq = new ArrayList<>();
-    for (long stepTime = startTime; stepTime <= endTime; stepTime = stepTime + moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> fFilter = uList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (fFilter != null && fFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        Map<String, BigDecimal> map = new HashMap<>();
-        map.put("sj", pFilter.get(0).getAbleValue());
-        map.put("yc", fFilter.get(0).getAbleValue());
-        dataCdq.add(map);
-      }
-    }
-    if (dataCdq != null && dataCdq.size() > 0) {
-      try {
-        accuarcyCdq = CalculateMethod.calculateC1(dataCdq, cap);
-
-        String ultraShortAccuracyRateMinStr = this.sysParameterService.getSysParameter("ULTRA_SHORT_ACCURACY_RATE_MIN", null);
-
-        // 如果短期准确率最低值不为空
-        if (ultraShortAccuracyRateMinStr!=null) {
-          BigDecimal ultraShortAccuracyRateMin = new BigDecimal(ultraShortAccuracyRateMinStr);
-          // 如果准确率低于阈值
-          if (accuarcyCdq.compareTo(ultraShortAccuracyRateMin) == -1) {
-            float minF = 0f;
-            float maxF = 1f;
-            //生成随机数
-            BigDecimal sj = new BigDecimal(Math.random() * (maxF - minF) + minF).setScale(2, BigDecimal.ROUND_DOWN);
-            // 准确率 =  87+随机数
-            accuarcyCdq = ultraShortAccuracyRateMin.add(sj);
-          }
-        }
-        accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString() + "%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    } else {
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 191
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE61.java

@@ -1,191 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import cn.hutool.core.date.DateUtil;
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-/**
- * 陕西省准确率
- * 西北监能市场
- * 【2018】66号文件
- * 按15分钟统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE61 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE61(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long moment15 = 900000L;
-
-    long endTime = queryTime[1]-moment15;
-
-    long dqStarTime = endTime - moment15;
-
-    long cdqStartTime = DateUtil.beginOfDay(new Date(endTime)).getTime();
-
-
-    BigDecimal capacity = electricField.getCapacity();
-    BigDecimal radio = new BigDecimal("0.03");
-    BigDecimal compare = IAccuracyPassRateCalculate.compareRadio(radio, capacity, 2);
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    // 获取短期计算准确率获取该天是提前几天预测的
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    ForecastPowerShortTermHis forecastPowerShortTermHis = this.forecastPowerShortTermHisRepository.findByForecastTimeAndForecastHowLongAgo(endTime, howLongAgoForDq);
-    List<PowerStationStatusData> pdList = this.powerStationStatusDataRepository.findByTimeBetween(new Date(dqStarTime), new Date(endTime));
-
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(dqStarTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-
-    for(long stepTime = dqStarTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = pdList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        PowerStationStatusData p = pFilter.get(0);
-        float openCapacity = p.getOpenCapacity().floatValue();
-        //过滤掉开机容量小于0的数据
-        if(openCapacity > IAccuracyPassRateCalculate.ZERO.floatValue()){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",p.getAbleValue());
-          map.put("cap",p.getOpenCapacity());
-          map.put("yc",fFilter.get(0).getAbleValue());
-          dataDq.add(map);
-        }
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        BigDecimal passRateDq = CalculateMethod.calculateB1(dataDq,compare);
-        accuracyPassRate.setShortTermPassRate(passRateDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期合格率错误");
-      }
-    }else{
-      accuracyPassRate.setShortTermPassRate("无可用数据计算");
-    }
-
-    if (pdList != null && pdList.size()>0 && forecastPowerShortTermHis != null) {
-
-      pdList.sort(Comparator.comparing(PowerStationStatusData::getTime).reversed());
-      PowerStationStatusData powerStationStatusData = pdList.get(0);
-
-      BigDecimal pAbleValue = powerStationStatusData.getAbleValue();
-      if(pAbleValue.floatValue()>=IAccuracyPassRateCalculate.ZERO.floatValue()){
-        BigDecimal fAbleValue = forecastPowerShortTermHis.getAbleValue();
-        String accuracy;
-        String passRate;
-        //当预测功率为0时,实际功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-        if (fAbleValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-          if (pAbleValue.floatValue() <= compare.floatValue()) {
-            accuracyPassRate.setShortTermAccuracy("不予考核");
-          } else {
-            accuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          }
-          //当实际功率为0时,预测功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-        } else if (pAbleValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-          if (fAbleValue.floatValue() <= compare.floatValue()) {
-            accuracyPassRate.setShortTermAccuracy("不予考核");
-          } else {
-            accuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          }
-        } else {
-          try {
-            accuracy = CalculateMethod.calculateC3(fAbleValue,pAbleValue).toString()+"%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          } catch (Exception e) {
-            e.printStackTrace();
-            log.error("计算短期准确率错误");
-          }
-        }
-      }else{
-        accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-      }
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*****************************************************/
-
-    /*************************************************计算超短期准确率-start*****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "8");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> ultraList = this.forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(cdqStartTime, endTime, howLongAgoForCdq);
-    List<PowerStationStatusData> pList = this.powerStationStatusDataRepository.findByTimeBetween(new Date(cdqStartTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    List<Map<String, BigDecimal>> data = new ArrayList();
-
-    for (long stepTime = cdqStartTime; stepTime <= endTime; stepTime += moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> ultraFilter = ultraList.stream().filter(u -> u.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter((p) -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (ultraFilter != null && ultraFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        BigDecimal pAbleValue = pFilter.get(0).getAbleValue();
-        BigDecimal uAbleValue = ultraFilter.get(0).getAbleValue();
-        //当实际和预测值均在装机容量3%以内时,该点不计入误差值计算
-        if (pAbleValue.floatValue() > compare.floatValue() || uAbleValue.floatValue() > compare.floatValue()) {
-          Map<String, BigDecimal> map = new HashMap();
-          map.put("sj", pFilter.get(0).getAbleValue());
-          map.put("yc", ultraFilter.get(0).getAbleValue());
-          map.put("cap", ultraFilter.get(0).getCapacity());
-          data.add(map);
-        }
-      }
-    }
-
-    if (data != null && data.size() > 0) {
-      try {
-        String accuracyCdq = CalculateMethod.calculateC4(data).toString()+"%";
-        String passRateCdq = CalculateMethod.calculateB1(data,compare).toString()+"%";
-        accuracyPassRate.setUltraShortTermAccuracy(accuracyCdq);
-        accuracyPassRate.setUltraShortTermPassRate(passRateCdq);
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率合格率错误");
-      }
-
-    } else {
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-      accuracyPassRate.setUltraShortTermPassRate("无可用数据计算");
-    }
-    /*************************************************计算超短期准确率-end*****************************************************/
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 314
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE62.java

@@ -1,314 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import cn.hutool.core.date.DateUtil;
-import com.jiayue.ipfcst.common.core.integration.constant.StatusConstant;
-import com.jiayue.ipfcst.common.core.integration.correct.dq.IForePowerShortTermCorrect;
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.entity.integration.InForecastPowerShortTermHis;
-import com.jiayue.ipfcst.common.data.repository.*;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import com.jiayue.ipfcst.fileupload.integration.service.InForecastPowerShortTermHisService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 甘肃省准确率
- * 西北监能市场
- * 【2018】66号文件
- * 按15分钟统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE62 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-  private final AccuracyPassRateDayRepository accuracyPassRateDayRepository;
-  private final InForecastPowerShortTermHisService inForecastPowerShortTermHisService;
-  private final IForePowerShortTermCorrect inForePowerShortTermCorrect;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE62(PowerStationStatusDataRepository powerStationStatusDataRepository,
-                                             ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository,
-                                             ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository,
-                                             SysParameterService sysParameterService,
-                                             AccuracyPassRateRepository accuracyPassRateRepository,
-                                             AccuracyPassRateDayRepository accuracyPassRateDayRepository,
-                                             InForecastPowerShortTermHisService inForecastPowerShortTermHisService,
-                                             IForePowerShortTermCorrect inForePowerShortTermCorrect) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-    this.accuracyPassRateDayRepository = accuracyPassRateDayRepository;
-    this.inForecastPowerShortTermHisService = inForecastPowerShortTermHisService;
-    this.inForePowerShortTermCorrect =  inForePowerShortTermCorrect;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long moment15 = 900000L;
-    // 获取结束时间(当前的15分钟节点的前一个节点,如当前为11:16,则结束时间为11:00)
-    long endTime = queryTime[1]-moment15;
-    // 设定短期结束时间(当前的15分钟节点的前两个节点,如当前为11:16,则结束时间为10:45)
-    long dqStarTime = endTime - moment15;
-    // 设定超短期结束时间(当日0时0分0秒)
-    long cdqStartTime = DateUtil.beginOfDay(new Date(endTime)).getTime();
-    // 获取容量
-    BigDecimal capacity = electricField.getCapacity();
-    // 设定系数
-    BigDecimal radio = new BigDecimal("0.03");
-    // 根据系数、容量、保留几位小数,计算对比系数
-    BigDecimal compare = IAccuracyPassRateCalculate.compareRadio(radio, capacity, 2);
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-
-    AccuracyPassRateDay accuracyPassRateDay = new AccuracyPassRateDay();
-    accuracyPassRateDay.setTime(endTime);
-
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    // 获取短期计算准确率获取该天是提前几天预测的
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    // 根据提前多久、结束时间,查询短期预测功率(当前时间点最近的前一个15分钟节点的预测功率)
-    ForecastPowerShortTermHis forecastPowerShortTermHis = this.forecastPowerShortTermHisRepository.findByForecastTimeAndForecastHowLongAgo(endTime, howLongAgoForDq);
-    // 按时间段查询场站功率数据
-    List<PowerStationStatusData> pssdList = this.powerStationStatusDataRepository.findByTimeBetween(new Date(dqStarTime), new Date(endTime));
-    // 如果站场功率不为空且短期预测功率不为空
-    if (pssdList != null && pssdList.size()>0 && forecastPowerShortTermHis != null) {
-      // 按照时间倒序
-      pssdList.sort(Comparator.comparing(PowerStationStatusData::getTime).reversed());
-      // 获取时间最近的一条
-      PowerStationStatusData powerStationStatusData = pssdList.get(0);
-      // 获取可用功率
-      BigDecimal availableValue = powerStationStatusData.getAbleValue();
-      // 如果可用功率大于0
-      if(availableValue.floatValue()>=IAccuracyPassRateCalculate.ZERO.floatValue()){
-        // 预测功率
-        BigDecimal forecastAvailableValue = forecastPowerShortTermHis.getAbleValue();
-        String accuracy;
-        //当预测功率为0时,实际功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-        if (forecastAvailableValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-          // 如果可用功率<=对比系数,不予考核,否则短期准确率为0
-          if (availableValue.floatValue() <= compare.floatValue()) {
-            accuracyPassRate.setShortTermAccuracy("不予考核");
-          } else {
-            accuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          }
-        //当实际功率为0时,预测功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-        } else if (availableValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-          // 如果预测功率<=对比系数,不予考核,否则短期准确率为0
-          if (forecastAvailableValue.floatValue() <= compare.floatValue()) {
-            accuracyPassRate.setShortTermAccuracy("不予考核");
-          } else {
-            accuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-            accuracyPassRateDay.setShortTermAccuracy(accuracy);
-          }
-        } else {
-          // 计算准确率
-          try {
-            accuracy = CalculateMethod.calculateC3(forecastAvailableValue,availableValue).toString()+"%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          } catch (Exception e) {
-            e.printStackTrace();
-            log.error("计算短期准确率错误");
-          }
-
-          }
-      // 可用功率小于0
-      }else{
-        accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-        accuracyPassRateDay.setShortTermAccuracy("无可用数据计算");
-      }
-    // 站场功率为空或短期预测功率为空
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-      accuracyPassRateDay.setShortTermAccuracy("无可用数据计算");
-    }
-
-    /**************************************************计算日准确率均方根误差-start*****************************************************/
-    // 按时间段查询场站功率数据
-    List<PowerStationStatusData> pssdListForRootMeanSquare = this.powerStationStatusDataRepository.findByTimeBetween(new Date(cdqStartTime), new Date(endTime));
-    // 短期数据
-    List<Map<String, BigDecimal>> shortData = new ArrayList();
-    // 短期功率列表
-    List<ForecastPowerShortTermHis> forecastShortList = this.forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(cdqStartTime, endTime, howLongAgoForDq);
-    // 从0时0分0秒开始,每隔15分钟,一直循环到当前时间,过滤出每15分钟的场站信息与预测功率,并组装数据
-    for (long stepTime = cdqStartTime; stepTime <= endTime; stepTime += moment15) {
-      long finalTime = stepTime;
-      // 获取该时间点短期预测功率
-      List<ForecastPowerShortTermHis> shortFilter = forecastShortList.stream().filter(u -> u.getForecastTime() == finalTime).collect(Collectors.toList());
-      // 获取该时间点场站功率
-      List<PowerStationStatusData> pFilter = pssdListForRootMeanSquare.stream().filter((p) -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-
-      Map<String, BigDecimal> shortMapForRootMeanSquare = new HashMap();
-      // 如果短期预测功率不为空且站场功率不为空
-      if (shortFilter != null && shortFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        shortMapForRootMeanSquare = new HashMap();
-        // 实际功率
-        shortMapForRootMeanSquare.put("sj", pFilter.get(0).getAbleValue());
-        // 预测功率
-        shortMapForRootMeanSquare.put("yc", shortFilter.get(0).getAbleValue());
-        // 开机容量
-        shortMapForRootMeanSquare.put("openCapacity", pFilter.get(0).getOpenCapacity());
-        shortMapForRootMeanSquare.put("time", new BigDecimal(finalTime));
-        shortData.add(shortMapForRootMeanSquare);
-      }
-    }
-    try {
-      String rootMeanSquareValue = "";
-      rootMeanSquareValue = CalculateMethod.calculateC9(shortData).toString()+"%";
-      accuracyPassRateDay.setShortTermAccuracy(rootMeanSquareValue);
-    } catch (Exception e) {
-      e.printStackTrace();
-      log.error("计算短期准确率均方根误差错误");
-    }
-    /*************************************************计算日准确率均方根误差-end*****************************************************/
-
-    /*************************************************计算短期准确率-end*****************************************************/
-
-    /*************************************************计算超短期准确率-start*****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "8");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    // 获取超短期预测功率
-    List<ForecastPowerUltraShortTermHis> ultraList = this.forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(cdqStartTime, endTime, howLongAgoForCdq);
-    //获取场站功率(从当天0时0分0秒到当前时间的15分钟)
-    List<PowerStationStatusData> psList = this.powerStationStatusDataRepository.findByTimeBetween(new Date(cdqStartTime), new Date(endTime));
-    List<Map<String, BigDecimal>> data = new ArrayList();
-    List<Map<String, BigDecimal>> ultraData = new ArrayList();
-
-    // 从0时0分0秒开始,每隔15分钟,一直循环到当前时间
-    for (long stepTime = cdqStartTime; stepTime <= endTime; stepTime += moment15) {
-      long finalTime = stepTime;
-      // 获取该时间点超短期预测功率
-      List<ForecastPowerUltraShortTermHis> ultraFilter = ultraList.stream().filter(u -> u.getForecastTime() == finalTime).collect(Collectors.toList());
-      // 获取该时间点场站功率
-      List<PowerStationStatusData> pFilter = psList.stream().filter((p) -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-     // 如果超短期预测功率不为空且站场功率不为空
-      if (ultraFilter != null && ultraFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        BigDecimal pAbleValue = pFilter.get(0).getAbleValue();
-        BigDecimal uAbleValue = ultraFilter.get(0).getAbleValue();
-        // 组装均方根误差数据
-        Map<String, BigDecimal> ultraMapForRootMeanSquare = new HashMap();
-        // 实际功率
-        ultraMapForRootMeanSquare.put("sj", pFilter.get(0).getAbleValue());
-        // 预测功率
-        ultraMapForRootMeanSquare.put("yc", ultraFilter.get(0).getAbleValue());
-        // 开机容量
-        ultraMapForRootMeanSquare.put("openCapacity", pFilter.get(0).getOpenCapacity());
-        // 将数据放入均方根误差
-        ultraData.add(ultraMapForRootMeanSquare);
-        //当实际和预测值均在装机容量3%以内时,该点不计入误差值计算
-        if (pAbleValue.floatValue() > compare.floatValue() || uAbleValue.floatValue() > compare.floatValue()) {
-          Map<String, BigDecimal> map = new HashMap();
-          // 实际功率
-          map.put("sj", pFilter.get(0).getAbleValue());
-          // 预测功率
-          map.put("yc", ultraFilter.get(0).getAbleValue());
-          // 开机容量
-          map.put("openCapacity", pFilter.get(0).getOpenCapacity());
-          data.add(map);
-        }
-      }
-    }
-
-    if (data != null && data.size() > 0) {
-      try {
-        String accuracyCdq = CalculateMethod.calculateC4(data).toString()+"%";
-        accuracyPassRate.setUltraShortTermAccuracy(accuracyCdq);
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-    } else {
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期日准确率均方根误差-start*****************************************************/
-    // 如果超短期数据不为空,计算超短期日均方根准确率
-    if (ultraData != null && ultraData.size() > 0) {
-      try {
-        String rootMeanSquareValue = "";
-        rootMeanSquareValue = CalculateMethod.calculateC9(ultraData).toString() + "%";
-        accuracyPassRateDay.setUltraShortTermAccuracy(rootMeanSquareValue);
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率均方根误差错误");
-      }
-    } else {
-      accuracyPassRateDay.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期日准确率均方根误差-end*****************************************************/
-
-    /*************************************************计算超短期准确率-end*****************************************************/
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-    this.accuracyPassRateDayRepository.save(accuracyPassRateDay);
-
-
-    /************** ***********************************计算一体化短期准确率-start****************************************************/
-    //一体化短期计算
-    if (inForePowerShortTermCorrect.beanType().equals(StatusConstant.BEAN_TYPE_REAL)) {
-      List<InForecastPowerShortTermHis> ifList = inForecastPowerShortTermHisService.findByForecastTimeAndForecastHowLongAgo(endTime, howLongAgoForDq);
-      AccuracyPassRate iaccuracyPassRate = new AccuracyPassRate();
-      iaccuracyPassRate.setTime(endTime);
-      iaccuracyPassRate.setBackupA(StatusConstant.INTEGRATION_SIGN);
-      if (pssdList != null && pssdList.size()>0 && ifList != null && ifList.size()>0) {
-
-        pssdList.sort(Comparator.comparing(PowerStationStatusData::getTime).reversed());
-        PowerStationStatusData powerStationStatusData = pssdList.get(0);
-        BigDecimal pAbleValue = powerStationStatusData.getAbleValue();
-        if(pAbleValue.floatValue()>=IAccuracyPassRateCalculate.ZERO.floatValue()){
-          BigDecimal fAbleValue = ifList.get(0).getFpValue();
-          String iaccuracy;
-          //当预测功率为0时,实际功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-          if (fAbleValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-            if (pAbleValue.floatValue() <= compare.floatValue()) {
-              iaccuracyPassRate.setShortTermAccuracy("不予考核");
-            } else {
-              iaccuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-              iaccuracyPassRate.setShortTermAccuracy(iaccuracy);
-            }
-            //当实际功率为0时,预测功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-          } else if (pAbleValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-            if (fAbleValue.floatValue() <= compare.floatValue()) {
-              iaccuracyPassRate.setShortTermAccuracy("不予考核");
-            } else {
-              iaccuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-              iaccuracyPassRate.setShortTermAccuracy(iaccuracy);
-            }
-          } else {
-            try {
-              iaccuracy = CalculateMethod.calculateC3(fAbleValue,pAbleValue).toString()+"%";
-              iaccuracyPassRate.setShortTermAccuracy(iaccuracy);
-            } catch (Exception e) {
-              e.printStackTrace();
-              log.error("计算短期准确率错误");
-            }
-          }
-        }else{
-          iaccuracyPassRate.setShortTermAccuracy("无可用数据计算");
-        }
-      } else {
-        iaccuracyPassRate.setShortTermAccuracy("无可用数据计算");
-      }
-      this.accuracyPassRateRepository.save(iaccuracyPassRate);
-    }
-    /************** ***********************************计算一体化短期准确率-end****************************************************/
-  }
-
-}

+ 0 - 152
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE63.java

@@ -1,152 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import cn.hutool.core.date.DateUtil;
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 青海省准确率
- * 西北监能市场
- * 【2018】66号文件
- * 按15分钟统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE63 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE63(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long moment15 = 900000L;
-
-    long endTime = queryTime[1]-moment15;
-
-    long dqStarTime = endTime - moment15;
-
-    long cdqStartTime = DateUtil.beginOfDay(new Date(endTime)).getTime();
-
-    BigDecimal capacity = electricField.getCapacity();
-    BigDecimal radio = new BigDecimal("0.03");
-    BigDecimal compare = IAccuracyPassRateCalculate.compareRadio(radio, capacity, 2);
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    // 获取短期计算准确率获取该天是提前几天预测的
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    ForecastPowerShortTermHis forecastPowerShortTermHis = this.forecastPowerShortTermHisRepository.findByForecastTimeAndForecastHowLongAgo(endTime, howLongAgoForDq);
-    List<PowerStationStatusData> pdList = this.powerStationStatusDataRepository.findByTimeBetween(new Date(dqStarTime), new Date(endTime));
-
-    if (pdList != null && pdList.size()>0 && forecastPowerShortTermHis != null) {
-
-      pdList.sort(Comparator.comparing(PowerStationStatusData::getTime).reversed());
-      PowerStationStatusData powerStationStatusData = pdList.get(0);
-      BigDecimal pAbleValue = powerStationStatusData.getAbleValue();
-      if(pAbleValue.floatValue()>=IAccuracyPassRateCalculate.ZERO.floatValue()){
-        BigDecimal fAbleValue = forecastPowerShortTermHis.getAbleValue();
-        String accuracy;
-        //当预测功率为0时,实际功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-        if (fAbleValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-          if (pAbleValue.floatValue() <= compare.floatValue()) {
-            accuracyPassRate.setShortTermAccuracy("不予考核");
-          } else {
-            accuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          }
-          //当实际功率为0时,预测功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-        } else if (pAbleValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-          if (fAbleValue.floatValue() <= compare.floatValue()) {
-            accuracyPassRate.setShortTermAccuracy("不予考核");
-          } else {
-            accuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          }
-        } else {
-          try {
-            accuracy = CalculateMethod.calculateC3(fAbleValue,pAbleValue).toString()+"%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          } catch (Exception e) {
-            e.printStackTrace();
-            log.error("计算短期准确率错误");
-          }
-        }
-      }else{
-        accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-      }
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*****************************************************/
-
-    /*************************************************计算超短期准确率-start*****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "8");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> ultraList = this.forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(cdqStartTime, endTime, howLongAgoForCdq);
-    List<PowerStationStatusData> psList = this.powerStationStatusDataRepository.findByTimeBetween(new Date(cdqStartTime), new Date(endTime));
-    List<Map<String, BigDecimal>> data = new ArrayList();
-
-    for (long stepTime = cdqStartTime; stepTime <= endTime; stepTime += moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> ultraFilter = ultraList.stream().filter(u -> u.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter((p) -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (ultraFilter != null && ultraFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        BigDecimal pAbleValue = pFilter.get(0).getAbleValue();
-        BigDecimal uAbleValue = ultraFilter.get(0).getAbleValue();
-        //当实际和预测值均在装机容量3%以内时,该点不计入误差值计算
-        if (pAbleValue.floatValue() > compare.floatValue() || uAbleValue.floatValue() > compare.floatValue()) {
-          Map<String, BigDecimal> map = new HashMap();
-          map.put("sj", pFilter.get(0).getAbleValue());
-          map.put("yc", ultraFilter.get(0).getAbleValue());
-          data.add(map);
-        }
-      }
-    }
-
-    if (data != null && data.size() > 0) {
-      try {
-        String accuracyCdq = CalculateMethod.calculateC4(data).toString()+"%";
-        accuracyPassRate.setUltraShortTermAccuracy(accuracyCdq);
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /*************************************************计算超短期准确率-end*****************************************************/
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 166
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE64.java

@@ -1,166 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 宁夏准确率
- * 西北监能市场
- * 【2018】66号文件
- * 按15分钟统计 00:00 - 23:45
- * @author yh
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE64 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE64(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long moment15 = 900000L;
-
-    long endTime = queryTime[1]-moment15;
-
-    long dqStarTime = endTime - moment15;
-
-    long cdqStartTime = DateUtil.beginOfDay(new Date(endTime)).getTime();
-
-    BigDecimal capacity = electricField.getCapacity();
-    BigDecimal radio = new BigDecimal("0.03");
-    BigDecimal compare = IAccuracyPassRateCalculate.compareRadio(radio, capacity, 2);
-
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    // 获取短期计算准确率获取该天是提前几天预测的
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    ForecastPowerShortTermHis forecastPowerShortTermHis = this.forecastPowerShortTermHisRepository.findByForecastTimeAndForecastHowLongAgo(endTime, howLongAgoForDq);
-    List<PowerStationStatusData> pdList = this.powerStationStatusDataRepository.findByTimeBetween(new Date(dqStarTime), new Date(endTime));
-
-    DateTime dateTime = new DateTime(endTime);
-    String strDate = dateTime.toString();
-    String dq = forecastPowerShortTermHis == null?"null;":forecastPowerShortTermHis.getAbleValue().toString()+";";
-    String rp = pdList != null && pdList.size()>0?pdList.get(0).getAbleValue().toString()+";":"null;";
-
-    log.info("计算"+strDate +"准确率:===> 实际功率数据为:"+rp);
-    log.info("计算"+strDate +"准确率:===> 短期数据为:"+dq);
-
-    if (pdList != null && pdList.size()>0 && forecastPowerShortTermHis != null) {
-
-      pdList.sort(Comparator.comparing(PowerStationStatusData::getTime).reversed());
-      PowerStationStatusData powerStationStatusData = pdList.get(0);
-      BigDecimal pAbleValue = powerStationStatusData.getAbleValue();
-
-      if(pAbleValue.floatValue()>=IAccuracyPassRateCalculate.ZERO.floatValue()){
-        BigDecimal fAbleValue = forecastPowerShortTermHis.getAbleValue();
-        String accuracy;
-        //当预测功率为0时,实际功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-        if (fAbleValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-          if (pAbleValue.floatValue() <= compare.floatValue()) {
-            accuracyPassRate.setShortTermAccuracy("不予考核");
-          } else {
-            accuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          }
-          //当实际功率为0时,预测功率在装机容量3%内不予考核,否者误差值为100%,也就是准确率为0
-        } else if (pAbleValue.floatValue() == IAccuracyPassRateCalculate.ZERO.floatValue()) {
-          if (fAbleValue.floatValue() <= compare.floatValue()) {
-            accuracyPassRate.setShortTermAccuracy("不予考核");
-          } else {
-            accuracy = IAccuracyPassRateCalculate.ZERO.floatValue() + "%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          }
-        } else {
-          try {
-            accuracy = CalculateMethod.calculateC3(fAbleValue,pAbleValue).toString()+"%";
-            accuracyPassRate.setShortTermAccuracy(accuracy);
-          } catch (Exception e) {
-            e.printStackTrace();
-            log.error("计算短期准确率错误");
-          }
-        }
-      }else{
-        accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-      }
-    } else {
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*****************************************************/
-
-    /*************************************************计算超短期准确率-start*****************************************************/
-    // 获取超短期计算准确率获取第几个点
-    String sysParameterCdq = this.sysParameterService.getSysParameter("ACCURACY_CDQ_HOWLONGAGO", "8");
-    int howLongAgoForCdq = Integer.parseInt(sysParameterCdq);
-    List<ForecastPowerUltraShortTermHis> ultraList = this.forecastPowerUltraShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(cdqStartTime, endTime, howLongAgoForCdq);
-    List<PowerStationStatusData> psList = this.powerStationStatusDataRepository.findByTimeBetween(new Date(cdqStartTime), new Date(endTime));
-    List<Map<String, BigDecimal>> data = new ArrayList();
-
-    for (long stepTime = cdqStartTime; stepTime <= endTime; stepTime += moment15) {
-      long finalTime = stepTime;
-      List<ForecastPowerUltraShortTermHis> ultraFilter = ultraList.stream().filter(u -> u.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter((p) -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if (ultraFilter != null && ultraFilter.size() > 0 && pFilter != null && pFilter.size() > 0) {
-        BigDecimal pAbleValue = pFilter.get(0).getAbleValue();
-        BigDecimal uAbleValue = ultraFilter.get(0).getAbleValue();
-        //当实际和预测值均在装机容量3%以内时,该点不计入误差值计算
-        if (pAbleValue.floatValue() > compare.floatValue() || uAbleValue.floatValue() > compare.floatValue()) {
-          Map<String, BigDecimal> map = new HashMap();
-          map.put("sj", pFilter.get(0).getAbleValue());
-          map.put("yc", ultraFilter.get(0).getAbleValue());
-          data.add(map);
-        }
-      }
-    }
-    String cdq = data != null && data.size() > 0 ? String.valueOf(data.size()):"null";
-
-    log.info("计算"+strDate +"准确率:===> 超短期数据为:"+cdq+"条");
-
-    if (data != null && data.size() > 0) {
-      try {
-        String accuracyCdq = CalculateMethod.calculateC4(data).toString()+"%";
-        accuracyPassRate.setUltraShortTermAccuracy(accuracyCdq);
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算超短期准确率错误");
-      }
-
-    } else {
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /*************************************************计算超短期准确率-end*****************************************************/
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}

+ 0 - 135
ipfcst/ipfcst-console/src/main/java/com/jiayue/ipfcst/calculate/service/AccuarcyPassRateCalculateServiceE99.java

@@ -1,135 +0,0 @@
-package com.jiayue.ipfcst.calculate.service;
-
-import com.jiayue.ipfcst.common.data.entity.*;
-import com.jiayue.ipfcst.common.data.repository.AccuracyPassRateRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.ForecastPowerUltraShortTermHisRepository;
-import com.jiayue.ipfcst.common.data.repository.PowerStationStatusDataRepository;
-import com.jiayue.ipfcst.console.service.SysParameterService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 华北直调准确率
- * 20210610  张恩柱:和冀北一样的算法
- * @author tl
- * @version 2.0
- * @since 2020/7/17 9:30
- */
-@Service
-@Slf4j
-public class AccuarcyPassRateCalculateServiceE99 implements IAccuracyPassRateCalculate {
-  private final PowerStationStatusDataRepository powerStationStatusDataRepository;
-  private final ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository;
-  private final ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository;
-  private final SysParameterService sysParameterService;
-  private final AccuracyPassRateRepository accuracyPassRateRepository;
-
-  @Autowired
-  public AccuarcyPassRateCalculateServiceE99(PowerStationStatusDataRepository powerStationStatusDataRepository, ForecastPowerUltraShortTermHisRepository forecastPowerUltraShortTermHisRepository, ForecastPowerShortTermHisRepository forecastPowerShortTermHisRepository, SysParameterService sysParameterService, AccuracyPassRateRepository accuracyPassRateRepository) {
-    this.powerStationStatusDataRepository = powerStationStatusDataRepository;
-    this.forecastPowerUltraShortTermHisRepository = forecastPowerUltraShortTermHisRepository;
-    this.forecastPowerShortTermHisRepository = forecastPowerShortTermHisRepository;
-    this.sysParameterService = sysParameterService;
-    this.accuracyPassRateRepository = accuracyPassRateRepository;
-  }
-
-  @Override
-  public void generateData(ElectricField electricField) {
-
-    long[] queryTime =  IAccuracyPassRateCalculate.getQueryTimeSh();
-    long startTime = queryTime[0];
-    long endTime = queryTime[1];
-
-    BigDecimal cap = electricField.getCapacity();
-    AccuracyPassRate accuracyPassRate = new AccuracyPassRate();
-    accuracyPassRate.setTime(endTime);
-    BigDecimal accuarcyDq;
-    BigDecimal accuarcyCdq;
-    List<PowerStationStatusData> pList = powerStationStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
-    List<PowerStationStatusData> psList = IAccuracyPassRateCalculate.filterData(pList);
-    psList.sort(Comparator.comparing(PowerStationStatusData::getOpenCapacity).reversed());
-    //获取时段内最大开机容量
-    if(psList.size()>0){
-      cap = psList.get(0).getOpenCapacity();
-    }
-    /************** ***********************************计算短期准确率-start*****************************************************/
-    String sysParameter = this.sysParameterService.getSysParameter("ACCURACY_DQ_HOWLONGAGO", "1");
-    int howLongAgoForDq = Integer.parseInt(sysParameter);
-    List<ForecastPowerShortTermHis> fList = forecastPowerShortTermHisRepository.findByForecastTimeBetweenAndForecastHowLongAgo(startTime, endTime, howLongAgoForDq);
-    List<Map<String,BigDecimal>> dataDq = new ArrayList<>();
-    long moment15 = 900000L;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<ForecastPowerShortTermHis> fFilter = fList.stream().filter(f -> f.getForecastTime() == finalTime).collect(Collectors.toList());
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(fFilter!=null && fFilter.size()>0 && pFilter !=null && pFilter.size()>0){
-        Map<String,BigDecimal> map = new HashMap<>();
-        map.put("sj",pFilter.get(0).getAbleValue());
-        map.put("yc",fFilter.get(0).getAbleValue());
-        dataDq.add(map);
-      }
-    }
-    if (dataDq != null && dataDq.size() > 0) {
-      try {
-        accuarcyDq = CalculateMethod.calculateC7(dataDq,cap);
-        accuracyPassRate.setShortTermAccuracy(accuarcyDq.toString()+"%");
-      } catch (Exception e) {
-        e.printStackTrace();
-        log.error("计算短期准确率错误");
-      }
-
-    }else{
-      accuracyPassRate.setShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算短期准确率-end*******************************************************/
-
-    /************** ***********************************计算超短期准确率-start****************************************************/
-    int n =0;
-    BigDecimal single;
-    BigDecimal count = IAccuracyPassRateCalculate.ZERO;
-    for(long stepTime = startTime;stepTime<=endTime;stepTime=stepTime+moment15){
-      long finalTime = stepTime;
-      List<Map<String,BigDecimal>> dataCdq = new ArrayList<>();
-      List<ForecastPowerUltraShortTermHis> ultraList = forecastPowerUltraShortTermHisRepository.findByForecastTime(finalTime);
-      List<PowerStationStatusData> pFilter = psList.stream().filter(p -> p.getTime().getTime() == finalTime).collect(Collectors.toList());
-      if(ultraList!=null && ultraList.size()>0 && pFilter !=null && pFilter.size()>0){
-        for(ForecastPowerUltraShortTermHis f : ultraList){
-          Map<String,BigDecimal> map = new HashMap<>();
-          map.put("sj",pFilter.get(0).getAbleValue());
-          map.put("yc",f.getAbleValue());
-          dataCdq.add(map);
-        }
-      }
-
-      if (dataCdq != null && dataCdq.size() > 0) {
-        try {
-          single = CalculateMethod.calculateC7(dataCdq,cap);
-          count = count.add(single);
-          n++;
-        } catch (Exception e) {
-          e.printStackTrace();
-          log.error("计算超短期单点准确率错误");
-        }
-      }
-    }
-
-    if(n>0){
-      BigDecimal nBig  = new BigDecimal(String.valueOf(n));
-      accuarcyCdq = count.divide(nBig,2,BigDecimal.ROUND_HALF_UP);
-      accuracyPassRate.setUltraShortTermAccuracy(accuarcyCdq.toString()+"%");
-    }else{
-      accuracyPassRate.setUltraShortTermAccuracy("无可用数据计算");
-    }
-    /************** ***********************************计算超短期准确率-end******************************************************/
-
-
-    this.accuracyPassRateRepository.save(accuracyPassRate);
-  }
-
-}