Commit f0d2b485 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.排查并修复各时段间开优化功能执行异常导致未执行间开优化问题;
2.排查并修复15天间开优化功能执行后,优化结果时间段展示错乱问题;
3.排查并修复光伏功率预测展示功能,实际功率未展示问题;
4.排查并修复天气数据获取服务,数据处理后入库缺少数据问题;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 4a5bef09
......@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineInput;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantViewOutput;
......@@ -28,7 +29,6 @@ import pps.cloud.space.service.data.line_daily_electricity_trend.GetValleyElectr
import pps.cloud.space.service.data.space_institution_wellhead.GetSpaceInstitutionWellheadInput;
import pps.cloud.space.service.data.space_institution_wellhead.GetSpaceInstitutionWellheadOutput;
import pps.cloud.space.service.data.space_optimize_short_wellhead.*;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyAverageInput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendInput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendOutput;
import pps.core.common.constant.BusinessConstant;
......@@ -245,11 +245,7 @@ public class EnergyConsumptionAnalysisService {
if (ObjectUtil.isNotNull(statistics)) {
output.setAccumulatePowerGeneration(statistics.getPhotovoltaicPower().setScale(2, RoundingMode.HALF_UP));
output.setDailyElectricityConsumption(statistics.getDailyElectricityConsumption().setScale(2, RoundingMode.HALF_UP));
output.setEconomicBenefit(statistics.getPhotovoltaicPower().multiply(BigDecimal.valueOf(0.65))
.subtract(statistics.getPhotovoltaicPower()
.multiply(BigDecimal.valueOf(0.28)))
.setScale(2, RoundingMode.HALF_UP)
);
output.setEconomicBenefit(ServiceUtil.getEconomicBenefit(statistics.getPhotovoltaicPower(), BusinessConstant.ENV_SY));
output.setCarbonReduction(ServiceUtil.calculateCarbonReductionTon(statistics.getPhotovoltaicPower()));
}
return XSingleResult.success(output);
......@@ -1131,6 +1127,7 @@ public class EnergyConsumptionAnalysisService {
powerMap = nowMapper.selectEnergyUseCurve(ThirdActivePowerDailyUpdateView.builder()
.stationIds(plantIds)
.saveDate(today)
.createDate(DateUtil.date())
.build()).stream()
.collect(Collectors.toMap(ThirdActivePowerDailyUpdateView::getHourNumber, ThirdActivePowerDailyUpdateView::getPhotovoltaicPower));
} else {
......@@ -1200,7 +1197,7 @@ public class EnergyConsumptionAnalysisService {
accumulatePowerGeneration = analysisEnt.getPhotovoltaicPower();
dailyElectricityConsumption = analysisEnt.getDailyElectricityConsumption();
greenElectricityRate = BaseUtils.getRate(analysisEnt.getInPlaceConsumption(), analysisEnt.getDailyElectricityConsumption());
economicBenefit = this.calculateEconomicBenefit(analysisEnt.getPhotovoltaicPower());
economicBenefit = ServiceUtil.getEconomicBenefit(analysisEnt.getPhotovoltaicPower(), BusinessConstant.ENV_CQ);
carbonReduction = ServiceUtil.calculateCarbonReduction(analysisEnt.getPhotovoltaicPower());
}
ISpaceOptimizeShortCloudService service = context.getBean(ISpaceOptimizeShortCloudService.class);
......@@ -1270,7 +1267,7 @@ public class EnergyConsumptionAnalysisService {
case BusinessConstant.ENV_CQ:
for (DateTime dateTime : rangeToList) {
if (map.containsKey(dateTime)) {
economicBenefit = this.calculateEconomicBenefit(map.get(dateTime));
economicBenefit = ServiceUtil.getEconomicBenefit(map.get(dateTime), oilFieldCode);
carbonReduction = ServiceUtil.calculateCarbonReduction(map.get(dateTime));
} else {
economicBenefit = BigDecimal.ZERO;
......@@ -1288,7 +1285,7 @@ public class EnergyConsumptionAnalysisService {
if (map.containsKey(dateTime)) {
saveElectricity = map.get(dateTime);
carbonReduction = ServiceUtil.calculateCarbonReduction(map.get(dateTime));
electricityFees = this.calculateElectricityFees(map.get(dateTime));
electricityFees = ServiceUtil.getEconomicBenefit(map.get(dateTime), oilFieldCode);
} else {
saveElectricity = BigDecimal.ZERO;
carbonReduction = BigDecimal.ZERO;
......@@ -1442,13 +1439,24 @@ public class EnergyConsumptionAnalysisService {
BigDecimal electricityConsumption = BigDecimal.ZERO;
BigDecimal carbonReduction = BigDecimal.ZERO;
BigDecimal economicBenefit = BigDecimal.ZERO;
List<String> orgIdsByPath = ServiceUtil.getOrgIdsByPath(context, input.getOuId());
String oilFieldCode = ServiceUtil.getOilFieldCode(context);
List<DynamicQueryBaseWellheadOutput> wellList = this.getWellListByOuId(context, orgIdsByPath);
if (CollUtil.isNotEmpty(wellList)) {
sumWellNumber = wellList.size();
List<String> set = new ArrayList<>(wellList.size());
for (DynamicQueryBaseWellheadOutput out : wellList) {
//查电站关联井口
DynamicQueryBasePowerLineWellheadInput param = new DynamicQueryBasePowerLineWellheadInput();
DynamicQueryBasePowerLineInput lineParam = new DynamicQueryBasePowerLineInput();
if (CharSequenceUtil.isNotBlank(input.getStationName())) {
//用stationName匹配电站
param.setLineName(input.getStationName());
lineParam.setLineNames(CollUtil.list(false, input.getStationName()));
} else {
List<String> orgIdsByPath = ServiceUtil.getOrgIdsByPath(context, input.getOuId());
param.setOuIds(orgIdsByPath);
lineParam.setOuIdList(orgIdsByPath);
}
List<DynamicQueryBasePowerLineWellheadViewOutput> wellheadList = ServiceUtil.getPowerLineWellheadList(context, param);
//计算井口数
if (CollUtil.isNotEmpty(wellheadList)) {
sumWellNumber = wellheadList.size();
List<String> set = new ArrayList<>(wellheadList.size());
for (DynamicQueryBasePowerLineWellheadViewOutput out : wellheadList) {
set.add(out.getWellNumber());
if (CharSequenceUtil.equals(out.getRunTypeKey(), BusinessConstant.INTERVAL_PUMPING_WELL)) {
interOpenWellNumber++;
......@@ -1456,33 +1464,25 @@ public class EnergyConsumptionAnalysisService {
normallyOpenWellNumber++;
}
}
//日均产液量
IDailyElectricityTrendCloudService service = context.getBean(IDailyElectricityTrendCloudService.class);
XSingleResult<GetWellDailyElectricityTrendOutput> wellDailyAverageResult = service.queryWellDailyAverage(context, GetWellDailyAverageInput.builder()
.systemSource(oilFieldCode)
.wellNumberList(set)
.build());
wellDailyAverageResult.throwIfFail();
GetWellDailyElectricityTrendOutput result = wellDailyAverageResult.getResult();
liquidProduction = result.getDailyLiquidProduction();
electricityConsumption = result.getDailyElectricityConsumption();
}
//累计数据
List<DynamicQueryBasePowerLinePlantViewOutput> plantList = ServiceUtil.getPowerLinePlantList(context, DynamicQueryBasePowerLinePlantInput.builder()
.ouIds(orgIdsByPath)
.build());
if (CollUtil.isNotEmpty(plantList)) {
ThirdDailyAccumulationUpdateMapper mapper = context.getBean(ThirdDailyAccumulationUpdateMapper.class);
ThirdDailyAccumulationUpdateEnt analysisEnt = mapper.selectOne(new QueryWrapper<ThirdDailyAccumulationUpdateEnt>()
.select("IFNULL( SUM( photovoltaic_power ), 0 ) AS photovoltaic_power")
//查电站列表,计算统计数据
List<DynamicQueryBasePowerLineOutput> powerLineList = ServiceUtil.getPowerLineList(context, lineParam);
if (CollUtil.isNotEmpty(powerLineList)) {
String oilFieldCode = ServiceUtil.getOilFieldCode(context);
Set<String> lineNameSet = powerLineList.stream().map(DynamicQueryBasePowerLineOutput::getLineName).collect(Collectors.toSet());
StationDailyProductionSituationMapper mapper = context.getBean(StationDailyProductionSituationMapper.class);
StationDailyProductionSituationEnt ent = mapper.selectOne(new QueryWrapper<StationDailyProductionSituationEnt>()
.select("IFNULL( ROUND( AVG( daily_electricity_consumption ), 2 ), 0 ) AS daily_electricity_consumption",
"IFNULL( ROUND( AVG( daily_liquid_production ), 2 ), 0 ) AS daily_liquid_production",
"IFNULL( ROUND( SUM( photovoltaic_power ), 2 ), 0 ) AS photovoltaic_power"
)
.lambda()
.eq(ThirdDailyAccumulationUpdateEnt::getSystemSource, oilFieldCode)
.in(ThirdDailyAccumulationUpdateEnt::getStationName, plantList.stream()
.map(DynamicQueryBasePowerLinePlantViewOutput::getStationName)
.collect(Collectors.toList()))
.in(StationDailyProductionSituationEnt::getStationName, lineNameSet)
);
economicBenefit = this.calculateEconomicBenefit(analysisEnt.getPhotovoltaicPower());
carbonReduction = ServiceUtil.calculateCarbonReduction(analysisEnt.getPhotovoltaicPower());
liquidProduction = ent.getDailyLiquidProduction();
electricityConsumption = ent.getDailyElectricityConsumption();
economicBenefit = ServiceUtil.getEconomicBenefit(ent.getPhotovoltaicPower(), oilFieldCode);
carbonReduction = ServiceUtil.calculateCarbonReduction(ent.getPhotovoltaicPower());
}
return XSingleResult.success(GetWellProductionStatusOutput.builder()
.sumWellNumber(sumWellNumber)
......@@ -1797,26 +1797,6 @@ public class EnergyConsumptionAnalysisService {
return collect;
}
/**
* 计算经济效益
*
* @param photovoltaicPower 光伏发电
* @return {@link BigDecimal }
*/
private BigDecimal calculateEconomicBenefit(BigDecimal photovoltaicPower) {
BigDecimal economicBenefit;
if (photovoltaicPower.compareTo(BigDecimal.ZERO) > 0) {
economicBenefit = photovoltaicPower
.multiply(BigDecimal.valueOf(0.6))
.subtract(photovoltaicPower
.multiply(BigDecimal.valueOf(0.28)))
.setScale(2, RoundingMode.HALF_UP);
} else {
economicBenefit = BigDecimal.ZERO;
}
return economicBenefit;
}
/**
* 计算电费
*
......
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