Commit 595490e8 authored by ZWT's avatar ZWT

feat[零碳项目]: 松原演示

[
1.统计分析-井组监控页功能开发,开发井组生产详情接口,完成接口冒烟测试并编写线上接口文档生成接口用例;
2.统计分析-井组监控页功能开发,开发井口实时信息接口,完成接口冒烟测试并编写线上接口文档生成接口用例;
3.统计分析-井组监控页功能开发,开发光伏电站发电详情接口,完成接口冒烟测试并编写线上接口文档生成接口用例;
]
parent 7e15e07e
package pps.core.prediction.service;
import cn.hutool.core.collection.CollUtil;
import pps.cloud.base.service.IBasePowerLineCloudService;
import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudInput;
import pps.cloud.base.service.data.base_photovoltaic_plant.GetBasePhotovoltaicPlantCloudOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadInput;
import pps.cloud.base.service.data.base_power_line_wellhead.GetBasePowerLineWellheadViewOutput;
import pps.core.prediction.service.data.energy_consumption_curve.GetEnergyConsumptionCurveInput;
import pps.core.prediction.service.data.energy_consumption_curve.GetEnergyConsumptionCurveOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XListResult;
import xstartup.data.XSingleResult;
import xstartup.feature.api.annotation.XApiGet;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* 用能曲线模块(测试用)
* todo: 模拟测试用,后续替换
*
* @author ZWT
* @date 2023/09/27 15:57
*/
@XText("用能曲线模块")
@XService
public class EnergyConsumptionCurveService extends StatisticAnalysisBaseService {
/**
* 用能曲线--发电列表
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link GetEnergyConsumptionCurveOutput}>
*/
@XText("用能曲线--发电列表")
@XApiGet
public XListResult<GetEnergyConsumptionCurveOutput> queryEnergyConsumptionCurveList(XContext context, GetEnergyConsumptionCurveInput input) {
//通过线路ID查光伏电站
List<DynamicQueryBasePowerLinePlantOutput> plantListByLineIds = this.getPowerLinePlantListByLineIds(context, CollUtil.newArrayList(input.getLineId()));
List powerGenerationList = null;
List<String> plantIdList = null;
if (CollUtil.isNotEmpty(plantListByLineIds)) {
plantIdList = plantListByLineIds.stream()
.map(DynamicQueryBasePowerLinePlantOutput::getPlantId)
.collect(Collectors.toList());
powerGenerationList = super.getPhotovoltaicPowerGeneration(context, input.getDateType(), plantIdList, input.getStartTime(), input.getEndTime());
}
List<GetEnergyConsumptionCurveOutput> outputList;
if (CollUtil.isNotEmpty(powerGenerationList)) {
outputList = XCopyUtils.copyNewList(powerGenerationList, GetEnergyConsumptionCurveOutput.class);
//有发电量说明有电站ID,查电站详情
List<GetBasePhotovoltaicPlantCloudOutput> plantList = super.getPhotovoltaicPlantByParam(context,
GetBasePhotovoltaicPlantCloudInput.builder()
.plantIds(plantIdList)
.build()
);
Optional<BigDecimal> reduce = plantList.stream()
.map(GetBasePhotovoltaicPlantCloudOutput::getTotalPower)
.reduce(BigDecimal::add);
if (reduce.isPresent()) {
BigDecimal productionLoad = this.queryLineSumServiceRatingByLineId(context, input.getLineId());
for (GetEnergyConsumptionCurveOutput output : outputList) {
output.setProductionLoad(productionLoad);
}
}
} else {
outputList = Collections.emptyList();
}
return XListResult.success(outputList);
}
/*-----------------------------------private-----------------------------------*/
/**
* 按线路ID集合获取电站列表
*
* @param context 上下文
* @param lineIds 线路ID
* @return {@link List}<{@link DynamicQueryBasePowerLinePlantOutput}>
*/
private List<DynamicQueryBasePowerLinePlantOutput> getPowerLinePlantListByLineIds(XContext context, List<String> lineIds) {
IBasePowerLineCloudService cloudService = context.getBean(IBasePowerLineCloudService.class);
XListResult<DynamicQueryBasePowerLinePlantOutput> result = cloudService.queryPowerLinePlantListByParam(context,
DynamicQueryBasePowerLinePlantInput.builder()
.lineIds(lineIds)
.build()
);
result.throwIfFail();
return result.getResult();
}
/**
* 查询线路井口运行总功率
*
* @param context 上下文
* @param lineId 线路id
* @return {@link BigDecimal}
*/
private BigDecimal queryLineSumServiceRatingByLineId(XContext context, String lineId) {
IBasePowerLineCloudService cloudService = context.getBean(IBasePowerLineCloudService.class);
XSingleResult<GetBasePowerLineWellheadViewOutput> result = cloudService.queryLineSumServiceRatingByLineId(context,
DynamicQueryBasePowerLineWellheadInput.builder()
.lineId(lineId)
.build()
);
result.throwIfFail();
return result.getResult().getServiceRating();
}
}
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