Commit 1b491592 authored by ZWT's avatar ZWT

feat(零碳): 长庆演示系统新增功能

1.修改第三方日累计数据推送表表结构,增加日累计储能放电量字段,同时修改代码对应实体及mapper文件,修改相关接口增加储能日累计放电量接收逻辑;
2.修改首页井场收益分析模块接口,修改获取储能累计放电量逻辑;
3.设计并创建井口日用电趋势表,生成对应实体类及mapper文件;
4.统计分析模块,新增本月累计节电经济效益查询接口,添加线上接口文档并完成接口冒烟测试;
5.统计分析模块,新增本月累计减碳量查询接口,添加线上接口文档并完成接口冒烟测试;
6.统计分析模块,新增光伏发电趋势查询接口,添加线上接口文档并完成接口冒烟测试;
7.统计分析模块,新增月度总览查询接口,添加线上接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent a1d88a96
......@@ -225,4 +225,22 @@ public class BaseUtils {
}
return result;
}
/**
* 计算率
*
* @param one 一
* @param two 二
* @return {@link BigDecimal }
*/
public static BigDecimal getRate(BigDecimal one, BigDecimal two) {
BigDecimal rate;
if (two.compareTo(BigDecimal.ZERO) > 0) {
rate = one.divide(two, 4, RoundingMode.HALF_UP)
.multiply(BusinessConstant.BIG_DECIMAL_100);
} else {
rate = BigDecimal.ZERO;
}
return rate;
}
}
\ No newline at end of file
......@@ -40,7 +40,6 @@ import xstartup.data.XServiceResult;
import xstartup.helper.XTransactionHelper;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -231,9 +230,9 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
.dailyLiquidProduction(view.getDailyLiquidProduction())
.greenElectricityRate(view.getGreenElectricityRate())
.dailyCarbonReduction(view.getDailyCarbonReduction())
.monthGreenElectricityRate(this.getRate(view.getMonthDailyGreenOpenHour(), view.getMonthSpaceRunDuration()))
.monthGreenElectricityRate(BaseUtils.getRate(view.getMonthDailyGreenOpenHour(), view.getMonthSpaceRunDuration()))
.monthDailyCarbonReduction(view.getMonthDailyGreenConsumption().multiply(BusinessConstant.BIG_DECIMAL_6_67))
.yearGreenElectricityRate(this.getRate(view.getYearDailyGreenOpenHour(), view.getYearSpaceRunDuration()))
.yearGreenElectricityRate(BaseUtils.getRate(view.getYearDailyGreenOpenHour(), view.getYearSpaceRunDuration()))
.yearDailyCarbonReduction(view.getYearDailyGreenConsumption().multiply(BusinessConstant.BIG_DECIMAL_6_67))
.build());
}
......@@ -361,24 +360,6 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
return lineMap;
}
/**
* 计算率
*
* @param one 一
* @param two 二
* @return {@link BigDecimal }
*/
private BigDecimal getRate(BigDecimal one, BigDecimal two) {
BigDecimal rate;
if (two.compareTo(BigDecimal.ZERO) > 0) {
rate = one.divide(two, 4, RoundingMode.HALF_UP)
.multiply(BusinessConstant.BIG_DECIMAL_100);
} else {
rate = BigDecimal.ZERO;
}
return rate;
}
/**
* 获取井口日用电趋势信息
*
......@@ -406,7 +387,7 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
//日减碳量:日绿电用电量*6.67
.dailyCarbonReduction(dailyGreenConsumption.multiply(BusinessConstant.BIG_DECIMAL_6_67))
//绿电占比:绿电开井时长/开井时长*100%
.greenElectricityRate(this.getRate(dailyGreenOpenHour, runDuration))
.greenElectricityRate(BaseUtils.getRate(dailyGreenOpenHour, runDuration))
.createDate(yesterday)
.systemSource("长庆")
.build();
......@@ -422,7 +403,7 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
//日减碳量:日绿电用电量*6.67
.dailyCarbonReduction(dailyGreenConsumption.multiply(BusinessConstant.BIG_DECIMAL_6_67))
//绿电占比:绿电开井时长/开井时长*100%
.greenElectricityRate(this.getRate(dailyGreenOpenHour, runDuration))
.greenElectricityRate(BaseUtils.getRate(dailyGreenOpenHour, runDuration))
.createDate(yesterday)
.systemSource("长庆")
.build();
......@@ -458,9 +439,9 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
.lastPhotovoltaicPower(ent.getPhotovoltaicPower())
.lastMunicipalPower(ent.getMunicipalPower())
//同比:本期/上期*100
.totalRatio(this.getRate(dailyElectricityConsumption, ent.getTotalPower()))
.photovoltaicRatio(this.getRate(photovoltaicPower, ent.getPhotovoltaicPower()))
.municipalRatio(this.getRate(municipalPower, ent.getMunicipalPower()))
.totalRatio(BaseUtils.getRate(dailyElectricityConsumption, ent.getTotalPower()))
.photovoltaicRatio(BaseUtils.getRate(photovoltaicPower, ent.getPhotovoltaicPower()))
.municipalRatio(BaseUtils.getRate(municipalPower, ent.getMunicipalPower()))
.createDate(yesterday)
.systemSource("长庆")
.build();
......
......@@ -1518,8 +1518,9 @@ public class SpaceOptimizeBaseService {
}
}
//取绿电时间
List<DynamicQueryPlantPredictedPowerOutput> greenTimeList = powerList.stream()
List<Date> greenTimeList = powerList.stream()
.filter(p -> p.getPower().compareTo(BigDecimal.ZERO) > 0)
.map(DynamicQueryPlantPredictedPowerOutput::getCreateTime)
.collect(Collectors.toList());
for (GetSpaceOptimizeWellheadOutput w : wellheadOutputs) {
BigDecimal runDuration = w.getRunDuration();
......@@ -1528,10 +1529,16 @@ public class SpaceOptimizeBaseService {
if (collect.containsKey(w.getWellheadId())) {
Map<Integer, List<SpaceOptimizeDateDuration>> listMap = collect.get(w.getWellheadId()).stream()
.collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getIsOptimize));
w.setOptimizeList(ServiceUtil.getAllDateDuration(listMap.get(0)));
w.setInitializeList(ServiceUtil.getAllDateDuration(listMap.get(1)));
//计算绿电占比
List<SpaceOptimizeDateDuration> optimizeList = listMap.get(0);
List<SpaceOptimizeDateDuration> initializeList = listMap.get(1);
//绿电占比
BigDecimal optimizeGreenOpenHour = this.getDailyGreenOpenHour(optimizeList, greenTimeList);
BigDecimal initializeGreenOpenHour = this.getDailyGreenOpenHour(initializeList, greenTimeList);
optimizeGreenRate = BaseUtils.getRate(optimizeGreenOpenHour, runDuration);
initializeGreenRate = BaseUtils.getRate(initializeGreenOpenHour, runDuration);
//填充关井时间
w.setOptimizeList(ServiceUtil.getAllDateDuration(optimizeList));
w.setInitializeList(ServiceUtil.getAllDateDuration(initializeList));
} else {
w.setOptimizeList(Collections.emptyList());
w.setInitializeList(Collections.emptyList());
......@@ -1544,6 +1551,40 @@ public class SpaceOptimizeBaseService {
return wellheadOutputs;
}
/**
* 每日绿电时长
*
* @param durationList 持续时间列表
* @param greenTimeList 绿色时间列表
* @return {@link BigDecimal }
*/
private BigDecimal getDailyGreenOpenHour(List<SpaceOptimizeDateDuration> durationList, List<Date> greenTimeList) {
//计算绿电占比
int index = 0;
//绿电开井时间(h)
BigDecimal dailyGreenOpenHour = BigDecimal.ZERO;
for (SpaceOptimizeDateDuration duration : durationList) {
//时间转换
DateTime openWellTime = DateUtil.parse(duration.getOpenWellTime() + BusinessConstant.INITIALIZATION_SECOND, BusinessConstant.TIME_FORMAT);
DateTime closeWellTime;
if (CharSequenceUtil.equals(duration.getCloseWellTime(), BusinessConstant.END_OF_DAY_TIME)) {
closeWellTime = BusinessConstant.DATE_FLAG;
} else {
closeWellTime = DateUtil.parse(duration.getCloseWellTime() + BusinessConstant.INITIALIZATION_SECOND, BusinessConstant.TIME_FORMAT);
}
//遍历功率
for (int i1 = index; i1 < greenTimeList.size(); i1++) {
Date greenTime = greenTimeList.get(i1);
//在时间范围内,并且总运行功率满足运行
if (DateUtil.isIn(greenTime, openWellTime, closeWellTime)) {
//当前井口绿电运行时长(累加0.25小时)
dailyGreenOpenHour = dailyGreenOpenHour.add(BusinessConstant.BIG_DECIMAL_0_25);
}
}
}
return dailyGreenOpenHour;
}
/**
* 绿电消纳策略
*
......
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