Commit dacce5c1 authored by ZWT's avatar ZWT

feat(零碳): 长庆演示系统新增功能

1.修改第三方日累计数据推送表表结构,增加日累计储能放电量字段,同时修改代码对应实体及mapper文件,修改相关接口增加储能日累计放电量接收逻辑;
2.修改首页井场收益分析模块接口,修改获取储能累计放电量逻辑;
3.设计并创建井口日用电趋势表,生成对应实体类及mapper文件;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent b414b311
package pps.core.space.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.io.Serializable;
......@@ -15,6 +18,9 @@ import java.util.Date;
* @date 2024/05/22
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class LineDailyElectricityTrendView implements Serializable {
@XText("ID")
@TableField
......
......@@ -69,7 +69,7 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
//查昨日日累计用电
Map<String, BigDecimal> dailyUpdatePowerMap = this.getDailyUpdatePowerMap(context, yesterday);
//查去年同期用电趋势
Map<String, List<LineDailyElectricityTrendEnt>> lastElectricityTrendMap = this.getLastElectricityTrendMap(context, yesterday);
Map<String, LineDailyElectricityTrendEnt> lastElectricityTrendMap = this.getLastElectricityTrendMap(context, yesterday);
//用电趋势计算结果
List<LineDailyElectricityTrendView> stationSaveList = new ArrayList<>(powerMap.size());
//井口用电趋势计算结果
......@@ -81,6 +81,7 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
Map<Integer, List<SpaceOptimizeShortDurationView>> startSeqMap;
List<SpaceOptimizeShortDurationView> durationList;
GetThirdActivePowerOutput thirdActivePower;
BigDecimal dailyElectricityConsumption;
//遍历全量电站
for (String stationName : powerMap.keySet()) {
//取存在的间开
......@@ -138,7 +139,11 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
wellInfo.getRunDuration(), dailyGreenOpenHour, dailyGreenConsumption, yesterday));
}
//计算封装井场用电趋势数据
dailyElectricityConsumption = Optional.ofNullable(dailyUpdatePowerMap.get(stationName)).orElse(BigDecimal.ZERO);
stationSaveList.add(
this.getLineDailyElectricityTrendView(lastElectricityTrendMap.get(stationName),
dailyElectricityConsumption, photovoltaicPower, stationName, yesterday)
);
}
}
//开启事务批量插入
......@@ -175,19 +180,19 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
*
* @param context 上下文
* @param createDate 创建日期
* @return {@link Map }<{@link String }, {@link List }<{@link LineDailyElectricityTrendEnt }>>
* @return {@link Map }<{@link String }, {@link LineDailyElectricityTrendEnt }>
*/
private Map<String, List<LineDailyElectricityTrendEnt>> getLastElectricityTrendMap(XContext context, Date createDate) {
private Map<String, LineDailyElectricityTrendEnt> getLastElectricityTrendMap(XContext context, Date createDate) {
LineDailyElectricityTrendMapper mapper = context.getBean(LineDailyElectricityTrendMapper.class);
List<LineDailyElectricityTrendEnt> list = mapper.selectList(new LambdaQueryWrapper<LineDailyElectricityTrendEnt>()
.apply("DATE( create_date ) = {0}", DateUtil.offset(createDate, DateField.YEAR, -1))
);
Map<String, List<LineDailyElectricityTrendEnt>> collect;
Map<String, LineDailyElectricityTrendEnt> collect;
if (CollUtil.isEmpty(list)) {
collect = Collections.emptyMap();
} else {
collect = list.stream()
.collect(Collectors.groupingBy(LineDailyElectricityTrendEnt::getStationName));
.collect(Collectors.toMap(LineDailyElectricityTrendEnt::getStationName, Function.identity()));
}
return collect;
}
......@@ -354,4 +359,55 @@ public class DailyElectricityTrendCloudServiceImpl implements IDailyElectricityT
}
return view;
}
/**
* 获取线路日电量趋势
*
* @param ent ent
* @param dailyElectricityConsumption 日用电量
* @param photovoltaicPower 光伏发电
* @param stationName 车站名称
* @param yesterday 昨天
* @return {@link LineDailyElectricityTrendView }
*/
private LineDailyElectricityTrendView getLineDailyElectricityTrendView(LineDailyElectricityTrendEnt ent, BigDecimal dailyElectricityConsumption,
BigDecimal photovoltaicPower, String stationName, Date yesterday) {
LineDailyElectricityTrendView view;
if (ObjectUtil.isNotNull(ent)) {
BigDecimal municipalPower = dailyElectricityConsumption.subtract(photovoltaicPower);
view = LineDailyElectricityTrendView.builder()
.stationName(stationName)
.totalPower(dailyElectricityConsumption)
.photovoltaicPower(photovoltaicPower)
//市电日用电量:总用电-光伏用电
.municipalPower(municipalPower)
.lastTotalPower(ent.getTotalPower())
.lastPhotovoltaicPower(ent.getPhotovoltaicPower())
.lastMunicipalPower(ent.getMunicipalPower())
//同比:本期/上期*100
.totalRatio(this.getRate(dailyElectricityConsumption, ent.getTotalPower()))
.photovoltaicRatio(this.getRate(photovoltaicPower, ent.getPhotovoltaicPower()))
.municipalRatio(this.getRate(municipalPower, ent.getMunicipalPower()))
.createDate(yesterday)
.systemSource("长庆")
.build();
} else {
view = LineDailyElectricityTrendView.builder()
.stationName(stationName)
.totalPower(dailyElectricityConsumption)
.photovoltaicPower(photovoltaicPower)
//市电日用电量:总用电-光伏用电
.municipalPower(dailyElectricityConsumption.subtract(photovoltaicPower))
.lastTotalPower(BigDecimal.ZERO)
.lastPhotovoltaicPower(BigDecimal.ZERO)
.lastMunicipalPower(BigDecimal.ZERO)
.totalRatio(BigDecimal.ZERO)
.photovoltaicRatio(BigDecimal.ZERO)
.municipalRatio(BigDecimal.ZERO)
.createDate(yesterday)
.systemSource("长庆")
.build();
}
return view;
}
}
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