Commit a1afa891 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent ad3c1d55
......@@ -20,7 +20,7 @@ import xstartup.data.XServiceResult;
public class StationDailyProductionSituationJob {
/**
* 每天0点10分执行 0 10 0 * * ?
* 每天8点40分执行 0 40 8 * * ?
*
* @param xContext x上下文
* @return {@link XServiceResult}
......
......@@ -141,6 +141,8 @@ public class PlantPredictedPowerDataService {
bean.test(context);
PlantPredictedPowerCloudServiceImpl bean1 = context.getBean(PlantPredictedPowerCloudServiceImpl.class);
bean1.test(context);
StationDailyCloudServiceImpl bean2 = context.getBean(StationDailyCloudServiceImpl.class);
bean2.test(context);
return XServiceResult.OK;
}
......
......@@ -20,10 +20,7 @@ import xstartup.data.XServiceResult;
import xstartup.helper.XTransactionHelper;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -36,6 +33,98 @@ import java.util.stream.Collectors;
@XService
public class StationDailyCloudServiceImpl implements IStationDailyCloudService {
public XServiceResult test(XContext context) {
//查昨日井口统计数据
String oilFieldCode = ServiceUtil.getOilFieldCode(context);
WellheadDailyProductionSituationMapper wellDailyMapper = context.getBean(WellheadDailyProductionSituationMapper.class);
List<WellheadDailyProductionSituationEnt> wellDailyList = wellDailyMapper.selectList(new LambdaQueryWrapper<WellheadDailyProductionSituationEnt>()
.eq(WellheadDailyProductionSituationEnt::getSystemSource, oilFieldCode)
);
if (CollUtil.isEmpty(wellDailyList)) {
return XServiceResult.OK;
}
//查线路关联井口
List<DynamicQueryBasePowerLineWellheadViewOutput> lineWellheadList = ServiceUtil.getPowerLineWellheadList(context, new DynamicQueryBasePowerLineWellheadInput());
if (CollUtil.isEmpty(lineWellheadList)) {
return XServiceResult.OK;
}
//查日累积光伏发电量
ThirdPhotovoltaicPowerMapper powerMapper = context.getBean(ThirdPhotovoltaicPowerMapper.class);
List<ThirdPhotovoltaicPowerEnt> powerList = powerMapper.selectList(new LambdaQueryWrapper<ThirdPhotovoltaicPowerEnt>()
.eq(ThirdPhotovoltaicPowerEnt::getSystemSource, oilFieldCode)
);
Map<String, BigDecimal> powerMap;
if (CollUtil.isEmpty(powerList)) {
powerMap = Collections.emptyMap();
} else {
powerMap = powerList.stream()
.collect(Collectors.toMap(ThirdPhotovoltaicPowerEnt::getStationName, ThirdPhotovoltaicPowerEnt::getPhotovoltaicPower));
}
Map<Date, Map<String, WellheadDailyProductionSituationEnt>> collect = wellDailyList.stream()
.collect(Collectors.groupingBy(WellheadDailyProductionSituationEnt::getDataDate, Collectors.toMap(WellheadDailyProductionSituationEnt::getWellNumber, Function.identity())));
//按线路分组
Map<String, List<DynamicQueryBasePowerLineWellheadViewOutput>> lineMap = lineWellheadList.stream()
.collect(Collectors.groupingBy(DynamicQueryBasePowerLineWellheadViewOutput::getLineName));
//数据组装
List<StationDailyProductionSituationView> dtoDailyList = new ArrayList<>(lineMap.size());
StationDailyProductionSituationView view;
DateTime now = DateUtil.date();
List<DynamicQueryBasePowerLineWellheadViewOutput> wellList;
WellheadDailyProductionSituationEnt wellDaily;
for (Map.Entry<Date, Map<String, WellheadDailyProductionSituationEnt>> dateMapEntry : collect.entrySet()) {
Date key = dateMapEntry.getKey();
Map<String, WellheadDailyProductionSituationEnt> wellMap = dateMapEntry.getValue();
for (Map.Entry<String, List<DynamicQueryBasePowerLineWellheadViewOutput>> entry : lineMap.entrySet()) {
view = new StationDailyProductionSituationView();
view.setStationName(entry.getKey());
view.setSystemSource(oilFieldCode);
view.setDataDate(key);
view.setCreateDate(now);
view.setPhotovoltaicPower(powerMap.getOrDefault(entry.getKey(), BigDecimal.ZERO));
view.setProductionTime(BigDecimal.ZERO);
view.setDailyLiquidProduction(BigDecimal.ZERO);
view.setDailyElectricityConsumption(BigDecimal.ZERO);
view.setDailyUtilityElectricityConsumption(BigDecimal.ZERO);
view.setElectricityConsumptionPh(BigDecimal.ZERO);
view.setElectricityConsumptionHh(BigDecimal.ZERO);
view.setElectricityConsumptionNp(BigDecimal.ZERO);
view.setElectricityConsumptionVh(BigDecimal.ZERO);
view.setElectricityChargeCity(BigDecimal.ZERO);
view.setElectricityChargesPh(BigDecimal.ZERO);
view.setPeakHourTariff(BigDecimal.ZERO);
view.setNormalPeriodTariff(BigDecimal.ZERO);
view.setAlleyHoursTariff(BigDecimal.ZERO);
//累加数据
wellList = entry.getValue();
for (DynamicQueryBasePowerLineWellheadViewOutput well : wellList) {
if (wellMap.containsKey(well.getWellNumber())) {
wellDaily = wellMap.get(well.getWellNumber());
view.setProductionTime(view.getProductionTime().add(wellDaily.getProductionTime()));
view.setDailyLiquidProduction(view.getDailyLiquidProduction().add(wellDaily.getDailyLiquidProduction()));
view.setDailyElectricityConsumption(view.getDailyElectricityConsumption().add(wellDaily.getDailyElectricityConsumption()));
view.setDailyUtilityElectricityConsumption(view.getDailyUtilityElectricityConsumption().add(wellDaily.getDailyUtilityElectricityConsumption()));
view.setElectricityConsumptionPh(view.getElectricityConsumptionPh().add(wellDaily.getElectricityConsumptionPh()));
view.setElectricityConsumptionHh(view.getElectricityConsumptionHh().add(wellDaily.getElectricityConsumptionHh()));
view.setElectricityConsumptionNp(view.getElectricityConsumptionNp().add(wellDaily.getElectricityConsumptionNp()));
view.setElectricityConsumptionVh(view.getElectricityConsumptionVh().add(wellDaily.getElectricityConsumptionVh()));
view.setElectricityChargeCity(view.getElectricityChargeCity().add(wellDaily.getElectricityChargeCity()));
view.setElectricityChargesPh(view.getElectricityChargesPh().add(wellDaily.getElectricityChargesPh()));
view.setPeakHourTariff(view.getPeakHourTariff().add(wellDaily.getPeakHourTariff()));
view.setNormalPeriodTariff(view.getNormalPeriodTariff().add(wellDaily.getNormalPeriodTariff()));
view.setAlleyHoursTariff(view.getAlleyHoursTariff().add(wellDaily.getAlleyHoursTariff()));
}
}
dtoDailyList.add(view);
}
}
return XTransactionHelper.begin(context, () -> {
StationDailyProductionSituationViewMapper dailyMapper = context.getBean(StationDailyProductionSituationViewMapper.class);
//保存当日最新数据
dailyMapper.batchInsert(dtoDailyList);
return XServiceResult.OK;
});
}
@Override
public XServiceResult stationDailyJob(XContext context) {
//查昨日井口统计数据
......
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