Commit ad3c1d55 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 75df997b
......@@ -169,6 +169,79 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
return XListResult.success(outputs);
}
public XServiceResult test(XContext context) {
List<WellheadDailyProductionSituationJob> list = null;
IWellDailyProductionSituationCloudService service = context.getBean(IWellDailyProductionSituationCloudService.class);
XListResult<GetWellheadDailyProductionSituationOutput> result = service.getWellDailyProductionSituationList(context, GetWellheadDailyProductionSituationInput.builder()
.build());
result.throwIfFail();
List<GetWellheadDailyProductionSituationOutput> dailyList = result.getResult();
if (CollUtil.isNotEmpty(dailyList)) {
list = new ArrayList<>(dailyList.size());
for (GetWellheadDailyProductionSituationOutput output : dailyList) {
list.add(
WellheadDailyProductionSituationJob.builder()
.wellNumber(output.getWellNumber())
.dataDate(DateUtil.parseDate(output.getDataDate()))
.dailyLiquidProduction(output.getDailyLiquidProduction())
.productionTime(output.getProductionTime())
.dailyElectricityConsumption(output.getDailyElectricityConsumption())
.dailyUtilityElectricityConsumption(output.getDailyUtilityElectricityConsumption())
.electricityConsumptionPh(output.getElectricityConsumptionPh())
.electricityConsumptionHh(output.getElectricityConsumptionHh())
.electricityConsumptionNp(output.getElectricityConsumptionNp())
.electricityConsumptionVh(output.getElectricityConsumptionVh())
.electricityChargeCity(output.getElectricityChargeCity())
.electricityChargesPh(output.getElectricityChargesPh())
.peakHourTariff(output.getPeakHourTariff())
.normalPeriodTariff(output.getNormalPeriodTariff())
.alleyHoursTariff(output.getAlleyHoursTariff())
.build()
);
}
}
if (CollUtil.isEmpty(list)) {
return XServiceResult.OK;
}
List<String> collect = list.stream()
.map(WellheadDailyProductionSituationJob::getWellNumber)
.collect(Collectors.toList());
Map<String, String> map = ServiceUtil.getBaseWellheadList(context, DynamicQueryBaseWellheadInput.builder()
.wellNumbers(collect)
.build()).stream()
.collect(Collectors.toMap(DynamicQueryBaseWellheadOutput::getWellNumber, DynamicQueryBaseWellheadOutput::getId));
DateTime now = DateUtil.date();
List<WellheadDailyProductionSituationView> dtoList = new ArrayList<>(list.size());
for (WellheadDailyProductionSituationJob wellhead : list) {
dtoList.add(WellheadDailyProductionSituationView.builder()
.wellNumber(wellhead.getWellNumber())
.dataDate(wellhead.getDataDate())
.dailyLiquidProduction(ObjectUtil.defaultIfNull(wellhead.getDailyLiquidProduction(), BigDecimal.ZERO))
.productionTime(ObjectUtil.defaultIfNull(wellhead.getProductionTime(), BigDecimal.ZERO))
.dailyElectricityConsumption(ObjectUtil.defaultIfNull(wellhead.getDailyElectricityConsumption(), BigDecimal.ZERO))
.wellheadId(map.get(wellhead.getWellNumber()))
.dailyUtilityElectricityConsumption(ObjectUtil.defaultIfNull(wellhead.getDailyUtilityElectricityConsumption(), BigDecimal.ZERO))
.electricityConsumptionPh(ObjectUtil.defaultIfNull(wellhead.getElectricityConsumptionPh(), BigDecimal.ZERO))
.electricityConsumptionHh(ObjectUtil.defaultIfNull(wellhead.getElectricityConsumptionHh(), BigDecimal.ZERO))
.electricityConsumptionNp(ObjectUtil.defaultIfNull(wellhead.getElectricityConsumptionNp(), BigDecimal.ZERO))
.electricityConsumptionVh(ObjectUtil.defaultIfNull(wellhead.getElectricityConsumptionVh(), BigDecimal.ZERO))
.electricityChargeCity(ObjectUtil.defaultIfNull(wellhead.getElectricityChargeCity(), BigDecimal.ZERO))
.electricityChargesPh(ObjectUtil.defaultIfNull(wellhead.getElectricityChargesPh(), BigDecimal.ZERO))
.peakHourTariff(ObjectUtil.defaultIfNull(wellhead.getPeakHourTariff(), BigDecimal.ZERO))
.normalPeriodTariff(ObjectUtil.defaultIfNull(wellhead.getNormalPeriodTariff(), BigDecimal.ZERO))
.alleyHoursTariff(ObjectUtil.defaultIfNull(wellhead.getAlleyHoursTariff(), BigDecimal.ZERO))
.systemSource("SY")
.createDate(now)
.build()
);
}
return XTransactionHelper.begin(context, () -> {
WellheadDailyProductionSituationViewMapper mapper = context.getBean(WellheadDailyProductionSituationViewMapper.class);
mapper.batchInsertList(dtoList);
return XServiceResult.OK;
});
}
/**
* 日耗电日产液信息定时任务
*
......@@ -183,7 +256,9 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
switch (oilFieldCode) {
case BusinessConstant.ENV_SY:
IWellDailyProductionSituationCloudService service = context.getBean(IWellDailyProductionSituationCloudService.class);
XListResult<GetWellheadDailyProductionSituationOutput> result = service.getWellDailyProductionSituationList(context, new GetWellheadDailyProductionSituationInput());
XListResult<GetWellheadDailyProductionSituationOutput> result = service.getWellDailyProductionSituationList(context, GetWellheadDailyProductionSituationInput.builder()
.dataDate(DateUtil.beginOfDay(DateUtil.yesterday()).toDateStr())
.build());
result.throwIfFail();
List<GetWellheadDailyProductionSituationOutput> dailyList = result.getResult();
if (CollUtil.isNotEmpty(dailyList)) {
......
......@@ -134,6 +134,16 @@ public class PlantPredictedPowerDataService {
return XListResult.success(outputs);
}
@XText("test")
@XApiPost(anonymous = true)
public XServiceResult test(XContext context, DoPlantPredictedPowerDataInput input) {
ThirdDataAccessCloudServiceImpl bean = context.getBean(ThirdDataAccessCloudServiceImpl.class);
bean.test(context);
PlantPredictedPowerCloudServiceImpl bean1 = context.getBean(PlantPredictedPowerCloudServiceImpl.class);
bean1.test(context);
return XServiceResult.OK;
}
@XText("预测电站发电数据")
@XApiPost
public XServiceResult doPredictedPowerData(XContext context, DoPlantPredictedPowerDataInput input) {
......
......@@ -54,6 +54,78 @@ import java.util.stream.Collectors;
@XService
public class ThirdDataAccessCloudServiceImpl implements IThirdDataAccessCloudService {
public XServiceResult test(XContext context) {
//条件查询实际功率
IThirdActivePowerCloudService service = context.getBean(IThirdActivePowerCloudService.class);
XListResult<pps.cloud.middle.service.data.third_active_power.GetThirdActivePowerViewOutput> result = service.getThirdActivePowerList(context, GetThirdActivePowerViewInput.builder()
.build());
result.throwIfFail();
List<GetThirdActivePowerViewOutput> outputs = XCopyUtils.copyNewList(result.getResult(), GetThirdActivePowerViewOutput.class);
//数据处理
if (CollUtil.isEmpty(outputs)) {
return XServiceResult.OK;
}
Map<String, String> collect = this.getPhotovoltaicPlantMap(context);
List<ThirdActivePowerView> dtoList = new ArrayList<>(outputs.size());
List<ThirdActivePowerDailyUpdateView> dtoDailyList = new ArrayList<>(outputs.size());
DateTime now = DateTime.now();
DateTime saveDate = DateUtil.beginOfDay(now);
DateTime saveHour = DateUtil.beginOfHour(now);
LambdaQueryWrapper<ThirdActivePowerEnt> queryWrapper = new LambdaQueryWrapper<ThirdActivePowerEnt>()
.select(ThirdActivePowerEnt::getId);
for (GetThirdActivePowerViewOutput o : outputs) {
BigDecimal photovoltaicPower = Optional.ofNullable(o.getPhotovoltaicPower())
.orElse(BigDecimal.ZERO)
.abs();
BigDecimal meterPower = Optional.ofNullable(o.getMeterPower())
.orElse(BigDecimal.ZERO)
.abs();
dtoList.add(
ThirdActivePowerView.builder()
.stationName(o.getStationName())
.stationId(collect.get(o.getStationName()))
.createDate(o.getCreateDate())
.photovoltaicPower(photovoltaicPower)
.meterPower(meterPower)
.systemSource("SY")
.inputTime(now)
.build()
);
queryWrapper.or(w -> w.eq(ThirdActivePowerEnt::getStationName, o.getStationName())
.eq(ThirdActivePowerEnt::getCreateDate, o.getCreateDate())
.eq(ThirdActivePowerEnt::getPhotovoltaicPower, photovoltaicPower)
.eq(ThirdActivePowerEnt::getMeterPower, meterPower)
.eq(ThirdActivePowerEnt::getSystemSource, "SY")
);
dtoDailyList.add(
ThirdActivePowerDailyUpdateView.builder()
.stationName(o.getStationName())
.stationId(collect.get(o.getStationName()))
.createDate(o.getCreateDate())
.photovoltaicPower(photovoltaicPower)
.meterPower(meterPower)
.systemSource("SY")
.saveDate(saveDate)
.saveHour(saveHour)
.build()
);
}
return XTransactionHelper.begin(context, () -> {
//删除重复数据
ThirdActivePowerMapper powerMapper = context.getBean(ThirdActivePowerMapper.class);
powerMapper.delete(queryWrapper);
ThirdActivePowerViewMapper mapper = context.getBean(ThirdActivePowerViewMapper.class);
//保存历史数据
mapper.batchInsertList(dtoList);
ThirdActivePowerDailyUpdateViewMapper dailyMapper = context.getBean(ThirdActivePowerDailyUpdateViewMapper.class);
//删除当日最新数据
dailyMapper.deleteByCurrentDayData(dtoDailyList, saveHour);
//保存当日最新数据
dailyMapper.batchInsertList(dtoDailyList);
return XServiceResult.OK;
});
}
/**
* 第三方有功功率定时任务
*
......
package pps.cloud.middle.service.data.wellhead_daily_production_situation;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.math.BigDecimal;
......@@ -13,6 +16,9 @@ import java.util.Date;
* @date 2024/10/19
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetWellheadDailyProductionSituationInput {
@XText("ID")
private Long id;
......
package pps.core.middle.service;
import cn.hutool.core.date.DateUtil;
import pps.cloud.middle.service.IWellDailyProductionSituationCloudService;
import pps.cloud.middle.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationInput;
import pps.cloud.middle.service.data.wellhead_daily_production_situation.GetWellheadDailyProductionSituationOutput;
......@@ -26,7 +25,7 @@ public class WellDailyProductionSituationCloudServiceImpl implements IWellDailyP
public XListResult<GetWellheadDailyProductionSituationOutput> getWellDailyProductionSituationList(XContext context, GetWellheadDailyProductionSituationInput input) {
WellheadDailyProductionSituationViewMapper viewMapper = context.getBean(WellheadDailyProductionSituationViewMapper.class);
List<WellheadDailyProductionSituationView> list = viewMapper.selectWellDailyProductionSituationList(WellheadDailyProductionSituationView.builder()
.dataDate(DateUtil.beginOfDay(DateUtil.yesterday()).toDateStr())
.dataDate(input.getDataDate())
.build());
return XListResult.success(XCopyUtils.copyNewList(list, GetWellheadDailyProductionSituationOutput.class));
}
......
......@@ -84,6 +84,10 @@
STARTHOURS AS PRODUCTION_TIME,
DAILY_LIQUID_PRODUCTION
FROM WELLHEAD_DAILY_PRODUCTION_SITUATION
WHERE DATA_DATE = #{dataDate}
<where>
<if test="dataDate != null">
DATA_DATE = #{dataDate}
</if>
</where>
</select>
</mapper>
\ 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