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; ...@@ -27,6 +27,7 @@ import xstartup.feature.api.annotation.XApiGet;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -62,8 +63,8 @@ public class EnergyConsumptionAnalysisService { ...@@ -62,8 +63,8 @@ public class EnergyConsumptionAnalysisService {
List<String> lineIdList = lineList.stream() List<String> lineIdList = lineList.stream()
.map(DynamicQueryBasePowerLineOutput::getId) .map(DynamicQueryBasePowerLineOutput::getId)
.collect(Collectors.toList()); .collect(Collectors.toList());
EnergyConsumptionAnalysisMapper mapper = context.getBean(EnergyConsumptionAnalysisMapper.class);
input.getBetweenDate(); input.getBetweenDate();
EnergyConsumptionAnalysisMapper mapper = context.getBean(EnergyConsumptionAnalysisMapper.class);
EnergyConsumptionAnalysisEnt analysisEnt = mapper.selectOne(new QueryWrapper<EnergyConsumptionAnalysisEnt>() EnergyConsumptionAnalysisEnt analysisEnt = mapper.selectOne(new QueryWrapper<EnergyConsumptionAnalysisEnt>()
.select("IFNULL( SUM( power_generation ), 0 ) AS power_generation", .select("IFNULL( SUM( power_generation ), 0 ) AS power_generation",
"IFNULL( SUM( power_consumption ), 0 ) AS power_consumption") "IFNULL( SUM( power_consumption ), 0 ) AS power_consumption")
...@@ -73,13 +74,7 @@ public class EnergyConsumptionAnalysisService { ...@@ -73,13 +74,7 @@ public class EnergyConsumptionAnalysisService {
); );
output.setPowerGeneration(analysisEnt.getPowerGeneration()); output.setPowerGeneration(analysisEnt.getPowerGeneration());
output.setPowerConsumption(analysisEnt.getPowerConsumption()); output.setPowerConsumption(analysisEnt.getPowerConsumption());
//消纳率:光伏发电/累计用电*100% output.setAbsorptionRate(this.getAbsorptionRate(analysisEnt.getPowerGeneration(), analysisEnt.getPowerConsumption()));
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);
}
} }
return XSingleResult.success(output); return XSingleResult.success(output);
} }
...@@ -95,8 +90,36 @@ public class EnergyConsumptionAnalysisService { ...@@ -95,8 +90,36 @@ public class EnergyConsumptionAnalysisService {
@XApiAnonymous @XApiAnonymous
@XApiGet @XApiGet
public XListResult<DynamicQueryEnergyConsumptionAnalysisViewOutput> queryEnergyConsumptionAnalysisList(XContext context, QueryEnergyConsumptionAnalysisInput input) { public XListResult<DynamicQueryEnergyConsumptionAnalysisViewOutput> queryEnergyConsumptionAnalysisList(XContext context, QueryEnergyConsumptionAnalysisInput input) {
EnergyConsumptionAnalysisMapper mapper = context.getBean(EnergyConsumptionAnalysisMapper.class); List<DynamicQueryEnergyConsumptionAnalysisViewOutput> list = new ArrayList<>(16);
return XListResult.success(); 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 { ...@@ -115,6 +138,25 @@ public class EnergyConsumptionAnalysisService {
/*-----------------------------------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;
}
/** /**
* 获取所有path包含组织ID的组织 * 获取所有path包含组织ID的组织
* *
......
package pps.core.prediction.service.data.energy_consumption_analysis; package pps.core.prediction.service.data.energy_consumption_analysis;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -13,6 +16,9 @@ import java.util.Date; ...@@ -13,6 +16,9 @@ import java.util.Date;
* @date 2023/11/23 * @date 2023/11/23
*/ */
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DynamicQueryEnergyConsumptionAnalysisViewOutput { public class DynamicQueryEnergyConsumptionAnalysisViewOutput {
@XText("发电量(kWh)") @XText("发电量(kWh)")
private BigDecimal powerGeneration; 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