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 {
List<ThirdDailyAccumulationUpdateView> selectPowerStatisticsByDate(ThirdDailyAccumulationUpdateView view);
/**
* 按日统计发电趋势
* 按日统计电量趋势
*
* @param view 看法
* @return {@link List }<{@link ThirdDailyAccumulationUpdateView }>
*/
List<ThirdDailyAccumulationUpdateView> selectPowerGenerationTrendByDate(ThirdDailyAccumulationUpdateView view);
List<ThirdDailyAccumulationUpdateView> selectPowerTrendByDate(ThirdDailyAccumulationUpdateView view);
}
......@@ -163,8 +163,8 @@ public class EnergyConsumptionAnalysisService {
.collect(Collectors.toList());
//查本期
DateTime endTime = DateUtil.offsetDay(input.getEndTime(), 1);
nowMap = this.getPowerGenerationMap(context, input.getStartTime(), endTime, collect);
lastMap = this.getPowerGenerationMap(context, DateUtil.offset(input.getStartTime(), DateField.YEAR, -1), DateUtil.offset(endTime, DateField.YEAR, -1), collect);
nowMap = this.getPowerMap(context, input.getStartTime(), endTime, collect, 1);
lastMap = this.getPowerMap(context, DateUtil.offset(input.getStartTime(), DateField.YEAR, -1), DateUtil.offset(endTime, DateField.YEAR, -1), collect, 1);
} else {
nowMap = Collections.emptyMap();
lastMap = Collections.emptyMap();
......@@ -196,25 +196,85 @@ public class EnergyConsumptionAnalysisService {
}
/**
* 用电分析
* 用电趋势
*
* @param context 上下文
* @param input 输入
* @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("能耗分析--用电分析")
@XApiGet(anonymous = true)
public XListResult<GetElectricityConsumptionTrendOutput> electricityAnalysis(XContext context, QueryEnergyConsumptionAnalysisInput input) {
public XListResult<GetElectricityAnalysisOutput> electricityAnalysis(XContext context, QueryEnergyConsumptionAnalysisInput input) {
input.getBetweenDate();
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 municipalConsumption = BigDecimal.ZERO;
BigDecimal lastPhotovoltaicConsumption = BigDecimal.ZERO;
BigDecimal lastMunicipalConsumption = BigDecimal.ZERO;
for (DateTime dateTime : rangeToList) {
outputs.add(GetElectricityConsumptionTrendOutput.builder()
outputs.add(GetElectricityAnalysisOutput.builder()
.dateFormat(dateTime.toString())
.photovoltaicConsumption(photovoltaicConsumption)
.municipalConsumption(municipalConsumption)
......@@ -755,25 +815,31 @@ public class EnergyConsumptionAnalysisService {
}
/**
* 发电趋势
* 电量统计
*
* @param context 上下文
* @param startTime 开始时间
* @param endTime 结束时间
* @param stationNameList 车站名称列表
* @param flag 旗帜 (1_发电,2_用电)
* @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);
List<ThirdDailyAccumulationUpdateView> powerList = mapper.selectPowerGenerationTrendByDate(ThirdDailyAccumulationUpdateView.builder()
List<ThirdDailyAccumulationUpdateView> powerList = mapper.selectPowerTrendByDate(ThirdDailyAccumulationUpdateView.builder()
.startTime(startTime)
.endTime(endTime)
.stationNameList(stationNameList)
.build());
Map<Date, BigDecimal> powerMap;
if (CollUtil.isNotEmpty(powerList) && CollUtil.isNotEmpty(stationNameList)) {
if (flag == 1) {
powerMap = powerList.stream()
.collect(Collectors.toMap(ThirdDailyAccumulationUpdateView::getCreateDate, ThirdDailyAccumulationUpdateView::getPhotovoltaicPower));
} else {
powerMap = powerList.stream()
.collect(Collectors.toMap(ThirdDailyAccumulationUpdateView::getCreateDate, ThirdDailyAccumulationUpdateView::getDailyElectricityConsumption));
}
} else {
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;
* 用电趋势
*
* @author ZWT
* @date 2024/05/22
* @date 2024/05/22 14:42
*/
@Data
@NoArgsConstructor
......@@ -23,18 +23,12 @@ public class GetElectricityConsumptionTrendOutput {
@XText("日期")
private String dateFormat;
@XText("光伏用电量(kWh)")
@XText("本期用电量(kWh)")
private BigDecimal photovoltaicConsumption;
@XText("市电用电量(kWh)")
private BigDecimal municipalConsumption;
@XText("同期光伏用电量(kWh)")
@XText("同期用电量(kWh)")
private BigDecimal lastPhotovoltaicConsumption;
@XText("同期市电用电量(kWh)")
private BigDecimal lastMunicipalConsumption;
/**
* 本期/同期
*/
......
......@@ -119,11 +119,12 @@
) z
</select>
<select id="selectPowerGenerationTrendByDate"
<select id="selectPowerTrendByDate"
parameterType="pps.core.prediction.entity.ThirdDailyAccumulationUpdateView"
resultMap="ExtResultMap">
SELECT
IFNULL( SUM( photovoltaic_power ), 0 ) AS photovoltaic_power,
IFNULL( SUM( daily_electricity_consumption ), 0 ) AS daily_electricity_consumption,
DATE( create_date ) AS create_date
FROM
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