Commit f1e72052 authored by ZWT's avatar ZWT

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

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent f8649742
...@@ -47,4 +47,8 @@ public class ThirdCurrentWellConditionEnt implements Serializable { ...@@ -47,4 +47,8 @@ public class ThirdCurrentWellConditionEnt implements Serializable {
@XText("来源系统") @XText("来源系统")
@TableField @TableField
private String systemSource; private String systemSource;
@XText("更新时间")
@TableField
private Date updateTime;
} }
...@@ -6,7 +6,6 @@ import cn.hutool.core.date.DateTime; ...@@ -6,7 +6,6 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.base.service.BasePhotovoltaicPlantCloudService; import pps.cloud.base.service.BasePhotovoltaicPlantCloudService;
...@@ -32,15 +31,11 @@ import pps.cloud.system.service.data.sys_area.GetSysAreaOutput; ...@@ -32,15 +31,11 @@ import pps.cloud.system.service.data.sys_area.GetSysAreaOutput;
import pps.cloud.system.service.data.sys_organization.GetAllOuListByOuIdInput; import pps.cloud.system.service.data.sys_organization.GetAllOuListByOuIdInput;
import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewOutput; import pps.cloud.system.service.data.sys_organization.GetSysOrganizationViewOutput;
import pps.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
import pps.core.prediction.constant.ThirdPartyApiConstant;
import pps.core.prediction.entity.*; import pps.core.prediction.entity.*;
import pps.core.prediction.enums.BusinessError; import pps.core.prediction.enums.BusinessError;
import pps.core.prediction.mapper.*; import pps.core.prediction.mapper.*;
import pps.core.prediction.service.data.energy_consumption_analysis.DynamicQueryEnergyConsumptionAnalysisViewOutput; import pps.core.prediction.service.data.energy_consumption_analysis.DynamicQueryEnergyConsumptionAnalysisViewOutput;
import pps.core.prediction.service.data.home_page.*; import pps.core.prediction.service.data.home_page.*;
import pps.core.prediction.service.data.third_current_well_condition.GetThirdCurrentWellConditionViewOutput;
import pps.core.prediction.service.data.third_daily_accumulation.GetCumulativePowerGenerationOutput;
import pps.core.prediction.utils.ServiceUtil;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -171,23 +166,24 @@ public class HomePageService { ...@@ -171,23 +166,24 @@ public class HomePageService {
@XText("首页模块--井场实时监控") @XText("首页模块--井场实时监控")
@XApiGet @XApiGet
public XSingleResult<GetWellOverviewViewOutput> getWellOverview(XContext context, GetStationViewInput input) { public XSingleResult<GetWellOverviewViewOutput> getWellOverview(XContext context, GetStationViewInput input) {
DateTime beginOfDay = DateUtil.beginOfDay(DateUtil.date());
String stationId = input.getStationId(); String stationId = input.getStationId();
int openWellNumber = 0; int openWellNumber = 0;
int stopWellNumber = 0; int stopWellNumber = 0;
BigDecimal cumulativeProduction = BigDecimal.ZERO; BigDecimal cumulativeProduction = BigDecimal.ZERO;
BigDecimal powerGeneration = BigDecimal.ZERO; BigDecimal powerGeneration = BigDecimal.ZERO;
BigDecimal powerConsumption = BigDecimal.ZERO; BigDecimal powerConsumption = BigDecimal.ZERO;
try {
//实时井口 //实时井口
String wellResult = ServiceUtil.doPostFormCq(context,
ThirdPartyApiConstant.CQ_WELL_REAL_PV_DATA,
new HashMap<>(0));
List<GetThirdCurrentWellConditionViewOutput> wellList = JSON.parseArray(wellResult, GetThirdCurrentWellConditionViewOutput.class);
if (CollUtil.isNotEmpty(wellList)) {
Set<String> set = this.getWellList(context, stationId).stream() Set<String> set = this.getWellList(context, stationId).stream()
.map(DynamicQueryBaseWellheadOutput::getWellNumber) .map(DynamicQueryBaseWellheadOutput::getWellNumber)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
for (GetThirdCurrentWellConditionViewOutput well : wellList) { ThirdCurrentWellConditionMapper wellMapper = context.getBean(ThirdCurrentWellConditionMapper.class);
List<ThirdCurrentWellConditionEnt> wellList = wellMapper.selectList(new LambdaQueryWrapper<ThirdCurrentWellConditionEnt>()
.in(ThirdCurrentWellConditionEnt::getWellNumber, set)
.ge(ThirdCurrentWellConditionEnt::getUpdateTime, beginOfDay)
);
if (CollUtil.isNotEmpty(wellList)) {
for (ThirdCurrentWellConditionEnt well : wellList) {
if (set.contains(well.getWellNumber())) { if (set.contains(well.getWellNumber())) {
if (CharSequenceUtil.equals(well.getWellStatus(), "开井")) { if (CharSequenceUtil.equals(well.getWellStatus(), "开井")) {
openWellNumber++; openWellNumber++;
...@@ -198,31 +194,29 @@ public class HomePageService { ...@@ -198,31 +194,29 @@ public class HomePageService {
} }
} }
//实时站 //实时站
String stationResult = ServiceUtil.doPostFormCq(context, set = this.getPlantList(context, stationId, null).stream()
ThirdPartyApiConstant.CQ_GROUP_REAL_PV_DATA,
new HashMap<>(0));
List<GetCumulativePowerGenerationOutput> stationList = JSON.parseArray(stationResult, GetCumulativePowerGenerationOutput.class);
if (CollUtil.isNotEmpty(stationList)) {
Set<String> set = this.getPlantList(context, stationId, null).stream()
.map(GetBasePhotovoltaicPlantCloudOutput::getStationName) .map(GetBasePhotovoltaicPlantCloudOutput::getStationName)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
for (GetCumulativePowerGenerationOutput station : stationList) { ThirdDailyAccumulationUpdateMapper mapper = context.getBean(ThirdDailyAccumulationUpdateMapper.class);
if (set.contains(station.getStationName())) { ThirdDailyAccumulationUpdateEnt ent = mapper.selectOne(new QueryWrapper<ThirdDailyAccumulationUpdateEnt>()
cumulativeProduction = cumulativeProduction.add(Optional.ofNullable(station.getDailyLiquidProduction()).orElse(BigDecimal.ZERO)); .select("IFNULL( ROUND( SUM( photovoltaic_power ), 2 ), 0 ) AS photovoltaic_power",
powerGeneration = powerGeneration.add(Optional.ofNullable(station.getPhotovoltaicPower()).orElse(BigDecimal.ZERO)); "IFNULL( ROUND( SUM( daily_electricity_consumption ), 2 ), 0 ) AS daily_electricity_consumption",
powerConsumption = powerConsumption.add(Optional.ofNullable(station.getDailyElectricityConsumption()).orElse(BigDecimal.ZERO)); "IFNULL( ROUND( SUM( daily_liquid_production ), 2 ), 0 ) AS daily_liquid_production")
} .lambda()
} .eq(ThirdDailyAccumulationUpdateEnt::getSaveDate, beginOfDay)
} .in(ThirdDailyAccumulationUpdateEnt::getStationName, set)
} catch (Exception e) { );
context.getLogger().error(e); if (ObjectUtil.isNotNull(ent)) {
cumulativeProduction = ent.getDailyLiquidProduction();
powerGeneration = ent.getPhotovoltaicPower();
powerConsumption = ent.getDailyElectricityConsumption();
} }
return XSingleResult.success(GetWellOverviewViewOutput.builder() return XSingleResult.success(GetWellOverviewViewOutput.builder()
.openWellNumber(openWellNumber) .openWellNumber(openWellNumber)
.stopWellNumber(stopWellNumber) .stopWellNumber(stopWellNumber)
.cumulativeProduction(cumulativeProduction.setScale(2, RoundingMode.HALF_UP)) .cumulativeProduction(cumulativeProduction)
.powerGeneration(powerGeneration.setScale(2, RoundingMode.HALF_UP)) .powerGeneration(powerGeneration)
.powerConsumption(powerConsumption.setScale(2, RoundingMode.HALF_UP)) .powerConsumption(powerConsumption)
.build()); .build());
} }
......
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
well_status, well_status,
cumulative_production, cumulative_production,
running_time, running_time,
system_source system_source,
update_time
</sql> </sql>
<select id="selectOne" parameterType="pps.core.prediction.entity.ThirdCurrentWellConditionView" <select id="selectOne" parameterType="pps.core.prediction.entity.ThirdCurrentWellConditionView"
resultMap="BaseResultMap"> resultMap="BaseResultMap">
......
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