Commit 0bbdac01 authored by ZWT's avatar ZWT

feat[零碳项目]: 松原演示

[1.统计分析-井组监控页功能开发,开发井组生产详情接口,完成接口冒烟测试并编写线上接口文档生成接口用例;
]
parent e3b1accf
...@@ -2,6 +2,7 @@ package pps.cloud.space.service; ...@@ -2,6 +2,7 @@ package pps.cloud.space.service;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendInput; import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendInput;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendOutput; import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendOutput;
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.GetWellDailyElectricityTrendInput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendOutput; import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendOutput;
import xstartup.annotation.XService; import xstartup.annotation.XService;
...@@ -60,4 +61,14 @@ public interface IDailyElectricityTrendCloudService { ...@@ -60,4 +61,14 @@ public interface IDailyElectricityTrendCloudService {
*/ */
@XText("日用电趋势计算Cloud模块--井口分析分页") @XText("日用电趋势计算Cloud模块--井口分析分页")
XPageResult<GetWellDailyElectricityTrendOutput> queryWellheadAnalysisPage(XContext context, GetWellDailyElectricityTrendInput input); XPageResult<GetWellDailyElectricityTrendOutput> queryWellheadAnalysisPage(XContext context, GetWellDailyElectricityTrendInput input);
/**
* 查询井日平均值
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult }<{@link GetWellDailyElectricityTrendOutput }>
*/
@XText("日用电趋势计算Cloud模块--井日平均值")
XSingleResult<GetWellDailyElectricityTrendOutput> queryWellDailyAverage(XContext context, GetWellDailyAverageInput input);
} }
package pps.cloud.space.service.data.well_daily_electricity_trend;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* 用电趋势统计
*
* @author ZWT
* @date 2024/07/26
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetWellDailyAverageInput {
/**
* 开始时间
*/
private Date createDate;
/**
* 井号列表
*/
private List<String> wellNumberList;
/**
* 井号
*/
private String wellNumber;
/**
* 来源系统
*/
private String systemSource;
}
...@@ -35,4 +35,9 @@ public class GetWellDailyElectricityTrendInput extends XPageInput { ...@@ -35,4 +35,9 @@ public class GetWellDailyElectricityTrendInput extends XPageInput {
* 井号 * 井号
*/ */
private String wellNumber; private String wellNumber;
/**
* 来源系统
*/
private String systemSource;
} }
...@@ -36,6 +36,9 @@ public class GetWellDailyElectricityTrendOutput { ...@@ -36,6 +36,9 @@ public class GetWellDailyElectricityTrendOutput {
@XText("日减碳量(吨)") @XText("日减碳量(吨)")
private BigDecimal dailyCarbonReduction; private BigDecimal dailyCarbonReduction;
@XText("日耗电量(kW-h)")
private BigDecimal dailyElectricityConsumption;
@XText("谷电占比(%)") @XText("谷电占比(%)")
private BigDecimal valleyElectricRate; private BigDecimal valleyElectricRate;
......
...@@ -27,18 +27,13 @@ import pps.cloud.prediction.service.data.wellhead_daily_production_situation.Get ...@@ -27,18 +27,13 @@ import pps.cloud.prediction.service.data.wellhead_daily_production_situation.Get
import pps.cloud.space.service.IDailyElectricityTrendCloudService; import pps.cloud.space.service.IDailyElectricityTrendCloudService;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendInput; import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendInput;
import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendOutput; import pps.cloud.space.service.data.line_daily_electricity_trend.GetLineDailyElectricityTrendOutput;
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.GetWellDailyElectricityTrendInput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendOutput; import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendOutput;
import pps.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils; import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.LineDailyElectricityTrendEnt; import pps.core.space.entity.*;
import pps.core.space.entity.LineDailyElectricityTrendView; import pps.core.space.mapper.*;
import pps.core.space.entity.SpaceOptimizeShortDurationView;
import pps.core.space.entity.WellDailyElectricityTrendView;
import pps.core.space.mapper.LineDailyElectricityTrendMapper;
import pps.core.space.mapper.LineDailyElectricityTrendViewMapper;
import pps.core.space.mapper.SpaceOptimizeShortDurationViewMapper;
import pps.core.space.mapper.WellDailyElectricityTrendViewMapper;
import pps.core.space.utils.ServiceUtil; import pps.core.space.utils.ServiceUtil;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -337,6 +332,26 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT ...@@ -337,6 +332,26 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
return XPageResult.success(output, input, pageInfo.getTotal()); return XPageResult.success(output, input, pageInfo.getTotal());
} }
/**
* 查询井日平均值
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult }<{@link GetWellDailyElectricityTrendOutput }>
*/
@Override
public XSingleResult<GetWellDailyElectricityTrendOutput> queryWellDailyAverage(XContext context, GetWellDailyAverageInput input) {
WellDailyElectricityTrendMapper mapper = context.getBean(WellDailyElectricityTrendMapper.class);
WellDailyElectricityTrendEnt ent = mapper.selectOne(new QueryWrapper<WellDailyElectricityTrendEnt>()
.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")
.lambda()
.eq(WellDailyElectricityTrendEnt::getSystemSource, input.getSystemSource())
.in(WellDailyElectricityTrendEnt::getWellNumber, input.getWellNumberList())
);
return XSingleResult.success(XCopyUtils.copyNewObject(ent, GetWellDailyElectricityTrendOutput.class));
}
/*------------------------------------- private -------------------------------------*/ /*------------------------------------- private -------------------------------------*/
/** /**
......
...@@ -29,6 +29,7 @@ import pps.cloud.space.service.data.space_institution_wellhead.GetSpaceInstituti ...@@ -29,6 +29,7 @@ import pps.cloud.space.service.data.space_institution_wellhead.GetSpaceInstituti
import pps.cloud.space.service.data.space_institution_wellhead.GetSpaceInstitutionWellheadOutput; import pps.cloud.space.service.data.space_institution_wellhead.GetSpaceInstitutionWellheadOutput;
import pps.cloud.space.service.data.space_optimize_short_wellhead.GetMonthlyWellCountInput; import pps.cloud.space.service.data.space_optimize_short_wellhead.GetMonthlyWellCountInput;
import pps.cloud.space.service.data.space_optimize_short_wellhead.GetMonthlyWellCountOutput; import pps.cloud.space.service.data.space_optimize_short_wellhead.GetMonthlyWellCountOutput;
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.GetWellDailyElectricityTrendInput;
import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendOutput; import pps.cloud.space.service.data.well_daily_electricity_trend.GetWellDailyElectricityTrendOutput;
import pps.cloud.system.service.SysOrganizationCloudService; import pps.cloud.system.service.SysOrganizationCloudService;
...@@ -806,6 +807,78 @@ public class EnergyConsumptionAnalysisService { ...@@ -806,6 +807,78 @@ public class EnergyConsumptionAnalysisService {
return XPageResult.success(Collections.emptyList(), input, 0); return XPageResult.success(Collections.emptyList(), input, 0);
} }
/*------------------------------ 井组监控 ------------------------------*/
/**
* 井组生产情况
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult }<{@link GetWellProductionStatusOutput }>
*/
@XText("井组监控--井组生产情况")
@XApiGet
public XSingleResult<GetWellProductionStatusOutput> wellProductionStatus(XContext context, GetEnergyConsumptionAnalysisInput input) {
int sumWellNumber = 0;
int normallyOpenWellNumber = 0;
int interOpenWellNumber = 0;
BigDecimal liquidProduction = BigDecimal.ZERO;
BigDecimal electricityConsumption = BigDecimal.ZERO;
BigDecimal carbonReduction = BigDecimal.ZERO;
BigDecimal economicBenefit = BigDecimal.ZERO;
List<String> orgIdsByPath = this.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) {
set.add(out.getWellNumber());
if (CharSequenceUtil.equals(out.getRunTypeKey(), BusinessConstant.INTERVAL_PUMPING_WELL)) {
interOpenWellNumber++;
} else {
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 = this.getPowerLinePlantViewList(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")
.lambda()
.eq(ThirdDailyAccumulationUpdateEnt::getSystemSource, oilFieldCode)
.in(ThirdDailyAccumulationUpdateEnt::getStationName, plantList.stream()
.map(DynamicQueryBasePowerLinePlantViewOutput::getStationName)
.collect(Collectors.toList()))
);
economicBenefit = this.calculateEconomicBenefit(analysisEnt.getPhotovoltaicPower());
carbonReduction = this.calculateCarbonReduction(analysisEnt.getPhotovoltaicPower());
}
return XSingleResult.success(GetWellProductionStatusOutput.builder()
.sumWellNumber(sumWellNumber)
.normallyOpenWellNumber(normallyOpenWellNumber)
.interOpenWellNumber(interOpenWellNumber)
.liquidProduction(liquidProduction)
.electricityConsumption(electricityConsumption)
.carbonReduction(carbonReduction)
.economicBenefit(economicBenefit)
.build());
}
/*------------------------------ 能耗分析(废弃) ------------------------------*/ /*------------------------------ 能耗分析(废弃) ------------------------------*/
/** /**
......
package pps.core.prediction.service.data.energy_consumption_analysis;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.math.BigDecimal;
/**
* 井组生产情况
*
* @author ZWT
* @date 2024/07/26
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetWellProductionStatusOutput {
@XText("总井数")
private Integer sumWellNumber;
@XText("间抽井数")
private Integer normallyOpenWellNumber;
@XText("连抽井数")
private Integer interOpenWellNumber;
@XText("产液量(m³)")
private BigDecimal liquidProduction;
@XText("耗电量(kW-h)")
private BigDecimal electricityConsumption;
@XText("减碳量(吨)")
private BigDecimal carbonReduction;
@XText("经济效益")
private BigDecimal 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