Commit 54ac8cf4 authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.长庆演示首页功能开发,新增查询井场/场站列表接口,添加接口文档并完成接口冒烟测试;
2.长庆演示首页功能开发,新增总览信息统计接口,添加接口文档并完成接口冒烟测试;
3.长庆演示首页功能开发,新增用能分析统计接口,添加接口文档并完成接口冒烟测试;
4.长庆演示首页功能开发,新增累计用电统计接口,添加接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 7e2ecaba
...@@ -6,6 +6,7 @@ import lombok.Data; ...@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
...@@ -33,7 +34,7 @@ public class DynamicQueryBasePowerLineInput { ...@@ -33,7 +34,7 @@ public class DynamicQueryBasePowerLineInput {
private String ouId; private String ouId;
@XText("组织机构ID集合") @XText("组织机构ID集合")
private List<String> ouIdList; private Collection<String> ouIdList;
@XText("上级线路ID") @XText("上级线路ID")
private String upperLineId; private String upperLineId;
......
...@@ -17,4 +17,7 @@ public class DynamicQueryBasePowerLineOutput { ...@@ -17,4 +17,7 @@ public class DynamicQueryBasePowerLineOutput {
@XText("线路名称") @XText("线路名称")
private String lineName; private String lineName;
@XText("组织机构ID")
private String ouId;
} }
...@@ -103,13 +103,13 @@ public class BasePowerLineCloudServiceImpl implements IBasePowerLineCloudService ...@@ -103,13 +103,13 @@ public class BasePowerLineCloudServiceImpl implements IBasePowerLineCloudService
*/ */
@Override @Override
public XListResult<DynamicQueryBasePowerLineOutput> getBasePowerLineListByOuIdList(XContext context, DynamicQueryBasePowerLineInput input) { public XListResult<DynamicQueryBasePowerLineOutput> getBasePowerLineListByOuIdList(XContext context, DynamicQueryBasePowerLineInput input) {
List<String> ouIdList = input.getOuIdList(); Collection<String> ouIdList = input.getOuIdList();
if (CollUtil.isEmpty(ouIdList)) { if (CollUtil.isEmpty(ouIdList)) {
return XListResult.error(context, BusinessError.Missing_Organization_ID); return XListResult.error(context, BusinessError.Missing_Organization_ID);
} }
BasePowerLineMapper mapper = context.getBean(BasePowerLineMapper.class); BasePowerLineMapper mapper = context.getBean(BasePowerLineMapper.class);
List<BasePowerLineEnt> selectList = mapper.selectList(new LambdaQueryWrapper<BasePowerLineEnt>() List<BasePowerLineEnt> selectList = mapper.selectList(new LambdaQueryWrapper<BasePowerLineEnt>()
.select(BaseModel::getId, BasePowerLineEnt::getLineName) .select(BaseModel::getId, BasePowerLineEnt::getLineName, BasePowerLineEnt::getOuId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE) .eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.in(BasePowerLineEnt::getOuId, ouIdList) .in(BasePowerLineEnt::getOuId, ouIdList)
); );
......
...@@ -30,6 +30,10 @@ public class EnergyConsumptionAnalysisEnt implements Serializable { ...@@ -30,6 +30,10 @@ public class EnergyConsumptionAnalysisEnt implements Serializable {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
@XText("井组名称(线路/光伏电站)")
@TableField
private String stationName;
@XText("线路ID") @XText("线路ID")
@TableField @TableField
private String lineId; private String lineId;
......
package pps.core.prediction.service; package pps.core.prediction.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
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 pps.cloud.base.service.BasePhotovoltaicPlantCloudService; import pps.cloud.base.service.BasePhotovoltaicPlantCloudService;
import pps.cloud.base.service.IBaseEnergyStorageCloudService; import pps.cloud.base.service.IBaseEnergyStorageCloudService;
import pps.cloud.base.service.IBasePowerLineCloudService; import pps.cloud.base.service.IBasePowerLineCloudService;
...@@ -15,15 +19,15 @@ import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutp ...@@ -15,15 +19,15 @@ import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutp
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput; import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput; import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput;
import pps.cloud.system.service.SysOrganizationCloudService; import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.data.GetAllOuListByOuIdInput;
import pps.cloud.system.service.data.GetSysOrganizationViewOutput; import pps.cloud.system.service.data.GetSysOrganizationViewOutput;
import pps.core.prediction.entity.EnergyConsumptionAnalysisEnt;
import pps.core.prediction.entity.ThirdCurrentWellConditionEnt; import pps.core.prediction.entity.ThirdCurrentWellConditionEnt;
import pps.core.prediction.mapper.EnergyConsumptionAnalysisMapper;
import pps.core.prediction.mapper.ThirdCurrentWellConditionMapper; import pps.core.prediction.mapper.ThirdCurrentWellConditionMapper;
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.energy_consumption_analysis.QueryEnergyConsumptionAnalysisInput; import pps.core.prediction.service.data.energy_consumption_analysis.QueryEnergyConsumptionAnalysisInput;
import pps.core.prediction.service.data.home_page.GetOverviewViewOutput; import pps.core.prediction.service.data.home_page.*;
import pps.core.prediction.service.data.home_page.GetStationViewInput;
import pps.core.prediction.service.data.home_page.GetStationViewOutput;
import pps.core.prediction.service.data.home_page.GetWellOverviewViewOutput;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -33,9 +37,7 @@ import xstartup.feature.api.annotation.XApiAnonymous; ...@@ -33,9 +37,7 @@ import xstartup.feature.api.annotation.XApiAnonymous;
import xstartup.feature.api.annotation.XApiGet; import xstartup.feature.api.annotation.XApiGet;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -171,8 +173,105 @@ public class HomePageService { ...@@ -171,8 +173,105 @@ public class HomePageService {
.build()); .build());
} }
/**
* 累积用电
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetSumPowerConsumptionOutput}>
*/
@XApiAnonymous
@XText("首页模块--累积用电")
@XApiGet
public XSingleResult<GetSumPowerConsumptionOutput> getSumPowerConsumption(XContext context, GetStationViewInput input) {
String stationId = input.getStationId();
DateTime startTime = DateUtil.beginOfDay(DateUtil.date());
DateTime beginTime = DateUtil.offsetDay(startTime, -7);
DateTime endTime = DateUtil.offsetDay(startTime, -1);
List<GetStationPowerConsumption> stationList;
BigDecimal powerConsumption = BigDecimal.ZERO;
EnergyConsumptionAnalysisMapper mapper = context.getBean(EnergyConsumptionAnalysisMapper.class);
if (CharSequenceUtil.isBlank(stationId)) {
stationId = "446285aa-ac58-435e-84af-19fc62a8267f";
Map<String, String> collect = this.getOrgIdsByPath(context, stationId).stream()
.collect(Collectors.toMap(GetSysOrganizationViewOutput::getId, GetSysOrganizationViewOutput::getOuName));
Map<String, List<DynamicQueryBasePowerLineOutput>> listMap = this.getBasePowerLineListByOuIdList(context, collect.keySet()).stream()
.collect(Collectors.groupingBy(DynamicQueryBasePowerLineOutput::getOuId));
stationList = new ArrayList<>(4);
for (Map.Entry<String, List<DynamicQueryBasePowerLineOutput>> entry : listMap.entrySet()) {
List<String> lineIdList = entry.getValue().stream()
.map(DynamicQueryBasePowerLineOutput::getId)
.collect(Collectors.toList());
EnergyConsumptionAnalysisEnt ent = mapper.selectOne(new QueryWrapper<EnergyConsumptionAnalysisEnt>()
.select("IFNULL( SUM( power_consumption ), 0 ) AS power_consumption")
.lambda()
.in(EnergyConsumptionAnalysisEnt::getLineId, lineIdList)
.between(EnergyConsumptionAnalysisEnt::getDataDate, beginTime, endTime)
);
stationList.add(GetStationPowerConsumption.builder()
.stationName(collect.get(entry.getKey()))
.powerConsumption(ent.getPowerConsumption())
.build());
powerConsumption = powerConsumption.add(ent.getPowerConsumption());
}
} else {
List<String> lineIdList = this.getBasePowerLineListByOuIdList(context, CollUtil.list(false, stationId)).stream().map(DynamicQueryBasePowerLineOutput::getId).collect(Collectors.toList());
List<EnergyConsumptionAnalysisEnt> list = mapper.selectList(new QueryWrapper<EnergyConsumptionAnalysisEnt>()
.select("IFNULL( SUM( power_consumption ), 0 ) AS power_consumption", "station_name")
.lambda()
.in(EnergyConsumptionAnalysisEnt::getLineId, lineIdList)
.between(EnergyConsumptionAnalysisEnt::getDataDate, beginTime, endTime)
.groupBy(EnergyConsumptionAnalysisEnt::getStationName)
);
stationList = new ArrayList<>(list.size());
for (EnergyConsumptionAnalysisEnt ent : list) {
stationList.add(GetStationPowerConsumption.builder()
.stationName(ent.getStationName())
.powerConsumption(ent.getPowerConsumption())
.build());
powerConsumption = powerConsumption.add(ent.getPowerConsumption());
}
}
return XSingleResult.success(GetSumPowerConsumptionOutput.builder()
.powerConsumption(powerConsumption)
.stationList(stationList)
.build());
}
/*------------------------------------------------- private ---------------------------------------------------------*/ /*------------------------------------------------- private ---------------------------------------------------------*/
/**
* 查询组织列表下所有线路
*
* @param context 上下文
* @param ouIdList ou-id列表
* @return {@link List}<{@link DynamicQueryBasePowerLineOutput}>
*/
private List<DynamicQueryBasePowerLineOutput> getBasePowerLineListByOuIdList(XContext context, Collection<String> ouIdList) {
IBasePowerLineCloudService basePowerLineCloudService = context.getBean(IBasePowerLineCloudService.class);
XListResult<DynamicQueryBasePowerLineOutput> lineList = basePowerLineCloudService.getBasePowerLineListByOuIdList(context, DynamicQueryBasePowerLineInput.builder()
.ouIdList(ouIdList)
.build());
lineList.throwIfFail();
return lineList.getResult();
}
/**
* 获取所有path包含组织ID的组织
*
* @param context 上下文
* @param ouId ou id
* @return {@link List}<{@link GetSysOrganizationViewOutput}>
*/
private List<GetSysOrganizationViewOutput> getOrgIdsByPath(XContext context, String ouId) {
SysOrganizationCloudService organizationCloudService = context.getBean(SysOrganizationCloudService.class);
GetAllOuListByOuIdInput ouIdInput = new GetAllOuListByOuIdInput();
ouIdInput.setOuId(ouId);
XListResult<GetSysOrganizationViewOutput> allListByOuId = organizationCloudService.getAllListByOuId(context, ouIdInput);
allListByOuId.throwIfFail();
return allListByOuId.getResult();
}
/** /**
* 获取井口列表 * 获取井口列表
* *
......
package pps.core.prediction.service.data.home_page;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.math.BigDecimal;
/**
* 井组发电量
*
* @author ZWT
* @date 2024/03/26 11:07
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetStationPowerConsumption {
@XText("井组名称")
String stationName;
@XText("用电量(kWh)")
private BigDecimal powerConsumption;
}
package pps.core.prediction.service.data.home_page;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.math.BigDecimal;
import java.util.List;
/**
* 累积用电
*
* @author ZWT
* @date 2024/03/26
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetSumPowerConsumptionOutput {
@XText("用电量(kWh)")
private BigDecimal powerConsumption;
@XText("井组列表")
List<GetStationPowerConsumption> stationList;
}
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<mapper namespace="pps.core.prediction.mapper.EnergyConsumptionAnalysisViewMapper"> <mapper namespace="pps.core.prediction.mapper.EnergyConsumptionAnalysisViewMapper">
<resultMap id="BaseResultMap" type="pps.core.prediction.entity.EnergyConsumptionAnalysisView"> <resultMap id="BaseResultMap" type="pps.core.prediction.entity.EnergyConsumptionAnalysisView">
<id column="id" property="id" jdbcType="BIGINT"/> <id column="id" property="id" jdbcType="BIGINT"/>
<result column="station_name" property="stationName" jdbcType="VARCHAR"/>
<result column="line_id" property="lineId" jdbcType="VARCHAR"/> <result column="line_id" property="lineId" jdbcType="VARCHAR"/>
<result column="power_generation" property="powerGeneration" jdbcType="DECIMAL"/> <result column="power_generation" property="powerGeneration" jdbcType="DECIMAL"/>
<result column="power_consumption" property="powerConsumption" jdbcType="DECIMAL"/> <result column="power_consumption" property="powerConsumption" jdbcType="DECIMAL"/>
...@@ -11,6 +12,7 @@ ...@@ -11,6 +12,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id id
, ,
station_name,
line_id, line_id,
power_generation, power_generation,
power_consumption, power_consumption,
......
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