Commit d3a26ae6 authored by ZWT's avatar ZWT

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

1.能耗分析模块功能重构,新增今日/昨日/同期电量统计查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
2.能耗分析模块功能重构,新增今日天气查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
3.能耗分析模块功能重构,新增井场用能分析查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
4.能耗分析模块功能重构,新增井场发电趋势查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
5.能耗分析模块功能重构,新增井场实时监控查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 703bad72
......@@ -31,4 +31,7 @@ public class DynamicQueryBaseWellheadInput {
@XText("组织ID")
private String ouId;
@XText("组织ID集合")
private List<String> ouIds;
}
......@@ -40,6 +40,7 @@ public class BaseWellheadCloudServiceImpl implements IBaseWellheadCloudService {
List<String> wellheadIds = input.getWellheadIds();
List<String> wellNumbers = input.getWellNumbers();
String ouId = input.getOuId();
List<String> ouIds = input.getOuIds();
BaseWellheadMapper mapper = context.getBean(BaseWellheadMapper.class);
List<BaseWellheadEnt> list = mapper.selectList(
new LambdaQueryWrapper<BaseWellheadEnt>()
......@@ -48,6 +49,7 @@ public class BaseWellheadCloudServiceImpl implements IBaseWellheadCloudService {
.eq(CharSequenceUtil.isNotBlank(ouId), BaseWellheadEnt::getOuId, ouId)
.in(CollUtil.isNotEmpty(wellheadIds), BaseModel::getId, wellheadIds)
.in(CollUtil.isNotEmpty(wellNumbers), BaseWellheadEnt::getWellNumber, wellNumbers)
.in(CollUtil.isNotEmpty(ouIds), BaseWellheadEnt::getOuId, ouIds)
);
return XListResult.success(XCopyUtils.copyNewList(
list,
......
......@@ -49,4 +49,8 @@ public class ThirdCurrentWellConditionView implements Serializable {
@XText("来源系统")
@TableField
private String systemSource;
@XText("更新时间")
@TableField
private Date updateTime;
}
......@@ -5,31 +5,32 @@ import cn.hutool.core.date.DateField;
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import pps.cloud.base.service.BasePhotovoltaicPlantCloudService;
import pps.cloud.base.service.IBasePowerLineCloudService;
import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudInput;
import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudOutput;
import pps.cloud.base.service.IBaseWellheadCloudService;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineInput;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantViewOutput;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadInput;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadViewOutput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput;
import pps.cloud.system.service.SysOrganizationCloudService;
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.ThirdActivePowerViewMapper;
import pps.core.prediction.mapper.ThirdDailyAccumulationUpdateMapper;
import pps.core.prediction.mapper.ThirdDailyAccumulationUpdateViewMapper;
import pps.core.prediction.mapper.ThirdWellAvgActivePowerViewMapper;
import pps.core.prediction.mapper.*;
import pps.core.prediction.service.data.energy_consumption_analysis.*;
import pps.core.prediction.service.data.home_page.GetPowerAnalyseOutput;
import pps.core.prediction.service.data.third_current_well_condition.GetThirdCurrentWellConditionOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
......@@ -239,7 +240,71 @@ public class EnergyConsumptionAnalysisService {
/*------------------------------ 井场实时分析 ------------------------------*/
/**
* 井场实时监控
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult }<{@link GetWellFieldSituationOutput }>
*/
@XText("井场实时分析--井场实时监控")
@XApiGet
public XSingleResult<GetWellFieldSituationOutput> wellFieldSituation(XContext context, GetEnergyConsumptionAnalysisInput input) {
int sumWellNumber = 0;
int normallyOpenWellNumber = 0;
int interOpenWellNumber = 0;
int openWellNumber = 0;
int stopWellNumber = 0;
List<GetThirdCurrentWellConditionOutput> currentList = Collections.emptyList();
GetWellFieldSituationOutput output = new GetWellFieldSituationOutput();
List<DynamicQueryBaseWellheadOutput> wellList = this.getWellListByOuId(context, this.getOrgIdsByPath(context, input.getOuId()));
if (CollUtil.isNotEmpty(wellList)) {
sumWellNumber = wellList.size();
Set<String> set = new HashSet<>(wellList.size());
for (DynamicQueryBaseWellheadOutput out : wellList) {
set.add(out.getWellNumber());
if (CharSequenceUtil.equals(out.getRunTypeKey(), BusinessConstant.INTERVAL_PUMPING_WELL)) {
interOpenWellNumber++;
} else {
normallyOpenWellNumber++;
}
}
ThirdCurrentWellConditionMapper mapper = context.getBean(ThirdCurrentWellConditionMapper.class);
List<ThirdCurrentWellConditionEnt> list = mapper.selectList(new LambdaQueryWrapper<ThirdCurrentWellConditionEnt>()
.in(ThirdCurrentWellConditionEnt::getWellNumber, set)
);
if (CollUtil.isNotEmpty(list)) {
currentList = new ArrayList<>(list.size());
for (ThirdCurrentWellConditionEnt ent : list) {
if (CharSequenceUtil.equals(ent.getWellStatus(), "开井")) {
openWellNumber++;
} else {
stopWellNumber++;
}
Date nextTime = ent.getNextTime();
if (ObjectUtil.isNotNull(nextTime) && CharSequenceUtil.contains(DateUtil.date(ent.getNextTime()).toString(), ThirdPartyApiConstant.DATE_FLAG)) {
nextTime = null;
}
currentList.add(
GetThirdCurrentWellConditionOutput.builder()
.wellNumber(ent.getWellNumber())
.nextTime(nextTime)
.wellStatus(ent.getWellStatus())
.cumulativeProduction(ent.getCumulativeProduction())
.runningTime(ent.getRunningTime())
.build()
);
}
}
}
output.setList(currentList);
output.setSumWellNumber(sumWellNumber);
output.setNormallyOpenWellNumber(normallyOpenWellNumber);
output.setInterOpenWellNumber(interOpenWellNumber);
output.setOpenWellNumber(openWellNumber);
output.setStopWellNumber(stopWellNumber);
return XSingleResult.success(output);
}
/*------------------------------ 能耗分析(废弃) ------------------------------*/
......@@ -514,22 +579,6 @@ public class EnergyConsumptionAnalysisService {
return lineList.getResult();
}
/**
* 查询组织列表下所有电站
*
* @param context 上下文
* @param ouIdList ou-id列表
* @return {@link List }<{@link GetBasePhotovoltaicPlantCloudOutput }>
*/
private List<GetBasePhotovoltaicPlantCloudOutput> getBasePhotovoltaicPlantList(XContext context, List<String> ouIdList) {
BasePhotovoltaicPlantCloudService service = context.getBean(BasePhotovoltaicPlantCloudService.class);
XListResult<GetBasePhotovoltaicPlantCloudOutput> lineList = service.getBasePhotovoltaicPlantList(context, GetBasePhotovoltaicPlantCloudInput.builder()
.ouIds(ouIdList)
.build());
lineList.throwIfFail();
return lineList.getResult();
}
/**
* 获取输电线井口列表
*
......@@ -583,4 +632,20 @@ public class EnergyConsumptionAnalysisService {
}
return powerMap;
}
/**
* 获取井口列表
*
* @param context 上下文
* @param ouIds ou-ids
* @return {@link List }<{@link DynamicQueryBaseWellheadOutput }>
*/
private List<DynamicQueryBaseWellheadOutput> getWellListByOuId(XContext context, List<String> ouIds) {
IBaseWellheadCloudService service = context.getBean(IBaseWellheadCloudService.class);
XListResult<DynamicQueryBaseWellheadOutput> result = service.queryBaseWellheadListByParam(context, DynamicQueryBaseWellheadInput.builder()
.ouIds(ouIds)
.build());
result.throwIfFail();
return result.getResult();
}
}
......@@ -143,6 +143,7 @@ public class ThirdDataAccessCloudServiceImpl implements IThirdDataAccessCloudSer
if (CollUtil.isEmpty(outputs)) {
return XServiceResult.OK;
}
DateTime date = DateUtil.date();
//先删后增
List<ThirdCurrentWellConditionView> dtoList = new ArrayList<>(outputs.size());
for (GetThirdCurrentWellConditionViewOutput o : outputs) {
......@@ -154,6 +155,7 @@ public class ThirdDataAccessCloudServiceImpl implements IThirdDataAccessCloudSer
.wellStatus(Optional.ofNullable(o.getWellStatus()).orElse("停井"))
.cumulativeProduction(Optional.ofNullable(o.getCumulativeProduction()).orElse(BigDecimal.ZERO))
.runningTime(o.getRunningTime())
.updateTime(date)
.build()
);
}
......@@ -386,7 +388,7 @@ public class ThirdDataAccessCloudServiceImpl implements IThirdDataAccessCloudSer
return XServiceResult.OK;
});
}
/**
* 第三有功功率历史
*
......
package pps.core.prediction.service.data.energy_consumption_analysis;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import pps.core.prediction.service.data.third_current_well_condition.GetThirdCurrentWellConditionOutput;
import xstartup.annotation.XText;
import java.util.List;
/**
* 井场实时监控
*
* @author ZWT
* @date 2024/05/21 17:32
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetWellFieldSituationOutput {
@XText("总井数")
private Integer sumWellNumber;
@XText("常开井数")
private Integer normallyOpenWellNumber;
@XText("间开井数")
private Integer interOpenWellNumber;
@XText("开井数量")
private Integer openWellNumber;
@XText("停井数量")
private Integer stopWellNumber;
@XText("井口列表")
private List<GetThirdCurrentWellConditionOutput> list;
}
package pps.core.prediction.service.data.third_current_well_condition;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.Date;
/**
* 实时开关井数据
*
* @author ZWT
* @date 2024/05/21 18:07
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetThirdCurrentWellConditionOutput {
@XText("井号")
private String wellNumber;
@XText("下次启停时间")
private Date nextTime;
@XText("井口状态(开/停井)")
private String wellStatus;
@XText("累计产液量(m³)")
private BigDecimal cumulativeProduction;
@XText("开井时长(h)")
private BigDecimal runningTime;
}
......@@ -9,6 +9,7 @@
<result column="cumulative_production" property="cumulativeProduction" jdbcType="DECIMAL"/>
<result column="running_time" property="runningTime" jdbcType="DECIMAL"/>
<result column="system_source" property="systemSource" jdbcType="VARCHAR"/>
<result column="update_time" property="updateTime" jdbcType="DATE"/>
</resultMap>
<sql id="Base_Column_List">
id
......@@ -48,7 +49,7 @@
<insert id="batchInsertList" parameterType="list">
INSERT INTO third_current_well_condition (well_number, next_time, well_status, cumulative_production,
running_time, system_source)
running_time, system_source, update_time)
VALUES
<foreach collection="list" item="item" separator=",">
(
......@@ -57,7 +58,8 @@
#{item.wellStatus},
#{item.cumulativeProduction},
#{item.runningTime},
#{item.systemSource}
#{item.systemSource},
#{item.updateTime}
)
</foreach>
</insert>
......
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