|
@@ -2,10 +2,12 @@ package com.cpp.web.service.accuracy.impl;
|
|
|
|
|
|
import com.cpp.common.utils.spring.SpringUtils;
|
|
import com.cpp.common.utils.spring.SpringUtils;
|
|
import com.cpp.web.domain.accuracy.AccuracyPassRate;
|
|
import com.cpp.web.domain.accuracy.AccuracyPassRate;
|
|
|
|
+import com.cpp.web.domain.accuracy.ShortTermSinglePointDeviation;
|
|
import com.cpp.web.domain.enums.DataSourcesEnum;
|
|
import com.cpp.web.domain.enums.DataSourcesEnum;
|
|
import com.cpp.web.domain.enums.ForecastTypeEnum;
|
|
import com.cpp.web.domain.enums.ForecastTypeEnum;
|
|
import com.cpp.web.domain.station.*;
|
|
import com.cpp.web.domain.station.*;
|
|
import com.cpp.web.service.accuracy.CalculateInterface;
|
|
import com.cpp.web.service.accuracy.CalculateInterface;
|
|
|
|
+import com.cpp.web.service.accuracy.ShortTermSinglePointDeviationService;
|
|
import com.cpp.web.service.station.ForecastPowerShortTermRegulationService;
|
|
import com.cpp.web.service.station.ForecastPowerShortTermRegulationService;
|
|
import com.syjy.calculate.entity.CalculateRequest;
|
|
import com.syjy.calculate.entity.CalculateRequest;
|
|
import com.syjy.calculate.entity.CalculateResult;
|
|
import com.syjy.calculate.entity.CalculateResult;
|
|
@@ -27,6 +29,8 @@ public class CalculateForecastPowerShortTermRegulationImpl implements CalculateI
|
|
|
|
|
|
private final ForecastPowerShortTermRegulationService forecastPowerShortTermRegulationService;
|
|
private final ForecastPowerShortTermRegulationService forecastPowerShortTermRegulationService;
|
|
|
|
|
|
|
|
+ private final ShortTermSinglePointDeviationService shortTermSinglePointDeviationService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<AccuracyPassRate> calc(Date startTime,Date endTime,List<PowerStationStatusData> powerStationStatusDataList, List<ElectricField> electricFieldList, List<String> formulaTypes, String province){
|
|
public List<AccuracyPassRate> calc(Date startTime,Date endTime,List<PowerStationStatusData> powerStationStatusDataList, List<ElectricField> electricFieldList, List<String> formulaTypes, String province){
|
|
|
|
|
|
@@ -121,6 +125,7 @@ public class CalculateForecastPowerShortTermRegulationImpl implements CalculateI
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ List<ShortTermSinglePointDeviation> shortTermSinglePointDeviationList = new ArrayList<>();
|
|
if (formulaTypes.contains("POINT_SHORT_ACCURACY")) {//单点偏差计算
|
|
if (formulaTypes.contains("POINT_SHORT_ACCURACY")) {//单点偏差计算
|
|
List<BigDecimal> values = new ArrayList<>();
|
|
List<BigDecimal> values = new ArrayList<>();
|
|
for (long stepTime = startTime.getTime(); stepTime <= endTime.getTime(); stepTime += 900000L) {
|
|
for (long stepTime = startTime.getTime(); stepTime <= endTime.getTime(); stepTime += 900000L) {
|
|
@@ -132,12 +137,19 @@ public class CalculateForecastPowerShortTermRegulationImpl implements CalculateI
|
|
ForecastPowerShortTermRegulation forecastPowerShortTermRegulation = dateForecastListMap.get(finalTime).get(0);
|
|
ForecastPowerShortTermRegulation forecastPowerShortTermRegulation = dateForecastListMap.get(finalTime).get(0);
|
|
BigDecimal subtractAbs = powerStationStatusData.getRealValue().subtract(forecastPowerShortTermRegulation.getFpValue()).abs();
|
|
BigDecimal subtractAbs = powerStationStatusData.getRealValue().subtract(forecastPowerShortTermRegulation.getFpValue()).abs();
|
|
BigDecimal value = subtractAbs.divide(electricField.getCapacity(), 4, BigDecimal.ROUND_DOWN);
|
|
BigDecimal value = subtractAbs.divide(electricField.getCapacity(), 4, BigDecimal.ROUND_DOWN);
|
|
|
|
+ // 单点偏差
|
|
|
|
+ ShortTermSinglePointDeviation shortTermSinglePointDeviation = new ShortTermSinglePointDeviation();
|
|
|
|
+ shortTermSinglePointDeviation.setDeviation(value.multiply(new BigDecimal(100)));
|
|
|
|
+ shortTermSinglePointDeviation.setStationCode(stationCode);
|
|
|
|
+ shortTermSinglePointDeviation.setTime(finalTime);
|
|
|
|
+ shortTermSinglePointDeviation.setForecastHowLongAgo(ago);
|
|
|
|
+ shortTermSinglePointDeviationList.add(shortTermSinglePointDeviation);
|
|
values.add(value);
|
|
values.add(value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ shortTermSinglePointDeviationService.saveBatch(shortTermSinglePointDeviationList);
|
|
if (values.size() > 0) {
|
|
if (values.size() > 0) {
|
|
Double value = values.stream().mapToDouble(v -> v.doubleValue()).average().getAsDouble();
|
|
Double value = values.stream().mapToDouble(v -> v.doubleValue()).average().getAsDouble();
|
|
accuracyPassRate.setDeviationSum(String.format("%.2f", value * 100) + "%");
|
|
accuracyPassRate.setDeviationSum(String.format("%.2f", value * 100) + "%");
|