Commit 093bc57e authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.开发中间库表结构及数据导出功能,检查中间库表结构是否有变动,同时获取最新数据,验证数据是否更新;
2.创建场站每日信息统计记录表,新建场站日信息数据采集汇总定时任务,整理汇总场站纬度每日数据,完成功能验证;
3.针对吉林提供的统计数据,对吉林首页部分功能修改;
4.针对中间库每日井口数据统计表结构变动,修改井口日统计定时任务数据处理逻辑,完成功能验证;
5.修改日发电量统计定时任务,排查数据丢失问题,完成功能验证;
6.修改场站每日信息汇总统计定时任务,增加统计每日光伏发电量逻辑,修改表结构及数据结构和业务处理逻辑,完成功能验证;
7.修改吉林首页线路详情接口,区分部署环境,增加吉林个性化数据处理逻辑,完成接口冒烟测试;
8.修改实际发电功率统计定时任务,排查数据丢失问题,完成功能验证;
9.修改实际发电量统计定时任务,排查数据丢失问题,完成功能验证;
10.修改吉林首页井场效果评价数据统计接口,区分部署环境,增加吉林个性化数据处理逻辑,完成接口冒烟测试;
11.能耗分析页面开发吉林个性化功能,完成电量统计接口开发,编辑线上接口文档并生成接口用例,完成接口冒烟测试;
12.能耗分析页面开发吉林个性化功能,完成发电量统计接口开发,编辑线上接口文档并生成接口用例,完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent b914dc3d
......@@ -90,14 +90,8 @@ public class EnergyConsumptionAnalysisService {
.lastPeriodUse(BigDecimal.ZERO)
.build();
//查组织机构下所有线路
List<DynamicQueryBasePowerLineOutput> lineList = ServiceUtil.getBasePowerLineListByOuIdList(context, ServiceUtil.getOrgIdsByPath(context, input.getOuId()));
if (CollUtil.isEmpty(lineList)) {
return XSingleResult.success(output);
}
Set<String> lineNameSet = lineList.stream()
.map(DynamicQueryBasePowerLineOutput::getLineName)
.collect(Collectors.toSet());
//统计电量--本期
Set<String> lineNameSet = this.getLineNameSet(context, input.getOuId());
//统计电量
StationDailyProductionSituationEnt statistics = this.getStationDailyStatistics(context, beginTime, endTime, lineNameSet);
output.setCurrentPeriodGenerate(statistics.getPhotovoltaicPower());
output.setCurrentPeriodUse(statistics.getDailyElectricityConsumption());
......@@ -107,6 +101,79 @@ public class EnergyConsumptionAnalysisService {
return XSingleResult.success(output);
}
/**
* 生成统计列表
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetElectricityStatisticsOutput }>
*/
@XText("能耗分析--发电量统计")
@XApiPost
public XListResult<GetElectricityStatisticsOutput> generateStatisticsList(XContext context, GetStatisticsInput input) {
//日期初始化
input.getBetweenDate();
Date beginTime = input.getBeginTime();
Date endTime = input.getEndTime();
//查组织机构下所有线路
Set<String> lineNameSet = this.getLineNameSet(context, input.getOuId());
boolean yearFlag = input.getDateType().equals(3);
//统计
List<StationDailyProductionSituationEnt> currentList = this.getStationDailyStatisticsList(context, beginTime, endTime, lineNameSet, yearFlag);
Map<Date, BigDecimal> currentMap;
if (CollUtil.isEmpty(currentList)) {
currentMap = Collections.emptyMap();
} else {
currentMap = currentList.stream()
.collect(Collectors.toMap(StationDailyProductionSituationEnt::getDataDate, StationDailyProductionSituationEnt::getPhotovoltaicPower));
}
List<StationDailyProductionSituationEnt> lastList = this.getStationDailyStatisticsList(context, DateUtil.offset(beginTime, DateField.YEAR, -1), DateUtil.offset(endTime, DateField.YEAR, -1), lineNameSet, yearFlag);
Map<Date, BigDecimal> lastMap;
if (CollUtil.isEmpty(lastList)) {
lastMap = Collections.emptyMap();
} else {
lastMap = lastList.stream()
.collect(Collectors.toMap(StationDailyProductionSituationEnt::getDataDate, StationDailyProductionSituationEnt::getPhotovoltaicPower));
}
//封装数据
DateTime now = DateUtil.date();
List<DateTime> rangeToList = DateUtil.rangeToList(beginTime, endTime, yearFlag ? DateField.MONTH : DateField.DAY_OF_YEAR);
List<GetElectricityStatisticsOutput> outputs = new ArrayList<>(rangeToList.size());
for (DateTime dateTime : rangeToList) {
if (DateUtil.compare(dateTime, now) > 0) {
break;
}
outputs.add(
GetElectricityStatisticsOutput.builder()
.currentPeriodGenerate(currentMap.getOrDefault(dateTime, BigDecimal.ZERO))
.lastPeriodGenerate(lastMap.getOrDefault(dateTime, BigDecimal.ZERO))
.dateStr(yearFlag ? dateTime.toString("yyyy-MM") : dateTime.toDateStr())
.build()
);
}
return XListResult.success(outputs);
}
/**
* 获取线路名称集合
*
* @param context 上下文
* @param ouId 你id
* @return {@link Set }<{@link String }>
*/
private Set<String> getLineNameSet(XContext context, String ouId) {
List<DynamicQueryBasePowerLineOutput> lineList = ServiceUtil.getBasePowerLineListByOuIdList(context, ServiceUtil.getOrgIdsByPath(context, ouId));
Set<String> lineNameSet;
if (CollUtil.isEmpty(lineList)) {
lineNameSet = new HashSet<>(2);
lineNameSet.add(BusinessConstant.DEFAULT_VALUE);
} else {
lineNameSet = lineList.stream()
.map(DynamicQueryBasePowerLineOutput::getLineName)
.collect(Collectors.toSet());
}
return lineNameSet;
}
/**
* 获取电站日统计数据
......@@ -128,6 +195,28 @@ public class EnergyConsumptionAnalysisService {
);
}
/**
* 获取电站日统计数据列表
*
* @param context 上下文
* @param beginTime 开始时间
* @param endTime 结束时间
* @param lineNameSet 行名称集
* @param yearFlag 是否按年展示
* @return {@link List }<{@link StationDailyProductionSituationEnt }>
*/
private List<StationDailyProductionSituationEnt> getStationDailyStatisticsList(XContext context, Date beginTime, Date endTime, Set<String> lineNameSet, boolean yearFlag) {
return context.getBean(StationDailyProductionSituationMapper.class).selectList(new QueryWrapper<StationDailyProductionSituationEnt>()
.select("IFNULL( SUM( photovoltaic_power ), 0 ) AS photovoltaic_power",
"IFNULL( SUM( daily_electricity_consumption ), 0 ) AS daily_electricity_consumption",
yearFlag ? "DATE_FORMAT( data_date, '%Y-%m-01' ) AS data_date" : "data_date")
.lambda()
.between(StationDailyProductionSituationEnt::getDataDate, beginTime, endTime)
.in(StationDailyProductionSituationEnt::getStationName, lineNameSet)
.last(yearFlag ? "GROUP BY DATE_FORMAT( data_date, '%Y-%m-01')" : "GROUP BY data_date")
);
}
/*------------------------------ 能耗分析(长庆) ------------------------------*/
......
......@@ -35,4 +35,8 @@ public class GetElectricityStatisticsOutput {
* 同期用电(kwh)
*/
private BigDecimal lastPeriodUse;
/**
* 日期字符串
*/
private String dateStr;
}
......@@ -64,6 +64,7 @@ public class GetStatisticsInput {
} else {
this.beginTime = DateUtil.beginOfDay(this.beginTime);
this.endTime = DateUtil.endOfDay(this.endTime);
this.dateType = 1;
}
}
}
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