|
@@ -41,7 +41,7 @@ public class ForecastPowerUltraShortTermOneService extends BaseService {
|
|
|
@Autowired
|
|
|
SysParameterService sysParameterService;
|
|
|
@Autowired
|
|
|
- PowerStationStatusDataRepository powerStationStatusDataRepository;
|
|
|
+ PowerStationStatusDataOneRepository powerStationStatusDataOneRepository;
|
|
|
@Autowired
|
|
|
ForecastPowerUltraShortTermOneRepository forecastPowerUltraShortTermOneRepository;
|
|
|
@Autowired
|
|
@@ -101,10 +101,12 @@ public class ForecastPowerUltraShortTermOneService extends BaseService {
|
|
|
|
|
|
// 查询场站信息
|
|
|
ElectricField electricFieldInfo = electricFieldService.get();
|
|
|
+ electricFieldInfo.setElectricFieldTypeEnum(ElectricFieldTypeEnum.E2);
|
|
|
+ electricFieldInfo.setCapacity(new BigDecimal(electricFieldInfo.getBackupF()));
|
|
|
// 查询预测时间点对应的开机容量
|
|
|
Map<Long, BigDecimal> openCapacityMap = null;
|
|
|
try {
|
|
|
- openCapacityMap = super.queryOpenCapacity(startTime, endTime, electricFieldInfo.getCapacity());
|
|
|
+ openCapacityMap = super.queryOpenCapacityOne(startTime, endTime, electricFieldInfo.getCapacity());
|
|
|
} catch (BusinessException e) {
|
|
|
log.error("预测数据生成获取开机容量出错:" + CommonUtil.printStackTraceToString(e));
|
|
|
}
|
|
@@ -251,12 +253,12 @@ public class ForecastPowerUltraShortTermOneService extends BaseService {
|
|
|
log.error("超短期数据用实际功率替换生成时刻步长错误", e);
|
|
|
pre5Time = DateMomentUtil.getDayStartTime(systemDate.getTime());
|
|
|
}
|
|
|
- List<PowerStationStatusData> realPowerList = powerStationStatusDataRepository.findByTimeBetween(new Date(pre5Time), new Date(pre5Time + 5 * 60 * 1000));
|
|
|
+ List<PowerStationStatusDataOne> realPowerList = powerStationStatusDataOneRepository.findByTimeBetween(new Date(pre5Time), new Date(pre5Time + 5 * 60 * 1000));
|
|
|
if (realPowerList.size() > 0) {
|
|
|
// 按时间降序排列
|
|
|
- realPowerList.sort(Comparator.comparing(PowerStationStatusData::getTime).reversed());
|
|
|
+ realPowerList.sort(Comparator.comparing(PowerStationStatusDataOne::getTime).reversed());
|
|
|
// 获取最后一条最新的实际功率
|
|
|
- PowerStationStatusData realPower = realPowerList.get(0);
|
|
|
+ PowerStationStatusDataOne realPower = realPowerList.get(0);
|
|
|
// 将实际功率替换到对应的超短期点位上
|
|
|
ForecastPowerUltraShortTermOneHis d = forecastPowerUltraShortTermHiss.get(replacePoint - 1);
|
|
|
if (realPower.getRealValue().compareTo(new BigDecimal(0)) != -1) {
|
|
@@ -267,59 +269,59 @@ public class ForecastPowerUltraShortTermOneService extends BaseService {
|
|
|
|
|
|
//-----------------------------------------------------开始进行人工干预数值的判断----------------------------------------------------
|
|
|
//-----------------------------------------------------点位判断开始----------------------------------------------------
|
|
|
- List<ManualInterventionData> manualInterventionDataList = manualInterventionService.queryManualIntervention(startTime, endTime, "1");
|
|
|
- manualInterventionDataList.sort(Comparator.comparing(ManualInterventionData::getInterveneTime));
|
|
|
- Map<Long, BigDecimal> mMap = new HashMap<>();
|
|
|
- int flag = 0;
|
|
|
- if (manualInterventionDataList.size() > 0) {
|
|
|
- for (ManualInterventionData manualInterventionData : manualInterventionDataList) {
|
|
|
- mMap.put(manualInterventionData.getInterveneTime(), manualInterventionData.getInterveneData());
|
|
|
- }
|
|
|
- for (ForecastPowerUltraShortTermOneHis forecastPowerUltraShortTermHis1 : forecastPowerUltraShortTermHiss) {
|
|
|
- BigDecimal ma = mMap.get(forecastPowerUltraShortTermHis1.getForecastTime());
|
|
|
- if (ma != null) {
|
|
|
- forecastPowerUltraShortTermHis1.setAbleValue(ma.setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- forecastPowerUltraShortTermHis1.setTheoryValue(ma.setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
- forecastPowerUltraShortTermHis1.setGenDate(new Date(monentTime));
|
|
|
- forecastPowerUltraShortTermHis1.setPredictionModelEnum(PredictionModelEnum.E6);
|
|
|
- forecastPowerUltraShortTermHiss.set(flag, forecastPowerUltraShortTermHis1);
|
|
|
- }
|
|
|
- flag++;
|
|
|
- }
|
|
|
- }
|
|
|
+// List<ManualInterventionData> manualInterventionDataList = manualInterventionService.queryManualIntervention(startTime, endTime, "1");
|
|
|
+// manualInterventionDataList.sort(Comparator.comparing(ManualInterventionData::getInterveneTime));
|
|
|
+// Map<Long, BigDecimal> mMap = new HashMap<>();
|
|
|
+// int flag = 0;
|
|
|
+// if (manualInterventionDataList.size() > 0) {
|
|
|
+// for (ManualInterventionData manualInterventionData : manualInterventionDataList) {
|
|
|
+// mMap.put(manualInterventionData.getInterveneTime(), manualInterventionData.getInterveneData());
|
|
|
+// }
|
|
|
+// for (ForecastPowerUltraShortTermOneHis forecastPowerUltraShortTermHis1 : forecastPowerUltraShortTermHiss) {
|
|
|
+// BigDecimal ma = mMap.get(forecastPowerUltraShortTermHis1.getForecastTime());
|
|
|
+// if (ma != null) {
|
|
|
+// forecastPowerUltraShortTermHis1.setAbleValue(ma.setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+// forecastPowerUltraShortTermHis1.setTheoryValue(ma.setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+// forecastPowerUltraShortTermHis1.setGenDate(new Date(monentTime));
|
|
|
+// forecastPowerUltraShortTermHis1.setPredictionModelEnum(PredictionModelEnum.E6);
|
|
|
+// forecastPowerUltraShortTermHiss.set(flag, forecastPowerUltraShortTermHis1);
|
|
|
+// }
|
|
|
+// flag++;
|
|
|
+// }
|
|
|
+// }
|
|
|
//-----------------------------------------------------点位判断结束----------------------------------------------------
|
|
|
//-----------------------------------------------------系数判断开始----------------------------------------------------
|
|
|
//获取今日凌晨00:00
|
|
|
- long mStartTime = DateUtil.beginOfDay(DateTime.now()).getTime();
|
|
|
- long mEndTime = mStartTime + 24*60*60*1000l - 1000;
|
|
|
- List<ManualInterventionRatioData> manualInterventionRatioDataList = manualInterventionRatioService.queryManualInterventionRatio(mStartTime, mEndTime, "1");
|
|
|
-
|
|
|
- //如果有人工干预系数设置记录
|
|
|
- if(manualInterventionRatioDataList.size() > 0){
|
|
|
- //循环所有记录
|
|
|
- for(ManualInterventionRatioData manualInterventionRatioData :manualInterventionRatioDataList){
|
|
|
- for (Long tempTime = manualInterventionRatioData.getInterveneStartTime(); tempTime <= manualInterventionRatioData.getInterveneEndTime(); tempTime = tempTime + 15 * 60 * 1000L) {
|
|
|
- //循环所有超短期的值
|
|
|
- int mrflag = 0;
|
|
|
- for (ForecastPowerUltraShortTermOneHis forecastPowerUltraShortTermHis1 : forecastPowerUltraShortTermHiss) {
|
|
|
- //如果该时间设置了系数则数值*系数
|
|
|
- if(forecastPowerUltraShortTermHis1.getForecastTime().equals(tempTime)){
|
|
|
- BigDecimal ableValue = forecastPowerUltraShortTermHis1.getAbleValue().multiply(new BigDecimal(manualInterventionRatioData.getRatio().toString())).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
- //如果计算后的数据大于装机容量 则ableValue=装机容量
|
|
|
- if((ableValue).compareTo(new BigDecimal(electricFieldInfo.getCapacity().toString())) > 0){
|
|
|
- ableValue = new BigDecimal(electricFieldInfo.getCapacity().toString());
|
|
|
- }
|
|
|
- forecastPowerUltraShortTermHis1.setAbleValue(ableValue);
|
|
|
- forecastPowerUltraShortTermHis1.setTheoryValue(ableValue);
|
|
|
- forecastPowerUltraShortTermHis1.setGenDate(new Date(monentTime));
|
|
|
- forecastPowerUltraShortTermHis1.setPredictionModelEnum(PredictionModelEnum.E10);
|
|
|
- forecastPowerUltraShortTermHiss.set(mrflag, forecastPowerUltraShortTermHis1);
|
|
|
- }
|
|
|
- mrflag++;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+// long mStartTime = DateUtil.beginOfDay(DateTime.now()).getTime();
|
|
|
+// long mEndTime = mStartTime + 24*60*60*1000l - 1000;
|
|
|
+// List<ManualInterventionRatioData> manualInterventionRatioDataList = manualInterventionRatioService.queryManualInterventionRatio(mStartTime, mEndTime, "1");
|
|
|
+//
|
|
|
+// //如果有人工干预系数设置记录
|
|
|
+// if(manualInterventionRatioDataList.size() > 0){
|
|
|
+// //循环所有记录
|
|
|
+// for(ManualInterventionRatioData manualInterventionRatioData :manualInterventionRatioDataList){
|
|
|
+// for (Long tempTime = manualInterventionRatioData.getInterveneStartTime(); tempTime <= manualInterventionRatioData.getInterveneEndTime(); tempTime = tempTime + 15 * 60 * 1000L) {
|
|
|
+// //循环所有超短期的值
|
|
|
+// int mrflag = 0;
|
|
|
+// for (ForecastPowerUltraShortTermOneHis forecastPowerUltraShortTermHis1 : forecastPowerUltraShortTermHiss) {
|
|
|
+// //如果该时间设置了系数则数值*系数
|
|
|
+// if(forecastPowerUltraShortTermHis1.getForecastTime().equals(tempTime)){
|
|
|
+// BigDecimal ableValue = forecastPowerUltraShortTermHis1.getAbleValue().multiply(new BigDecimal(manualInterventionRatioData.getRatio().toString())).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+// //如果计算后的数据大于装机容量 则ableValue=装机容量
|
|
|
+// if((ableValue).compareTo(new BigDecimal(electricFieldInfo.getCapacity().toString())) > 0){
|
|
|
+// ableValue = new BigDecimal(electricFieldInfo.getCapacity().toString());
|
|
|
+// }
|
|
|
+// forecastPowerUltraShortTermHis1.setAbleValue(ableValue);
|
|
|
+// forecastPowerUltraShortTermHis1.setTheoryValue(ableValue);
|
|
|
+// forecastPowerUltraShortTermHis1.setGenDate(new Date(monentTime));
|
|
|
+// forecastPowerUltraShortTermHis1.setPredictionModelEnum(PredictionModelEnum.E10);
|
|
|
+// forecastPowerUltraShortTermHiss.set(mrflag, forecastPowerUltraShortTermHis1);
|
|
|
+// }
|
|
|
+// mrflag++;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
//-----------------------------------------------------系数判断结束----------------------------------------------------
|
|
|
|
|
|
|
|
@@ -393,9 +395,11 @@ public class ForecastPowerUltraShortTermOneService extends BaseService {
|
|
|
forecastPowerShortTermList.stream().collect(Collectors.groupingBy(ForecastPowerShortTermOne::getForecastTime));
|
|
|
// 查询场站信息
|
|
|
ElectricField electricField = this.getElectricField();
|
|
|
+ electricField.setElectricFieldTypeEnum(ElectricFieldTypeEnum.E2);
|
|
|
+ electricField.setCapacity(new BigDecimal(electricField.getBackupF()));
|
|
|
Map<Long, BigDecimal> openCapacityMap = null;
|
|
|
try {
|
|
|
- openCapacityMap = super.queryOpenCapacity(startTime, endTime, electricField.getCapacity());
|
|
|
+ openCapacityMap = super.queryOpenCapacityOne(startTime, endTime, electricField.getCapacity());
|
|
|
} catch (BusinessException e) {
|
|
|
log.error("预测数据生成获取开机容量出错:" + CommonUtil.printStackTraceToString(e));
|
|
|
}
|
|
@@ -454,8 +458,8 @@ public class ForecastPowerUltraShortTermOneService extends BaseService {
|
|
|
Date currentTime = new Date(System.currentTimeMillis());
|
|
|
Date startTime = DateUtils.addMinutes(currentTime, -10);
|
|
|
Date endTime = DateUtils.addMinutes(currentTime, 1);
|
|
|
- List<PowerStationStatusData> powerStationStatusDataList = this.powerStationStatusDataRepository.findByTimeBetween(startTime, endTime);
|
|
|
- List<PowerStationStatusData> filterList = powerStationStatusDataList.stream().filter(t -> t.getAbleValue().compareTo(new BigDecimal("-1")) == 1).collect(Collectors.toList());
|
|
|
+ List<PowerStationStatusDataOne> powerStationStatusDataList = this.powerStationStatusDataOneRepository.findByTimeBetween(startTime, endTime);
|
|
|
+ List<PowerStationStatusDataOne> filterList = powerStationStatusDataList.stream().filter(t -> t.getAbleValue().compareTo(new BigDecimal("-1")) == 1).collect(Collectors.toList());
|
|
|
String coe = super.getSysParameter("CDQ_COE", "1.05");
|
|
|
|
|
|
Long monentTime = 0L;
|
|
@@ -476,14 +480,14 @@ public class ForecastPowerUltraShortTermOneService extends BaseService {
|
|
|
}
|
|
|
else{
|
|
|
// 当前时间没有对应的短期,用实际功率最近的一个替换
|
|
|
- filterList.sort(Comparator.comparing(PowerStationStatusData::getTime).reversed());
|
|
|
+ filterList.sort(Comparator.comparing(PowerStationStatusDataOne::getTime).reversed());
|
|
|
currentForecastPowerValue = filterList.get(0).getAbleValue();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
- BigDecimal sumAbleValue = filterList.stream().map(PowerStationStatusData::getAbleValue)
|
|
|
+ BigDecimal sumAbleValue = filterList.stream().map(PowerStationStatusDataOne::getAbleValue)
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
BigDecimal averageAbleValue = sumAbleValue.divide(new BigDecimal(filterList.size()), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
//可用-短期差值
|