Commit 6c0063f6 authored by ZWT's avatar ZWT

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

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 4d02be76
package pps.core.prediction.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
......@@ -11,14 +13,13 @@ import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.data.GetAllOuListByOuIdInput;
import pps.cloud.system.service.data.GetSysOrganizationViewOutput;
import pps.core.prediction.entity.EnergyConsumptionAnalysisEnt;
import pps.core.prediction.entity.EnergyConsumptionAnalysisView;
import pps.core.prediction.enums.BusinessError;
import pps.core.prediction.mapper.EnergyConsumptionAnalysisMapper;
import pps.core.prediction.mapper.EnergyConsumptionAnalysisViewMapper;
import pps.core.prediction.service.data.energy_consumption_analysis.*;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.base.exception.XServiceException;
import xstartup.data.XListResult;
import xstartup.data.XPageResult;
import xstartup.data.XSingleResult;
......@@ -27,8 +28,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.*;
import java.util.stream.Collectors;
/**
......@@ -122,22 +122,81 @@ public class EnergyConsumptionAnalysisService {
return XListResult.success(list);
}
/**
* 能耗分析--用电详情
*
* @param context 上下文
* @param input 输入
* @return {@link XPageResult}<{@link QueryEnergyConsumptionAnalysisViewOutput}>
*/
@XText("能耗分析--用电详情")
@XApiAnonymous
@XApiGet
public XPageResult<QueryEnergyConsumptionAnalysisViewOutput> queryEnergyConsumptionAnalysisView(XContext context, QueryEnergyConsumptionAnalysisPageInput input) {
EnergyConsumptionAnalysisViewMapper mapper = context.getBean(EnergyConsumptionAnalysisViewMapper.class);
EnergyConsumptionAnalysisView record = new EnergyConsumptionAnalysisView();
XCopyUtils.copyObject(input, record);
PageHelper.startPage(input.getPage(), input.getLimit());
List<EnergyConsumptionAnalysisView> list = mapper.selectList(record);
PageInfo<EnergyConsumptionAnalysisView> pageInfo = new PageInfo<>(list);
List<QueryEnergyConsumptionAnalysisViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QueryEnergyConsumptionAnalysisViewOutput.class);
List<QueryEnergyConsumptionAnalysisViewOutput> outputs = new ArrayList<>(input.getLimit());
List<EnergyConsumptionAnalysisEnt> list;
List<DynamicQueryBasePowerLineOutput> lineList = this.getBasePowerLineListByOuIdList(context, this.getOrgIdsByPath(context, input.getOuId()));
if (CollUtil.isNotEmpty(lineList)) {
Map<String, String> lineMap = lineList.stream()
.collect(Collectors.toMap(DynamicQueryBasePowerLineOutput::getId, DynamicQueryBasePowerLineOutput::getLineName));
Set<String> lineIds = lineMap.keySet();
PageHelper.startPage(input.getPage(), input.getLimit());
input.getBetweenDate();
EnergyConsumptionAnalysisMapper mapper = context.getBean(EnergyConsumptionAnalysisMapper.class);
Date startTime = input.getStartTime();
Date endTime = input.getEndTime();
//查本期数据
list = mapper.selectList(this.getQueryWrapper4Page(lineIds, startTime, endTime));
PageHelper.clearPage();
//查上期数据
switch (input.getDateType()) {
case 1:
endTime = DateUtil.offsetDay(startTime, -1);
startTime = DateUtil.offsetDay(startTime, -7);
break;
case 2:
endTime = DateUtil.offsetDay(startTime, -1);
startTime = DateUtil.offsetDay(startTime, -30);
break;
case 3:
int betweenDay = (int) DateUtil.betweenDay(startTime, endTime, true) + 1;
endTime = DateUtil.offsetDay(startTime, -1);
startTime = DateUtil.offsetDay(startTime, -betweenDay);
break;
default:
throw new XServiceException(BusinessError.DateTypeError);
}
List<EnergyConsumptionAnalysisEnt> energyConsumptionAnalysisEnts = mapper.selectList(this.getQueryWrapper4Page(lineIds, startTime, endTime));
} else {
list = new ArrayList<>(0);
}
PageInfo<EnergyConsumptionAnalysisEnt> pageInfo = new PageInfo<>(list);
return XPageResult.success(outputs, input, pageInfo.getTotal());
}
/*-----------------------------------private-----------------------------------*/
/**
* 分页功能封装查询条件
*
* @param lineIds 线路ID
* @param startTime 开始时间
* @param endTime 结束时间
* @return {@link LambdaQueryWrapper}<{@link EnergyConsumptionAnalysisEnt}>
*/
private LambdaQueryWrapper<EnergyConsumptionAnalysisEnt> getQueryWrapper4Page(Collection<String> lineIds, Date startTime, Date endTime) {
return new QueryWrapper<EnergyConsumptionAnalysisEnt>()
.select("IFNULL( SUM( power_generation ), 0 ) AS power_generation",
"IFNULL( SUM( power_consumption ), 0 ) AS power_consumption",
"line_id")
.lambda()
.in(EnergyConsumptionAnalysisEnt::getLineId, lineIds)
.between(EnergyConsumptionAnalysisEnt::getDataDate, startTime, endTime)
.groupBy(EnergyConsumptionAnalysisEnt::getLineId)
.orderByAsc(EnergyConsumptionAnalysisEnt::getPowerGeneration);
}
/**
* 获取消纳率
* 消纳率:光伏发电/累计用电*100%
......
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