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 {
@XText("来源系统")
@TableField
private String systemSource;
@XText("更新时间")
@TableField
private Date updateTime;
}
......@@ -6,7 +6,6 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
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.QueryWrapper;
import pps.cloud.base.service.BasePhotovoltaicPlantCloudService;
......@@ -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.GetSysOrganizationViewOutput;
import pps.core.common.constant.BusinessConstant;
import pps.core.prediction.constant.ThirdPartyApiConstant;
import pps.core.prediction.entity.*;
import pps.core.prediction.enums.BusinessError;
import pps.core.prediction.mapper.*;
import pps.core.prediction.service.data.energy_consumption_analysis.DynamicQueryEnergyConsumptionAnalysisViewOutput;
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.XText;
import xstartup.base.XContext;
......@@ -171,58 +166,57 @@ public class HomePageService {
@XText("首页模块--井场实时监控")
@XApiGet
public XSingleResult<GetWellOverviewViewOutput> getWellOverview(XContext context, GetStationViewInput input) {
DateTime beginOfDay = DateUtil.beginOfDay(DateUtil.date());
String stationId = input.getStationId();
int openWellNumber = 0;
int stopWellNumber = 0;
BigDecimal cumulativeProduction = BigDecimal.ZERO;
BigDecimal powerGeneration = 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()
.map(DynamicQueryBaseWellheadOutput::getWellNumber)
.collect(Collectors.toSet());
for (GetThirdCurrentWellConditionViewOutput well : wellList) {
if (set.contains(well.getWellNumber())) {
if (CharSequenceUtil.equals(well.getWellStatus(), "开井")) {
openWellNumber++;
} else {
stopWellNumber++;
}
}
}
}
//实时站
String stationResult = ServiceUtil.doPostFormCq(context,
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)
.collect(Collectors.toSet());
for (GetCumulativePowerGenerationOutput station : stationList) {
if (set.contains(station.getStationName())) {
cumulativeProduction = cumulativeProduction.add(Optional.ofNullable(station.getDailyLiquidProduction()).orElse(BigDecimal.ZERO));
powerGeneration = powerGeneration.add(Optional.ofNullable(station.getPhotovoltaicPower()).orElse(BigDecimal.ZERO));
powerConsumption = powerConsumption.add(Optional.ofNullable(station.getDailyElectricityConsumption()).orElse(BigDecimal.ZERO));
//实时井口
Set<String> set = this.getWellList(context, stationId).stream()
.map(DynamicQueryBaseWellheadOutput::getWellNumber)
.collect(Collectors.toSet());
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 (CharSequenceUtil.equals(well.getWellStatus(), "开井")) {
openWellNumber++;
} else {
stopWellNumber++;
}
}
}
} catch (Exception e) {
context.getLogger().error(e);
}
//实时站
set = this.getPlantList(context, stationId, null).stream()
.map(GetBasePhotovoltaicPlantCloudOutput::getStationName)
.collect(Collectors.toSet());
ThirdDailyAccumulationUpdateMapper mapper = context.getBean(ThirdDailyAccumulationUpdateMapper.class);
ThirdDailyAccumulationUpdateEnt ent = mapper.selectOne(new QueryWrapper<ThirdDailyAccumulationUpdateEnt>()
.select("IFNULL( ROUND( SUM( photovoltaic_power ), 2 ), 0 ) AS photovoltaic_power",
"IFNULL( ROUND( SUM( daily_electricity_consumption ), 2 ), 0 ) AS daily_electricity_consumption",
"IFNULL( ROUND( SUM( daily_liquid_production ), 2 ), 0 ) AS daily_liquid_production")
.lambda()
.eq(ThirdDailyAccumulationUpdateEnt::getSaveDate, beginOfDay)
.in(ThirdDailyAccumulationUpdateEnt::getStationName, set)
);
if (ObjectUtil.isNotNull(ent)) {
cumulativeProduction = ent.getDailyLiquidProduction();
powerGeneration = ent.getPhotovoltaicPower();
powerConsumption = ent.getDailyElectricityConsumption();
}
return XSingleResult.success(GetWellOverviewViewOutput.builder()
.openWellNumber(openWellNumber)
.stopWellNumber(stopWellNumber)
.cumulativeProduction(cumulativeProduction.setScale(2, RoundingMode.HALF_UP))
.powerGeneration(powerGeneration.setScale(2, RoundingMode.HALF_UP))
.powerConsumption(powerConsumption.setScale(2, RoundingMode.HALF_UP))
.cumulativeProduction(cumulativeProduction)
.powerGeneration(powerGeneration)
.powerConsumption(powerConsumption)
.build());
}
......
......@@ -19,7 +19,8 @@
well_status,
cumulative_production,
running_time,
system_source
system_source,
update_time
</sql>
<select id="selectOne" parameterType="pps.core.prediction.entity.ThirdCurrentWellConditionView"
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