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; ...@@ -40,6 +40,7 @@ import xstartup.data.XSingleResult;
import xstartup.feature.api.annotation.XApiGet; import xstartup.feature.api.annotation.XApiGet;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -110,7 +111,7 @@ public class HomePageService { ...@@ -110,7 +111,7 @@ public class HomePageService {
String stationId = input.getStationId(); String stationId = input.getStationId();
List<DynamicQueryBaseWellheadOutput> wellList = this.getWellList(context, stationId); List<DynamicQueryBaseWellheadOutput> wellList = this.getWellList(context, stationId);
List<GetBasePhotovoltaicPlantCloudOutput> plantList = this.getPlantList(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); List<DynamicQueryBaseEnergyStorageDeviceOutput> storageList = this.getStorageList(context, stationId);
return XSingleResult.success(GetOverviewViewOutput.builder() return XSingleResult.success(GetOverviewViewOutput.builder()
.wellNumber(wellList.size()) .wellNumber(wellList.size())
...@@ -300,17 +301,74 @@ public class HomePageService { ...@@ -300,17 +301,74 @@ public class HomePageService {
return XListResult.success(outputs); return XListResult.success(outputs);
} }
/**
* 收益分析
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetIncomeAnalysisOutput}>
*/
@XText("首页模块--收益分析") @XText("首页模块--收益分析")
@XApiGet @XApiGet
public XSingleResult<GetIncomeAnalysisOutput> getIncomeAnalysis(XContext context, GetStationViewInput input) { 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() return XSingleResult.success(GetIncomeAnalysisOutput.builder()
.absorptionRate(BigDecimal.valueOf(100)) .absorptionRate(BigDecimal.valueOf(100))
.avoidPeakRate(BigDecimal.valueOf(100)) .avoidPeakRate(BigDecimal.valueOf(100))
.energyStorageCapacity(BigDecimal.ZERO)
.powerGeneration(powerGeneration)
.greenElectricityRate(this.getAbsorptionRate(analysisEnt.getPowerGeneration(), analysisEnt.getPowerConsumption()))
.carbonReduction(carbonReduction)
.economicBenefit(economicBenefit)
.build()); .build());
} }
/*------------------------------------------------- private ---------------------------------------------------------*/ /*------------------------------------------------- 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 { ...@@ -378,15 +436,16 @@ public class HomePageService {
/** /**
* 输电线路列表 * 输电线路列表
* *
* @param context 上下文 * @param context 上下文
* @param stationId 工作站id * @param stationId 工作站id
* @param lineTypeKey 线型键
* @return {@link List}<{@link DynamicQueryBasePowerLineOutput}> * @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); IBasePowerLineCloudService service = context.getBean(IBasePowerLineCloudService.class);
XListResult<DynamicQueryBasePowerLineOutput> result = service.getBasePowerLineList(context, DynamicQueryBasePowerLineInput.builder() XListResult<DynamicQueryBasePowerLineOutput> result = service.getBasePowerLineList(context, DynamicQueryBasePowerLineInput.builder()
.ouId(stationId) .ouId(stationId)
.lineTypeKey("10") .lineTypeKey(lineTypeKey)
.build()); .build());
result.throwIfFail(); result.throwIfFail();
return result.getResult(); return result.getResult();
......
...@@ -25,4 +25,19 @@ public class GetIncomeAnalysisOutput { ...@@ -25,4 +25,19 @@ public class GetIncomeAnalysisOutput {
@XText("避峰率") @XText("避峰率")
private BigDecimal avoidPeakRate; 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