Commit 89d93ec6 authored by ZWT's avatar ZWT

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

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 56fb7760
...@@ -35,10 +35,10 @@ public interface ThirdDailyAccumulationUpdateViewMapper { ...@@ -35,10 +35,10 @@ public interface ThirdDailyAccumulationUpdateViewMapper {
List<ThirdDailyAccumulationUpdateView> selectPowerStatisticsByDate(ThirdDailyAccumulationUpdateView view); List<ThirdDailyAccumulationUpdateView> selectPowerStatisticsByDate(ThirdDailyAccumulationUpdateView view);
/** /**
* 按日统计发电趋势 * 按日统计电量趋势
* *
* @param view 看法 * @param view 看法
* @return {@link List }<{@link ThirdDailyAccumulationUpdateView }> * @return {@link List }<{@link ThirdDailyAccumulationUpdateView }>
*/ */
List<ThirdDailyAccumulationUpdateView> selectPowerGenerationTrendByDate(ThirdDailyAccumulationUpdateView view); List<ThirdDailyAccumulationUpdateView> selectPowerTrendByDate(ThirdDailyAccumulationUpdateView view);
} }
...@@ -163,8 +163,8 @@ public class EnergyConsumptionAnalysisService { ...@@ -163,8 +163,8 @@ public class EnergyConsumptionAnalysisService {
.collect(Collectors.toList()); .collect(Collectors.toList());
//查本期 //查本期
DateTime endTime = DateUtil.offsetDay(input.getEndTime(), 1); DateTime endTime = DateUtil.offsetDay(input.getEndTime(), 1);
nowMap = this.getPowerGenerationMap(context, input.getStartTime(), endTime, collect); nowMap = this.getPowerMap(context, input.getStartTime(), endTime, collect, 1);
lastMap = this.getPowerGenerationMap(context, DateUtil.offset(input.getStartTime(), DateField.YEAR, -1), DateUtil.offset(endTime, DateField.YEAR, -1), collect); lastMap = this.getPowerMap(context, DateUtil.offset(input.getStartTime(), DateField.YEAR, -1), DateUtil.offset(endTime, DateField.YEAR, -1), collect, 1);
} else { } else {
nowMap = Collections.emptyMap(); nowMap = Collections.emptyMap();
lastMap = Collections.emptyMap(); lastMap = Collections.emptyMap();
...@@ -196,25 +196,85 @@ public class EnergyConsumptionAnalysisService { ...@@ -196,25 +196,85 @@ public class EnergyConsumptionAnalysisService {
} }
/** /**
* 用电分析 * 用电趋势
* *
* @param context 上下文 * @param context 上下文
* @param input 输入 * @param input 输入
* @return {@link XListResult }<{@link GetElectricityConsumptionTrendOutput }> * @return {@link XListResult }<{@link GetElectricityConsumptionTrendOutput }>
*/ */
@XText("能耗分析--用电趋势")
@XApiGet
public XListResult<GetElectricityConsumptionTrendOutput> electricityConsumptionTrend(XContext context, QueryEnergyConsumptionAnalysisInput input) {
DynamicQueryBasePowerLinePlantInput plantInput = new DynamicQueryBasePowerLinePlantInput();
String stationName = input.getStationName();
if (CharSequenceUtil.isNotBlank(stationName)) {
plantInput.setLineName(stationName);
} else {
plantInput.setOuIds(this.getOrgIdsByPath(context, input.getOuId()));
}
List<DynamicQueryBasePowerLinePlantViewOutput> plantList = this.getPowerLinePlantViewList(context, plantInput);
Map<Date, BigDecimal> nowMap;
Map<Date, BigDecimal> lastMap;
input.getBetweenDate();
//电站名称列表有值再查
if (CollUtil.isNotEmpty(plantList)) {
List<String> collect = plantList.stream()
.map(DynamicQueryBasePowerLinePlantViewOutput::getStationName)
.collect(Collectors.toList());
//查本期
DateTime endTime = DateUtil.offsetDay(input.getEndTime(), 1);
nowMap = this.getPowerMap(context, input.getStartTime(), endTime, collect, 2);
lastMap = this.getPowerMap(context, DateUtil.offset(input.getStartTime(), DateField.YEAR, -1), DateUtil.offset(endTime, DateField.YEAR, -1), collect, 2);
} else {
nowMap = Collections.emptyMap();
lastMap = Collections.emptyMap();
}
List<DateTime> rangeToList = DateUtil.rangeToList(input.getStartTime(), input.getEndTime(), DateField.DAY_OF_YEAR);
List<GetElectricityConsumptionTrendOutput> outputs = new ArrayList<>(rangeToList.size());
//封装数据
BigDecimal photovoltaicConsumption;
BigDecimal lastPhotovoltaicConsumption;
for (DateTime dateTime : rangeToList) {
if (nowMap.containsKey(dateTime)) {
photovoltaicConsumption = nowMap.get(dateTime).setScale(2, RoundingMode.HALF_UP);
} else {
photovoltaicConsumption = BigDecimal.ZERO;
}
if (lastMap.containsKey(dateTime)) {
lastPhotovoltaicConsumption = lastMap.get(dateTime).setScale(2, RoundingMode.HALF_UP);
} else {
lastPhotovoltaicConsumption = BigDecimal.ZERO;
}
outputs.add(GetElectricityConsumptionTrendOutput.builder()
.dateFormat(dateTime.toString())
.photovoltaicConsumption(photovoltaicConsumption)
.lastPhotovoltaicConsumption(lastPhotovoltaicConsumption)
.ratio(this.getAbsorptionRate(photovoltaicConsumption, lastPhotovoltaicConsumption))
.build());
}
return XListResult.success(outputs);
}
/**
* 用电分析
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetElectricityAnalysisOutput }>
*/
@XText("能耗分析--用电分析") @XText("能耗分析--用电分析")
@XApiGet(anonymous = true) @XApiGet(anonymous = true)
public XListResult<GetElectricityConsumptionTrendOutput> electricityAnalysis(XContext context, QueryEnergyConsumptionAnalysisInput input) { public XListResult<GetElectricityAnalysisOutput> electricityAnalysis(XContext context, QueryEnergyConsumptionAnalysisInput input) {
input.getBetweenDate(); input.getBetweenDate();
List<DateTime> rangeToList = DateUtil.rangeToList(input.getStartTime(), input.getEndTime(), DateField.DAY_OF_YEAR); List<DateTime> rangeToList = DateUtil.rangeToList(input.getStartTime(), input.getEndTime(), DateField.DAY_OF_YEAR);
List<GetElectricityConsumptionTrendOutput> outputs = new ArrayList<>(rangeToList.size()); List<GetElectricityAnalysisOutput> outputs = new ArrayList<>(rangeToList.size());
//封装数据 //封装数据
BigDecimal photovoltaicConsumption = BigDecimal.ZERO; BigDecimal photovoltaicConsumption = BigDecimal.ZERO;
BigDecimal municipalConsumption = BigDecimal.ZERO; BigDecimal municipalConsumption = BigDecimal.ZERO;
BigDecimal lastPhotovoltaicConsumption = BigDecimal.ZERO; BigDecimal lastPhotovoltaicConsumption = BigDecimal.ZERO;
BigDecimal lastMunicipalConsumption = BigDecimal.ZERO; BigDecimal lastMunicipalConsumption = BigDecimal.ZERO;
for (DateTime dateTime : rangeToList) { for (DateTime dateTime : rangeToList) {
outputs.add(GetElectricityConsumptionTrendOutput.builder() outputs.add(GetElectricityAnalysisOutput.builder()
.dateFormat(dateTime.toString()) .dateFormat(dateTime.toString())
.photovoltaicConsumption(photovoltaicConsumption) .photovoltaicConsumption(photovoltaicConsumption)
.municipalConsumption(municipalConsumption) .municipalConsumption(municipalConsumption)
...@@ -755,25 +815,31 @@ public class EnergyConsumptionAnalysisService { ...@@ -755,25 +815,31 @@ public class EnergyConsumptionAnalysisService {
} }
/** /**
* 发电趋势 * 电量统计
* *
* @param context 上下文 * @param context 上下文
* @param startTime 开始时间 * @param startTime 开始时间
* @param endTime 结束时间 * @param endTime 结束时间
* @param stationNameList 车站名称列表 * @param stationNameList 车站名称列表
* @param flag 旗帜 (1_发电,2_用电)
* @return {@link Map }<{@link Date }, {@link BigDecimal }> * @return {@link Map }<{@link Date }, {@link BigDecimal }>
*/ */
private Map<Date, BigDecimal> getPowerGenerationMap(XContext context, Date startTime, Date endTime, List<String> stationNameList) { private Map<Date, BigDecimal> getPowerMap(XContext context, Date startTime, Date endTime, List<String> stationNameList, int flag) {
ThirdDailyAccumulationUpdateViewMapper mapper = context.getBean(ThirdDailyAccumulationUpdateViewMapper.class); ThirdDailyAccumulationUpdateViewMapper mapper = context.getBean(ThirdDailyAccumulationUpdateViewMapper.class);
List<ThirdDailyAccumulationUpdateView> powerList = mapper.selectPowerGenerationTrendByDate(ThirdDailyAccumulationUpdateView.builder() List<ThirdDailyAccumulationUpdateView> powerList = mapper.selectPowerTrendByDate(ThirdDailyAccumulationUpdateView.builder()
.startTime(startTime) .startTime(startTime)
.endTime(endTime) .endTime(endTime)
.stationNameList(stationNameList) .stationNameList(stationNameList)
.build()); .build());
Map<Date, BigDecimal> powerMap; Map<Date, BigDecimal> powerMap;
if (CollUtil.isNotEmpty(powerList) && CollUtil.isNotEmpty(stationNameList)) { if (CollUtil.isNotEmpty(powerList) && CollUtil.isNotEmpty(stationNameList)) {
powerMap = powerList.stream() if (flag == 1) {
.collect(Collectors.toMap(ThirdDailyAccumulationUpdateView::getCreateDate, ThirdDailyAccumulationUpdateView::getPhotovoltaicPower)); powerMap = powerList.stream()
.collect(Collectors.toMap(ThirdDailyAccumulationUpdateView::getCreateDate, ThirdDailyAccumulationUpdateView::getPhotovoltaicPower));
} else {
powerMap = powerList.stream()
.collect(Collectors.toMap(ThirdDailyAccumulationUpdateView::getCreateDate, ThirdDailyAccumulationUpdateView::getDailyElectricityConsumption));
}
} else { } else {
powerMap = Collections.emptyMap(); powerMap = Collections.emptyMap();
} }
......
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/05/22
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetElectricityAnalysisOutput {
@XText("日期")
private String dateFormat;
@XText("光伏用电量(kWh)")
private BigDecimal photovoltaicConsumption;
@XText("市电用电量(kWh)")
private BigDecimal municipalConsumption;
@XText("同期光伏用电量(kWh)")
private BigDecimal lastPhotovoltaicConsumption;
@XText("同期市电用电量(kWh)")
private BigDecimal lastMunicipalConsumption;
/**
* 本期/同期
*/
@XText("同比")
private BigDecimal ratio;
}
...@@ -12,7 +12,7 @@ import java.math.BigDecimal; ...@@ -12,7 +12,7 @@ import java.math.BigDecimal;
* 用电趋势 * 用电趋势
* *
* @author ZWT * @author ZWT
* @date 2024/05/22 * @date 2024/05/22 14:42
*/ */
@Data @Data
@NoArgsConstructor @NoArgsConstructor
...@@ -23,18 +23,12 @@ public class GetElectricityConsumptionTrendOutput { ...@@ -23,18 +23,12 @@ public class GetElectricityConsumptionTrendOutput {
@XText("日期") @XText("日期")
private String dateFormat; private String dateFormat;
@XText("光伏用电量(kWh)") @XText("本期用电量(kWh)")
private BigDecimal photovoltaicConsumption; private BigDecimal photovoltaicConsumption;
@XText("市电用电量(kWh)") @XText("同期用电量(kWh)")
private BigDecimal municipalConsumption;
@XText("同期光伏用电量(kWh)")
private BigDecimal lastPhotovoltaicConsumption; private BigDecimal lastPhotovoltaicConsumption;
@XText("同期市电用电量(kWh)")
private BigDecimal lastMunicipalConsumption;
/** /**
* 本期/同期 * 本期/同期
*/ */
......
...@@ -119,11 +119,12 @@ ...@@ -119,11 +119,12 @@
) z ) z
</select> </select>
<select id="selectPowerGenerationTrendByDate" <select id="selectPowerTrendByDate"
parameterType="pps.core.prediction.entity.ThirdDailyAccumulationUpdateView" parameterType="pps.core.prediction.entity.ThirdDailyAccumulationUpdateView"
resultMap="ExtResultMap"> resultMap="ExtResultMap">
SELECT SELECT
IFNULL( SUM( photovoltaic_power ), 0 ) AS photovoltaic_power, IFNULL( SUM( photovoltaic_power ), 0 ) AS photovoltaic_power,
IFNULL( SUM( daily_electricity_consumption ), 0 ) AS daily_electricity_consumption,
DATE( create_date ) AS create_date DATE( create_date ) AS create_date
FROM FROM
third_daily_accumulation_update third_daily_accumulation_update
......
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