Commit 060e66ca authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.长庆演示首页功能开发,新增查询井场/场站列表接口,添加接口文档并完成接口冒烟测试;
2.长庆演示首页功能开发,新增总览信息统计接口,添加接口文档并完成接口冒烟测试;
3.长庆演示首页功能开发,新增用能分析统计接口,添加接口文档并完成接口冒烟测试;
4.长庆演示首页功能开发,新增累计用电统计接口,添加接口文档并完成接口冒烟测试;
5.长庆演示首页功能开发,新增光伏实时监控统计接口,添加接口文档并完成接口冒烟测试;
6.长庆演示首页功能开发,新增先导实验井间开制度统计接口,添加接口文档并完成接口冒烟测试;
7.长庆演示首页功能开发,新增零碳井场收益分析统计接口,添加接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent d2f006e8
......@@ -40,6 +40,7 @@ import xstartup.data.XSingleResult;
import xstartup.feature.api.annotation.XApiGet;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -110,7 +111,7 @@ public class HomePageService {
String stationId = input.getStationId();
List<DynamicQueryBaseWellheadOutput> wellList = this.getWellList(context, stationId);
List<GetBasePhotovoltaicPlantCloudOutput> plantList = this.getPlantList(context, stationId);
List<DynamicQueryBasePowerLineOutput> lineList = this.getLineList(context, stationId);
List<DynamicQueryBasePowerLineOutput> lineList = this.getLineList(context, stationId, "10");
List<DynamicQueryBaseEnergyStorageDeviceOutput> storageList = this.getStorageList(context, stationId);
return XSingleResult.success(GetOverviewViewOutput.builder()
.wellNumber(wellList.size())
......@@ -300,17 +301,74 @@ public class HomePageService {
return XListResult.success(outputs);
}
/**
* 收益分析
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetIncomeAnalysisOutput}>
*/
@XText("首页模块--收益分析")
@XApiGet
public XSingleResult<GetIncomeAnalysisOutput> getIncomeAnalysis(XContext context, GetStationViewInput input) {
String stationId = input.getStationId();
List<String> lineIdList = this.getLineList(context, stationId, null).stream()
.map(DynamicQueryBasePowerLineOutput::getId)
.collect(Collectors.toList());
DateTime yesterday = DateUtil.beginOfDay(DateUtil.yesterday());
EnergyConsumptionAnalysisMapper mapper = context.getBean(EnergyConsumptionAnalysisMapper.class);
EnergyConsumptionAnalysisEnt analysisEnt = mapper.selectOne(new QueryWrapper<EnergyConsumptionAnalysisEnt>()
.select("IFNULL( SUM( power_generation ), 0 ) AS power_generation",
"IFNULL( SUM( power_consumption ), 0 ) AS power_consumption")
.lambda()
.in(EnergyConsumptionAnalysisEnt::getLineId, lineIdList)
.eq(EnergyConsumptionAnalysisEnt::getDataDate, yesterday)
);
//发电量(万度)
BigDecimal powerGeneration = analysisEnt.getPowerGeneration()
.divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP);
//累计减碳量
BigDecimal carbonReduction = analysisEnt.getPowerGeneration()
.multiply(BigDecimal.valueOf(6.67))
.divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP);
//经济效益
BigDecimal economicBenefit = analysisEnt.getPowerConsumption()
.multiply(BigDecimal.valueOf(0.5))
.subtract(analysisEnt.getPowerGeneration()
.multiply(BigDecimal.valueOf(0.28)))
.divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP);
return XSingleResult.success(GetIncomeAnalysisOutput.builder()
.absorptionRate(BigDecimal.valueOf(100))
.avoidPeakRate(BigDecimal.valueOf(100))
.energyStorageCapacity(BigDecimal.ZERO)
.powerGeneration(powerGeneration)
.greenElectricityRate(this.getAbsorptionRate(analysisEnt.getPowerGeneration(), analysisEnt.getPowerConsumption()))
.carbonReduction(carbonReduction)
.economicBenefit(economicBenefit)
.build());
}
/*------------------------------------------------- private ---------------------------------------------------------*/
/**
* 获取消纳率
* 消纳率:光伏发电/累计用电*100%
*
* @param powerGeneration 发电
* @param powerConsumption 功耗
* @return {@link BigDecimal}
*/
private BigDecimal getAbsorptionRate(BigDecimal powerGeneration, BigDecimal powerConsumption) {
BigDecimal absorptionRate;
if (powerConsumption.compareTo(BigDecimal.ZERO) > 0) {
absorptionRate = powerGeneration.divide(powerConsumption, 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100));
} else {
absorptionRate = BigDecimal.ZERO;
}
return absorptionRate;
}
/**
* 查询组织列表下所有线路
*
......@@ -378,15 +436,16 @@ public class HomePageService {
/**
* 输电线路列表
*
* @param context 上下文
* @param stationId 工作站id
* @param context 上下文
* @param stationId 工作站id
* @param lineTypeKey 线型键
* @return {@link List}<{@link DynamicQueryBasePowerLineOutput}>
*/
private List<DynamicQueryBasePowerLineOutput> getLineList(XContext context, String stationId) {
private List<DynamicQueryBasePowerLineOutput> getLineList(XContext context, String stationId, String lineTypeKey) {
IBasePowerLineCloudService service = context.getBean(IBasePowerLineCloudService.class);
XListResult<DynamicQueryBasePowerLineOutput> result = service.getBasePowerLineList(context, DynamicQueryBasePowerLineInput.builder()
.ouId(stationId)
.lineTypeKey("10")
.lineTypeKey(lineTypeKey)
.build());
result.throwIfFail();
return result.getResult();
......
......@@ -25,4 +25,19 @@ public class GetIncomeAnalysisOutput {
@XText("避峰率")
private BigDecimal avoidPeakRate;
@XText("储能电量")
private BigDecimal energyStorageCapacity;
@XText("发电量(万度)")
private BigDecimal powerGeneration;
@XText("绿电占比")
private BigDecimal greenElectricityRate;
@XText("减碳量")
private BigDecimal carbonReduction;
@XText("经济效益")
private BigDecimal economicBenefit;
}
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