Commit a73bdad1 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.开发间开优化结果统计功能,创建间开优化效果统计表,生成对应代码;
2.修改15天,10天,3天,1天间开优化功能,修改代码结构;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent c6012b00
......@@ -215,6 +215,11 @@ public class BusinessConstant {
*/
public static final BigDecimal BIG_DECIMAL_0_6 = BigDecimal.valueOf(0.6);
/**
* 0.5
*/
public static final BigDecimal BIG_DECIMAL_0_5 = BigDecimal.valueOf(0.5);
/**
* 0.4
*/
......
......@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.prediction.service.IPlantPredictedPowerCloudService;
import pps.cloud.prediction.service.IThirdPowerCloudService;
......@@ -101,12 +102,22 @@ public class SpaceYesterdayGreenRateCloudServiceImpl extends SpaceOptimizeBaseSe
String lineName;
Map<Date, BigDecimal> activePowerMap;
Map<Date, BigDecimal> predictionPowerMap;
BigDecimal wellGreenPowerActual;
BigDecimal wellGreenPowerOptimize;
BigDecimal runHourActual;
BigDecimal runHourOptimize;
List<SpaceOptimizeShortDurationView> unOptimizeList;
List<SpaceOptimizeShortDurationView> optimizeList;
TreeMap<Integer, Map<Integer, List<SpaceOptimizeShortDurationView>>> wellSortMap;
SpaceOptimizeShortDurationView durationTemp;
BigDecimal serviceRating;
BigDecimal sumServiceRating;
List<SpaceYesterdayGreenRateView> batchList = new ArrayList<>(durationCollect.size() * 2);
SpaceOptimizeShortDurationView unOptimizeDuration;
DateTime openWellTime;
DateTime closeWellTime;
BigDecimal wellTotalPowerActual;
BigDecimal wellTotalPowerOptimize;
for (Map.Entry<String, Map<Integer, Map<Integer, List<SpaceOptimizeShortDurationView>>>> lineEntry : durationCollect.entrySet()) {
lineName = lineEntry.getKey();
if (activeMap.containsKey(lineName)) {
......@@ -121,7 +132,7 @@ public class SpaceYesterdayGreenRateCloudServiceImpl extends SpaceOptimizeBaseSe
}
//按顺序排
wellSortMap = new TreeMap<>(lineEntry.getValue());
serviceRating = BigDecimal.ZERO;
sumServiceRating = BigDecimal.ZERO;
//计算结果
for (Map.Entry<Integer, Map<Integer, List<SpaceOptimizeShortDurationView>>> sortEntry : wellSortMap.entrySet()) {
//未优化间开
......@@ -129,21 +140,45 @@ public class SpaceYesterdayGreenRateCloudServiceImpl extends SpaceOptimizeBaseSe
if (CollUtil.isEmpty(unOptimizeList)) {
continue;
}
BigDecimal wellTotalPowerActual = BigDecimal.ZERO;
BigDecimal wellTotalPowerOptimize = BigDecimal.ZERO;
BigDecimal wellGreenPowerActual = BigDecimal.ZERO;
BigDecimal wellGreenPowerOptimize = BigDecimal.ZERO;
wellGreenPowerActual = BigDecimal.ZERO;
wellGreenPowerOptimize = BigDecimal.ZERO;
runHourActual = BigDecimal.ZERO;
runHourOptimize = BigDecimal.ZERO;
durationTemp = unOptimizeList.get(0);
//累加运行功率
serviceRating = serviceRating.add(ObjectUtil.defaultIfNull(durationTemp.getServiceRating(), BigDecimal.ZERO));
serviceRating = ObjectUtil.defaultIfNull(durationTemp.getServiceRating(), BigDecimal.ZERO);
sumServiceRating = sumServiceRating.add(serviceRating);
//优化后间开
optimizeList = sortEntry.getValue().get(0);
int unOptimizeIndex = 0;
//计算优化前后功率
for (DateTime dateTime : rangeToList) {
BigDecimal activePower;
if (activePowerMap.containsKey(dateTime)) {
activePower = activePowerMap.get(dateTime);
//计算实际
BigDecimal activePower = activePowerMap.getOrDefault(dateTime, BigDecimal.ZERO);
unOptimizeDuration = unOptimizeList.get(unOptimizeIndex);
//时间转换
openWellTime = this.parseDateTime(unOptimizeDuration.getOpenWellTime());
closeWellTime = this.parseDateTime(unOptimizeDuration.getCloseWellTime());
if (DateUtil.compare(dateTime, openWellTime) >= 0 && DateUtil.compare(dateTime, closeWellTime) < 0) {
//计算发电功率
if (activePower.compareTo(BigDecimal.ZERO) == 0) {
//不管
} else if (activePower.compareTo(sumServiceRating) >= 0) {
//光伏发电功率大于运行负荷: 该时段光伏用电量量=运行负荷*0.5
wellGreenPowerActual = wellGreenPowerActual.add(serviceRating.multiply(BusinessConstant.BIG_DECIMAL_0_5));
} else {
//光伏发电功率小于井的运行负荷: 该时段光伏用电量=光伏发电功率*0.5
wellGreenPowerActual = wellGreenPowerActual.add(activePower.multiply(BusinessConstant.BIG_DECIMAL_0_5));
}
//累加开井时长
runHourActual = runHourActual.add(BusinessConstant.BIG_DECIMAL_0_5);
} else if (DateUtil.compare(dateTime, closeWellTime) >= 0) {
unOptimizeIndex++;
}
if (unOptimizeIndex == unOptimizeList.size()) {
unOptimizeIndex = unOptimizeList.size() - 1;
}
/*--------------------------------------------------*/
BigDecimal predictionPower;
if (predictionPowerMap.containsKey(dateTime)) {
predictionPower = predictionPowerMap.get(dateTime);
......@@ -152,6 +187,8 @@ public class SpaceYesterdayGreenRateCloudServiceImpl extends SpaceOptimizeBaseSe
}
//添加计算结果
wellTotalPowerActual = runHourActual.multiply(serviceRating);
wellTotalPowerOptimize = BigDecimal.ZERO;
SpaceYesterdayGreenRateView yesterdayGreenRateView = new SpaceYesterdayGreenRateView();
BaseUtils.setBaseModelDefaultForJob(yesterdayGreenRateView);
yesterdayGreenRateView.setRecordDate(beginOfYesterday);
......@@ -167,7 +204,22 @@ public class SpaceYesterdayGreenRateCloudServiceImpl extends SpaceOptimizeBaseSe
batchList.add(yesterdayGreenRateView);
}
}
System.out.println();
return XServiceResult.OK;
}
/**
* 转换时间
*
* @param timeString 时间字符串
* @return {@link DateTime }
*/
private DateTime parseDateTime(String timeString) {
DateTime wellTime;
if (CharSequenceUtil.equals(timeString, BusinessConstant.END_OF_DAY_TIME)) {
wellTime = BusinessConstant.DATE_FLAG;
} else {
wellTime = DateUtil.parse(timeString + BusinessConstant.INITIALIZATION_SECOND, BusinessConstant.TIME_FORMAT);
}
return wellTime;
}
}
\ No newline at end of file
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