Commit 2b820784 authored by ZWT's avatar ZWT

feat(能源管理系统): 测试问题修复

1.修改基础信息配置--井口配置模块,新增/修改接口,增加井口编号重复校验及必填项校验逻辑;
2.修改基础信息配置--井口配置模块,修改接口,解决部分字段丢失导致数据未更新问题;
3.修改基础信息配置--柴发设备配置模块,新增/修改接口,增加出场编号重复校验及必填项校验逻辑;
4.修改基础信息配置--储能设备配置模块,新增/修改接口,增加出场编号重复校验及必填项校验逻辑;
5.修改基础信息配置--光伏电站配置模块,新增/修改接口,增加出场编号重复校验及必填项校验逻辑;
6.修改基础信息配置--间开制度管理模块,设为基础制度/重新优化接口,增加业务逻辑初始化校准周期;
7.修改间开制度管理--定期校准模块重新优化接口,解决离网型线路优化时间超过一天问题;
8.修改系统管理Cloud模块,查询子集组织列表接口,增加查询逻辑,解决查询出重复数据问题;
9.修改间开制度管理--定期校准模块重新优化接口,解决离网型线路优化跨月导致数据异常问题;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 47d631ef
...@@ -350,55 +350,61 @@ public class SpaceOptimizeBaseService { ...@@ -350,55 +350,61 @@ public class SpaceOptimizeBaseService {
} }
//离网优化 //离网优化
if (CollUtil.isNotEmpty(offGridPeriodList)) { if (CollUtil.isNotEmpty(offGridPeriodList)) {
if (!storageAvgMap.containsKey(detail.getLineId())) { BigDecimal avgRatedDischargeEfficiency = BigDecimal.ZERO;
//没有储能设备,无法计算 BigDecimal avgRatedDischargeDepth = BigDecimal.ZERO;
return; BigDecimal avgRatedDischargePower = BigDecimal.ZERO;
Iterator<DynamicQueryStoragePredictedPowerOutput> iterator = null;
if (storageAvgMap.containsKey(detail.getLineId())) {
//查获取前一个月该时间点储能剩余电量,求平均数
List<DynamicQueryStoragePredictedPowerOutput> averageEnergyStorageList = this.getAverageEnergyStorageListByParam(context, input);
if (CollUtil.isEmpty(averageEnergyStorageList)) {
//没有储能发电量,无法计算
return;
}
//取储能计算参数
List<DynamicQueryBasePowerLineStorageViewOutput> avgStorageViewList = storageAvgMap.get(detail.getLineId());
DynamicQueryBasePowerLineStorageViewOutput avgStorageView = avgStorageViewList.get(0);
//平均额定放电效率(%)
avgRatedDischargeEfficiency = avgStorageView.getRatedDischargeEfficiency();
//平均额定放电深度(%)
avgRatedDischargeDepth = avgStorageView.getRatedDischargeDepth();
//平均额定放电功率(KW)
avgRatedDischargePower = avgStorageView.getRatedDischargePower();
//逐15分钟计算光伏出力-井场运行功率之和,获得光伏出力不足时间段,并计算储能可用时长
iterator = averageEnergyStorageList.iterator();
} }
//截取从第一次开井时间往后的时间段 //截取从第一次开井时间往后的时间段
List<DynamicQueryPlantPredictedPowerOutput> subAvgPowerList = CollUtil.sub(avgPowerList, firstIndex + 1, avgPowerList.size()); List<DynamicQueryPlantPredictedPowerOutput> subAvgPowerList = CollUtil.sub(avgPowerList, firstIndex, avgPowerList.size());
if (CollUtil.isEmpty(subAvgPowerList)) { if (CollUtil.isEmpty(subAvgPowerList)) {
//没有时间段,无法计算 //没有时间段,无法计算
return; return;
} }
//查获取前一个月该时间点储能剩余电量,求平均数
List<DynamicQueryStoragePredictedPowerOutput> averageEnergyStorageList = this.getAverageEnergyStorageListByParam(context, input);
if (CollUtil.isEmpty(averageEnergyStorageList)) {
//没有储能发电量,无法计算
return;
}
//取储能计算参数
List<DynamicQueryBasePowerLineStorageViewOutput> avgStorageViewList = storageAvgMap.get(detail.getLineId());
DynamicQueryBasePowerLineStorageViewOutput avgStorageView = avgStorageViewList.get(0);
//平均额定放电效率(%)
BigDecimal avgRatedDischargeEfficiency = avgStorageView.getRatedDischargeEfficiency();
//平均额定放电深度(%)
BigDecimal avgRatedDischargeDepth = avgStorageView.getRatedDischargeDepth();
//平均额定放电功率(KW)
BigDecimal avgRatedDischargePower = avgStorageView.getRatedDischargePower();
//逐15分钟计算光伏出力-井场运行功率之和,获得光伏出力不足时间段,并计算储能可用时长
Iterator<DynamicQueryStoragePredictedPowerOutput> iterator = averageEnergyStorageList.iterator();
for (DynamicQueryPlantPredictedPowerOutput avg : subAvgPowerList) { for (DynamicQueryPlantPredictedPowerOutput avg : subAvgPowerList) {
if (totalOperatingPower.compareTo(avg.getPower()) >= 0) { if (totalOperatingPower.compareTo(avg.getPower()) >= 0) {
//电量不足,计算储能可用时长 //电量不足,计算储能可用时长
avg.setBatteryLowFlag(false); avg.setBatteryLowFlag(false);
String hourTime = avg.getHourTime(); String hourTime = avg.getHourTime();
String minTime = avg.getMinTime(); String minTime = avg.getMinTime();
while (iterator.hasNext()) { if (Objects.isNull(iterator)) {
DynamicQueryStoragePredictedPowerOutput storagePredicted = iterator.next(); avg.setPowerDuration(0);
if (StringUtils.equals(hourTime, storagePredicted.getHourTime()) && StringUtils.equals(minTime, storagePredicted.getMinTime())) { } else {
//计算储能可供电时长:(储能剩余容量*放电深度*放电效率)/额定放电功率 while (iterator.hasNext()) {
avg.setPowerDuration( DynamicQueryStoragePredictedPowerOutput storagePredicted = iterator.next();
storagePredicted.getPower() if (StringUtils.equals(hourTime, storagePredicted.getHourTime()) && StringUtils.equals(minTime, storagePredicted.getMinTime())) {
.multiply(avgRatedDischargeDepth) //计算储能可供电时长:(储能剩余容量*放电深度*放电效率)/额定放电功率
.multiply(avgRatedDischargeEfficiency) avg.setPowerDuration(
.divide(avgRatedDischargePower, 6, BigDecimal.ROUND_HALF_UP) storagePredicted.getPower()
.setScale(BusinessConstant.ZERO, RoundingMode.DOWN) .multiply(avgRatedDischargeDepth)
.intValueExact() .multiply(avgRatedDischargeEfficiency)
); .divide(avgRatedDischargePower, 6, BigDecimal.ROUND_HALF_UP)
break; .setScale(BusinessConstant.ZERO, RoundingMode.DOWN)
.intValueExact()
);
break;
}
//删除计算过的时间段
iterator.remove();
} }
//删除计算过的时间段
iterator.remove();
} }
} else { } else {
avg.setBatteryLowFlag(true); avg.setBatteryLowFlag(true);
......
...@@ -181,7 +181,7 @@ public class SpaceOptimizeMidPeriodService extends SpaceOptimizeBaseService { ...@@ -181,7 +181,7 @@ public class SpaceOptimizeMidPeriodService extends SpaceOptimizeBaseService {
.get(detailEnt.getLineId())) .get(detailEnt.getLineId()))
.startTime(DateUtil.beginOfWeek(period.getCreateTime()) .startTime(DateUtil.beginOfWeek(period.getCreateTime())
.toString(BusinessConstant.DATE_FORMAT_DAY)) .toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(DateUtil.date(period.getOptimizeDeadline()) .endTime(DateUtil.offsetDay(period.getOptimizeDeadline(), 1)
.toString(BusinessConstant.DATE_FORMAT_DAY)) .toString(BusinessConstant.DATE_FORMAT_DAY))
.dateType(BusinessConstant.ONE) .dateType(BusinessConstant.ONE)
.build()) .build())
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment