Commit 61491326 authored by ZWT's avatar ZWT

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

1.能耗分析模块功能重构,新增今日/昨日/同期电量统计查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
2.能耗分析模块功能重构,新增今日天气查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
3.能耗分析模块功能重构,新增井场用能分析查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
4.能耗分析模块功能重构,新增井场发电趋势查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
5.能耗分析模块功能重构,新增井场实时监控查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
6.能耗分析模块功能重构,新增本日用电对比查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
7.能耗分析模块功能重构,新增发电详情查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
8.能耗分析模块功能重构,新增用电趋势查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
9.能耗分析模块功能重构,新增用电分析查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;
10.间开配置Cloud模块添加查询生效中间开井口列表接口;
11.创建日用电趋势结果录入表,同时生成相关代码;
12.创建日用电趋势结果计算定时任务;
13.能耗分析模块功能重构,新增本日预测/实际功率对比查询接口,添加线上接口文档并完成接口冒烟测试同时添加用例;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent f1812614
......@@ -14,8 +14,21 @@ import xstartup.data.XServiceResult;
@XService
public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityTrendCloudService {
/**
* 日用电趋势计算
* <p>
* 取极短期间开优化结果
* 绿电阶段开井时间:每15分钟判段光伏出力>运行功率(考虑开井顺序) 并且当前时段开井,则算坐开井时段(0.25小时),全天累加
* 市电用电:总用电-光伏用电
* 单井绿电用电:运行功率*绿电阶段开井时间
*
* @param context 上下文
* @return {@link XServiceResult }
*/
@Override
public XServiceResult dailyElectricityTrendJob(XContext context) {
return null;
}
}
......@@ -518,6 +518,71 @@ public class EnergyConsumptionAnalysisService {
return XListResult.success(this.setPowerAnalyseList(avgMap, powerMap, today, tomorrow));
}
/**
* 本日预测/实际功率对比
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetPredictedPowerContrastOutput }>
*/
@XText("井场实时分析--本日预测/实际功率对比")
@XApiGet
public XListResult<GetPredictedPowerContrastOutput> predictedPowerContrast(XContext context, GetEnergyConsumptionAnalysisInput input) {
Map<String, BigDecimal> shortMap;
Map<Integer, BigDecimal> powerMap;
DateTime today = DateUtil.beginOfDay(DateUtil.date());
List<DynamicQueryBasePowerLinePlantViewOutput> plantList = this.getPowerLinePlantViewList(context, DynamicQueryBasePowerLinePlantInput.builder()
.ouIds(this.getOrgIdsByPath(context, input.getOuId()))
.build());
if (CollUtil.isNotEmpty(plantList)) {
List<String> plantIds = plantList.stream()
.map(DynamicQueryBasePowerLinePlantViewOutput::getPlantId)
.collect(Collectors.toList());
//预测发电量
PredictedPowerViewMapper mapper = context.getBean(PredictedPowerViewMapper.class);
shortMap = mapper.selectShortPowerHourList(PredictedPowerView.builder()
.createTime(today)
.plantIds(plantIds)
.build()).stream()
.collect(Collectors.toMap(PredictedPowerView::getHourTime, PredictedPowerView::getPower));
//实际功率
ThirdActivePowerDailyUpdateViewMapper nowMapper = context.getBean(ThirdActivePowerDailyUpdateViewMapper.class);
powerMap = nowMapper.selectEnergyUseCurve(ThirdActivePowerDailyUpdateView.builder()
.stationIds(plantIds)
.saveDate(today)
.build()).stream()
.collect(Collectors.toMap(ThirdActivePowerDailyUpdateView::getHourNumber, ThirdActivePowerDailyUpdateView::getPhotovoltaicPower));
} else {
shortMap = Collections.emptyMap();
powerMap = Collections.emptyMap();
}
//封装数据
List<GetPredictedPowerContrastOutput> outputs = new ArrayList<>(24);
BigDecimal predictPower;
BigDecimal actualPower;
for (int i = 0; i < 24; i++) {
String value = String.valueOf(i);
if (shortMap.containsKey(value)) {
predictPower = shortMap.get(value).setScale(2, RoundingMode.HALF_UP);
} else {
predictPower = BigDecimal.ZERO;
}
if (powerMap.containsKey(i)) {
actualPower = powerMap.get(value).setScale(2, RoundingMode.HALF_UP);
} else {
actualPower = BigDecimal.ZERO;
}
outputs.add(
GetPredictedPowerContrastOutput.builder()
.hourNumber(i)
.predictPower(predictPower)
.actualPower(actualPower)
.build()
);
}
return XListResult.success(outputs);
}
/*------------------------------ 能耗分析(废弃) ------------------------------*/
/**
......
......@@ -338,7 +338,7 @@ public class HomePageService {
* @return {@link XSingleResult}<{@link GetPowerPredictionOutput}>
*/
@XText("首页模块--光伏实时监控")
@XApiGet(anonymous = true)
@XApiGet
public XListResult<GetPowerPredictionOutput> getPowerPrediction(XContext context, GetStationViewInput input) {
String plantId = input.getPlantId();
List<GetBasePhotovoltaicPlantCloudOutput> plantList;
......
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 GetPredictedPowerContrastOutput {
@XText("小时")
private Integer hourNumber;
@XText("预测功率")
private BigDecimal predictPower;
@XText("实际功率")
private BigDecimal actualPower;
}
\ 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