Commit 4d02be76 authored by ZWT's avatar ZWT

feat(能源管理系统): 邮件接收

1.统计分析-能耗分析模块重构,删除原有接口及代码,新建能耗分析测试用数据表,生成相关代码并集成到项目中并上传git;
2.统计分析-能耗分析模块能耗概览接口开发,输电线路Cloud模块新增通过组织结构ID列表查询线路列表接口,完成能耗分析模块能耗概览接口业务逻辑开发,添加线上接口文档并完成接口冒烟测试;
3.统计分析-能耗分析模块,完成绿电消纳/用电趋势接口开发,添加线上接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 708bd210
......@@ -27,6 +27,7 @@ import xstartup.feature.api.annotation.XApiGet;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
......@@ -62,8 +63,8 @@ public class EnergyConsumptionAnalysisService {
List<String> lineIdList = lineList.stream()
.map(DynamicQueryBasePowerLineOutput::getId)
.collect(Collectors.toList());
EnergyConsumptionAnalysisMapper mapper = context.getBean(EnergyConsumptionAnalysisMapper.class);
input.getBetweenDate();
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")
......@@ -73,13 +74,7 @@ public class EnergyConsumptionAnalysisService {
);
output.setPowerGeneration(analysisEnt.getPowerGeneration());
output.setPowerConsumption(analysisEnt.getPowerConsumption());
//消纳率:光伏发电/累计用电*100%
if (analysisEnt.getPowerConsumption().compareTo(BigDecimal.ZERO) > 0) {
output.setAbsorptionRate(analysisEnt.getPowerGeneration().divide(analysisEnt.getPowerConsumption(), 4, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100)));
} else {
output.setAbsorptionRate(BigDecimal.ZERO);
}
output.setAbsorptionRate(this.getAbsorptionRate(analysisEnt.getPowerGeneration(), analysisEnt.getPowerConsumption()));
}
return XSingleResult.success(output);
}
......@@ -95,8 +90,36 @@ public class EnergyConsumptionAnalysisService {
@XApiAnonymous
@XApiGet
public XListResult<DynamicQueryEnergyConsumptionAnalysisViewOutput> queryEnergyConsumptionAnalysisList(XContext context, QueryEnergyConsumptionAnalysisInput input) {
EnergyConsumptionAnalysisMapper mapper = context.getBean(EnergyConsumptionAnalysisMapper.class);
return XListResult.success();
List<DynamicQueryEnergyConsumptionAnalysisViewOutput> list = new ArrayList<>(16);
List<DynamicQueryBasePowerLineOutput> lineList = this.getBasePowerLineListByOuIdList(context, this.getOrgIdsByPath(context, input.getOuId()));
if (CollUtil.isNotEmpty(lineList)) {
List<String> lineIdList = lineList.stream()
.map(DynamicQueryBasePowerLineOutput::getId)
.collect(Collectors.toList());
input.getBetweenDate();
EnergyConsumptionAnalysisMapper mapper = context.getBean(EnergyConsumptionAnalysisMapper.class);
List<EnergyConsumptionAnalysisEnt> analysisEntList = mapper.selectList(new QueryWrapper<EnergyConsumptionAnalysisEnt>()
.select("IFNULL( SUM( power_generation ), 0 ) AS power_generation",
"IFNULL( SUM( power_consumption ), 0 ) AS power_consumption",
"data_date")
.lambda()
.in(EnergyConsumptionAnalysisEnt::getLineId, lineIdList)
.between(EnergyConsumptionAnalysisEnt::getDataDate, input.getStartTime(), input.getEndTime())
.groupBy(EnergyConsumptionAnalysisEnt::getDataDate)
.orderByAsc(EnergyConsumptionAnalysisEnt::getDataDate)
);
if (CollUtil.isNotEmpty(analysisEntList)) {
for (EnergyConsumptionAnalysisEnt ent : analysisEntList) {
list.add(DynamicQueryEnergyConsumptionAnalysisViewOutput.builder()
.powerConsumption(ent.getPowerConsumption())
.powerGeneration(ent.getPowerGeneration())
.dataDate(ent.getDataDate())
.absorptionRate(this.getAbsorptionRate(ent.getPowerGeneration(), ent.getPowerConsumption()))
.build());
}
}
}
return XListResult.success(list);
}
......@@ -115,6 +138,25 @@ public class EnergyConsumptionAnalysisService {
/*-----------------------------------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;
}
/**
* 获取所有path包含组织ID的组织
*
......
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;
......@@ -13,6 +16,9 @@ import java.util.Date;
* @date 2023/11/23
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DynamicQueryEnergyConsumptionAnalysisViewOutput {
@XText("发电量(kWh)")
private BigDecimal powerGeneration;
......
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