Commit 1a919ebd authored by ZWT's avatar ZWT

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

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent a9c9522e
......@@ -110,4 +110,16 @@ public class ThirdDailyAccumulationUpdateView implements Serializable {
*/
@TableField(exist = false)
private BigDecimal greenElectricityRate;
/**
* 开始时间
*/
@TableField(exist = false)
private Date startTime;
/**
* 结束时间
*/
@TableField(exist = false)
private Date endTime;
}
......@@ -33,4 +33,12 @@ public interface ThirdDailyAccumulationUpdateViewMapper {
* @return {@link List }<{@link ThirdDailyAccumulationUpdateView }>
*/
List<ThirdDailyAccumulationUpdateView> selectPowerStatisticsByDate(ThirdDailyAccumulationUpdateView view);
/**
* 按日统计发电趋势
*
* @param view 看法
* @return {@link List }<{@link ThirdDailyAccumulationUpdateView }>
*/
List<ThirdDailyAccumulationUpdateView> selectPowerGenerationTrendByDate(ThirdDailyAccumulationUpdateView view);
}
......@@ -65,26 +65,26 @@ public class EnergyConsumptionAnalysisService {
@XText("能耗分析--今日/昨日/同期电量统计")
@XApiGet
public XListResult<PowerStatisticsOutput> powerStatistics(XContext context, GetEnergyConsumptionAnalysisInput input) {
DynamicQueryBasePowerLinePlantInput plantInput = new DynamicQueryBasePowerLinePlantInput();
String stationName = input.getStationName();
List<String> stationNameList = new ArrayList<>(16);
if (CharSequenceUtil.isNotBlank(stationName)) {
stationNameList.add(stationName);
plantInput.setLineName(stationName);
} else {
List<GetBasePhotovoltaicPlantCloudOutput> plantList = this.getBasePhotovoltaicPlantList(context, this.getOrgIdsByPath(context, input.getOuId()));
if (CollUtil.isNotEmpty(plantList)) {
plantList.forEach(s -> stationNameList.add(s.getStationName()));
}
plantInput.setOuIds(this.getOrgIdsByPath(context, input.getOuId()));
}
List<PowerStatisticsOutput> outputs;
List<DynamicQueryBasePowerLinePlantViewOutput> plantList = this.getPowerLinePlantViewList(context, plantInput);
//电站名称列表有值再查
if (CollUtil.isNotEmpty(stationNameList)) {
if (CollUtil.isNotEmpty(plantList)) {
DateTime today = DateUtil.date();
ThirdDailyAccumulationUpdateViewMapper mapper = context.getBean(ThirdDailyAccumulationUpdateViewMapper.class);
List<ThirdDailyAccumulationUpdateView> viewList = mapper.selectPowerStatisticsByDate(ThirdDailyAccumulationUpdateView.builder()
.today(DateUtil.beginOfDay(today))
.yesterday(DateUtil.beginOfDay(DateUtil.yesterday()))
.lastYear(DateUtil.beginOfDay(DateUtil.offset(today, DateField.YEAR, -1)))
.stationNameList(stationNameList)
.stationNameList(plantList.stream()
.map(DynamicQueryBasePowerLinePlantViewOutput::getStationName)
.collect(Collectors.toList()))
.build());
outputs = XCopyUtils.copyNewList(viewList, PowerStatisticsOutput.class);
} else {
......@@ -174,6 +174,65 @@ public class EnergyConsumptionAnalysisService {
return XListResult.success(outputs);
}
/**
* 发电趋势
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetPowerGenerationTrendOutput }>
*/
@XText("首页模块--发电趋势")
@XApiGet
public XListResult<GetPowerGenerationTrendOutput> powerGenerationTrend(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.getPowerGenerationMap(context, input.getStartTime(), endTime, collect);
lastMap = this.getPowerGenerationMap(context, DateUtil.offset(input.getStartTime(), DateField.YEAR, -1), DateUtil.offset(endTime, DateField.YEAR, -1), collect);
} else {
nowMap = Collections.emptyMap();
lastMap = Collections.emptyMap();
}
List<DateTime> rangeToList = DateUtil.rangeToList(input.getStartTime(), input.getEndTime(), DateField.DAY_OF_YEAR);
List<GetPowerGenerationTrendOutput> outputs = new ArrayList<>(rangeToList.size());
//封装数据
BigDecimal powerGeneration;
BigDecimal lastPowerGeneration;
for (DateTime dateTime : rangeToList) {
if (nowMap.containsKey(dateTime)) {
powerGeneration = nowMap.get(dateTime).setScale(2, RoundingMode.HALF_UP);
} else {
powerGeneration = BigDecimal.ZERO;
}
if (lastMap.containsKey(dateTime)) {
lastPowerGeneration = lastMap.get(dateTime).setScale(2, RoundingMode.HALF_UP);
} else {
lastPowerGeneration = BigDecimal.ZERO;
}
outputs.add(GetPowerGenerationTrendOutput.builder()
.dateFormat(dateTime.toString())
.powerGeneration(powerGeneration)
.lastPowerGeneration(lastPowerGeneration)
.ratio(this.getAbsorptionRate(powerGeneration, lastPowerGeneration))
.build());
}
return XListResult.success(outputs);
}
/**
* 能耗分析--能耗概览
......@@ -182,6 +241,7 @@ public class EnergyConsumptionAnalysisService {
* @param input 输入
* @return {@link XSingleResult}<{@link GetEnergyConsumptionAnalysisViewOutput}>
*/
@Deprecated
@XText("能耗分析--能耗概览")
@XApiGet
public XSingleResult<GetEnergyConsumptionAnalysisViewOutput> getEnergyConsumptionAnalysisView(XContext context, QueryEnergyConsumptionAnalysisInput input) {
......@@ -220,6 +280,7 @@ public class EnergyConsumptionAnalysisService {
* @param input 输入
* @return {@link XListResult}<{@link DynamicQueryEnergyConsumptionAnalysisViewOutput}>
*/
@Deprecated
@XText("能耗分析--绿电消纳/用电趋势")
@XApiGet
public XListResult<DynamicQueryEnergyConsumptionAnalysisViewOutput> queryEnergyConsumptionAnalysisList(XContext context, QueryEnergyConsumptionAnalysisInput input) {
......@@ -264,6 +325,7 @@ public class EnergyConsumptionAnalysisService {
* @param input 输入
* @return {@link XPageResult}<{@link QueryEnergyConsumptionAnalysisViewOutput}>
*/
@Deprecated
@XText("能耗分析--用电详情")
@XApiGet
public XPageResult<QueryEnergyConsumptionAnalysisViewOutput> queryEnergyConsumptionAnalysisView(XContext context, QueryEnergyConsumptionAnalysisPageInput input) {
......@@ -486,4 +548,30 @@ public class EnergyConsumptionAnalysisService {
result.throwIfFail();
return result.getResult();
}
/**
* 发电趋势
*
* @param context 上下文
* @param startTime 开始时间
* @param endTime 结束时间
* @param stationNameList 车站名称列表
* @return {@link Map }<{@link Date }, {@link BigDecimal }>
*/
private Map<Date, BigDecimal> getPowerGenerationMap(XContext context, Date startTime, Date endTime, List<String> stationNameList) {
ThirdDailyAccumulationUpdateViewMapper mapper = context.getBean(ThirdDailyAccumulationUpdateViewMapper.class);
List<ThirdDailyAccumulationUpdateView> powerList = mapper.selectPowerGenerationTrendByDate(ThirdDailyAccumulationUpdateView.builder()
.startTime(startTime)
.endTime(endTime)
.stationNameList(stationNameList)
.build());
Map<Date, BigDecimal> powerMap;
if (CollUtil.isNotEmpty(powerList) && CollUtil.isNotEmpty(stationNameList)) {
powerMap = powerList.stream()
.collect(Collectors.toMap(ThirdDailyAccumulationUpdateView::getCreateDate, ThirdDailyAccumulationUpdateView::getPhotovoltaicPower));
} else {
powerMap = Collections.emptyMap();
}
return powerMap;
}
}
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/21
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetPowerGenerationTrendOutput {
@XText("日期")
private String dateFormat;
@XText("本期发电量(kWh)")
private BigDecimal powerGeneration;
@XText("同期发电量(kWh)")
private BigDecimal lastPowerGeneration;
/**
* 本期/同期
*/
@XText("同比")
private BigDecimal ratio;
}
......@@ -118,4 +118,23 @@
</foreach>
) z
</select>
<select id="selectPowerGenerationTrendByDate"
parameterType="pps.core.prediction.entity.ThirdDailyAccumulationUpdateView"
resultMap="ExtResultMap">
SELECT
IFNULL( SUM( photovoltaic_power ), 0 ) AS photovoltaic_power,
DATE( create_date ) AS create_date
FROM
third_daily_accumulation_update
WHERE
station_name IN
<foreach collection="stationNameList" open="(" close=")" separator="," item="item">
#{item}
</foreach>
AND create_date BETWEEN #{startTime}
AND #{endTime}
GROUP BY
DATE( create_date )
</select>
</mapper>
\ No newline at end of file
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