Commit 4078e99b authored by ZWT's avatar ZWT

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

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent f46282b1
...@@ -4,9 +4,11 @@ import cn.hutool.core.collection.CollUtil; ...@@ -4,9 +4,11 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import pps.cloud.prediction.service.IThirdActivePowerCloudService; import pps.cloud.prediction.service.IThirdPowerCloudService;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerInput; import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerInput;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput; import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateInput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateOutput;
import pps.cloud.space.service.IDailyElectricityTrendCloudService; import pps.cloud.space.service.IDailyElectricityTrendCloudService;
import pps.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
import pps.core.space.entity.SpaceOptimizeShortDurationView; import pps.core.space.entity.SpaceOptimizeShortDurationView;
...@@ -16,6 +18,7 @@ import xstartup.base.XContext; ...@@ -16,6 +18,7 @@ import xstartup.base.XContext;
import xstartup.data.XListResult; import xstartup.data.XListResult;
import xstartup.data.XServiceResult; import xstartup.data.XServiceResult;
import java.math.BigDecimal;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -50,7 +53,7 @@ public class DailyElectricityTrendCloudServiceImpl extends SpaceOptimizeBaseServ ...@@ -50,7 +53,7 @@ public class DailyElectricityTrendCloudServiceImpl extends SpaceOptimizeBaseServ
//查昨日间开优化结果 //查昨日间开优化结果
Map<String, List<SpaceOptimizeShortDurationView>> lineMap = this.getOptimizationResult(context, yesterday); Map<String, List<SpaceOptimizeShortDurationView>> lineMap = this.getOptimizationResult(context, yesterday);
//查昨日日累计发电 //查昨日日累计发电
Map<String, BigDecimal> dailyUpdatePowerMap = this.getDailyUpdatePowerMap(context, yesterday);
//遍历大的 //遍历大的
for (String stationName : powerMap.keySet()) { for (String stationName : powerMap.keySet()) {
...@@ -62,27 +65,28 @@ public class DailyElectricityTrendCloudServiceImpl extends SpaceOptimizeBaseServ ...@@ -62,27 +65,28 @@ public class DailyElectricityTrendCloudServiceImpl extends SpaceOptimizeBaseServ
/*------------------------------------- private -------------------------------------*/ /*------------------------------------- private -------------------------------------*/
/** /**
* 获取优化结果 * 查询每日井场日累计数据
* *
* @param context 上下文 * @param context 上下文
* @param optimizeDate 优化日期 * @param createDate 创建日期
* @return {@link Map }<{@link String }, {@link List }<{@link SpaceOptimizeShortDurationView }>> * @return {@link Map }<{@link String }, {@link BigDecimal }>
*/ */
private Map<String, List<SpaceOptimizeShortDurationView>> getOptimizationResult(XContext context, Date optimizeDate) { private Map<String, BigDecimal> getDailyUpdatePowerMap(XContext context, Date createDate) {
SpaceOptimizeShortDurationViewMapper shortMapper = context.getBean(SpaceOptimizeShortDurationViewMapper.class); IThirdPowerCloudService service = context.getBean(IThirdPowerCloudService.class);
List<SpaceOptimizeShortDurationView> durationList = shortMapper.selectOptimizationResultList(SpaceOptimizeShortDurationView.builder() XListResult<GetThirdDailyAccumulationUpdateOutput> result = service.queryDailyUpdatePower(context, GetThirdDailyAccumulationUpdateInput.builder()
.optimizeDate(optimizeDate) .createDate(createDate)
.build()); .build());
Map<String, List<SpaceOptimizeShortDurationView>> lineMap; result.throwIfFail();
if (CollUtil.isEmpty(durationList)) { Map<String, BigDecimal> powerMap;
lineMap = Collections.emptyMap(); List<GetThirdDailyAccumulationUpdateOutput> powerList = result.getResult();
if (CollUtil.isEmpty(powerList)) {
powerMap = Collections.emptyMap();
} else { } else {
lineMap = durationList.stream() powerMap = powerList.stream()
.collect(Collectors.groupingBy(SpaceOptimizeShortDurationView::getLineName)); .collect(Collectors.toMap(GetThirdDailyAccumulationUpdateOutput::getStationName, GetThirdDailyAccumulationUpdateOutput::getPhotovoltaicPower));
} }
return lineMap; return powerMap;
} }
/** /**
...@@ -93,7 +97,7 @@ public class DailyElectricityTrendCloudServiceImpl extends SpaceOptimizeBaseServ ...@@ -93,7 +97,7 @@ public class DailyElectricityTrendCloudServiceImpl extends SpaceOptimizeBaseServ
* @return {@link Map }<{@link String }, {@link List }<{@link GetThirdActivePowerOutput }>> * @return {@link Map }<{@link String }, {@link List }<{@link GetThirdActivePowerOutput }>>
*/ */
private Map<String, List<GetThirdActivePowerOutput>> getAvgPhotovoltaicPower(XContext context, Date createDate) { private Map<String, List<GetThirdActivePowerOutput>> getAvgPhotovoltaicPower(XContext context, Date createDate) {
IThirdActivePowerCloudService service = context.getBean(IThirdActivePowerCloudService.class); IThirdPowerCloudService service = context.getBean(IThirdPowerCloudService.class);
XListResult<GetThirdActivePowerOutput> result = service.queryAvgPhotovoltaicPower(context, GetThirdActivePowerInput.builder() XListResult<GetThirdActivePowerOutput> result = service.queryAvgPhotovoltaicPower(context, GetThirdActivePowerInput.builder()
.createDate(createDate) .createDate(createDate)
.build()); .build());
...@@ -108,4 +112,26 @@ public class DailyElectricityTrendCloudServiceImpl extends SpaceOptimizeBaseServ ...@@ -108,4 +112,26 @@ public class DailyElectricityTrendCloudServiceImpl extends SpaceOptimizeBaseServ
} }
return powerMap; return powerMap;
} }
/**
* 获取优化结果
*
* @param context 上下文
* @param optimizeDate 优化日期
* @return {@link Map }<{@link String }, {@link List }<{@link SpaceOptimizeShortDurationView }>>
*/
private Map<String, List<SpaceOptimizeShortDurationView>> getOptimizationResult(XContext context, Date optimizeDate) {
SpaceOptimizeShortDurationViewMapper shortMapper = context.getBean(SpaceOptimizeShortDurationViewMapper.class);
List<SpaceOptimizeShortDurationView> durationList = shortMapper.selectOptimizationResultList(SpaceOptimizeShortDurationView.builder()
.optimizeDate(optimizeDate)
.build());
Map<String, List<SpaceOptimizeShortDurationView>> lineMap;
if (CollUtil.isEmpty(durationList)) {
lineMap = Collections.emptyMap();
} else {
lineMap = durationList.stream()
.collect(Collectors.groupingBy(SpaceOptimizeShortDurationView::getLineName));
}
return lineMap;
}
} }
...@@ -2,6 +2,8 @@ package pps.cloud.prediction.service; ...@@ -2,6 +2,8 @@ package pps.cloud.prediction.service;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerInput; import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerInput;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput; import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateInput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateOutput;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -15,7 +17,7 @@ import xstartup.data.XListResult; ...@@ -15,7 +17,7 @@ import xstartup.data.XListResult;
*/ */
@XService @XService
@XText("第三方有功功率Cloud模块") @XText("第三方有功功率Cloud模块")
public interface IThirdActivePowerCloudService { public interface IThirdPowerCloudService {
/** /**
* 获得15分钟平均功率 * 获得15分钟平均功率
...@@ -26,4 +28,13 @@ public interface IThirdActivePowerCloudService { ...@@ -26,4 +28,13 @@ public interface IThirdActivePowerCloudService {
*/ */
@XText("第三方有功功率Cloud模块--获得15分钟平均功率") @XText("第三方有功功率Cloud模块--获得15分钟平均功率")
XListResult<GetThirdActivePowerOutput> queryAvgPhotovoltaicPower(XContext context, GetThirdActivePowerInput input); XListResult<GetThirdActivePowerOutput> queryAvgPhotovoltaicPower(XContext context, GetThirdActivePowerInput input);
/**
* 查询每日井场日累计数据
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetThirdDailyAccumulationUpdateOutput }>
*/
XListResult<GetThirdDailyAccumulationUpdateOutput> queryDailyUpdatePower(XContext context, GetThirdDailyAccumulationUpdateInput input);
} }
package pps.cloud.prediction.service.data.third_daily_accumulation_update;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.util.Date;
/**
* 第三方井场日累计数据
*
* @author ZWT
* @date 2024/05/23 16:25
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetThirdDailyAccumulationUpdateInput {
@XText("创建时间")
private Date createDate;
}
package pps.cloud.prediction.service.data.third_daily_accumulation_update;
import lombok.Data;
import xstartup.annotation.XText;
import java.math.BigDecimal;
/**
* 第三方井场日累计数据
*
* @author ZWT
* @date 2024/05/23 16:25
*/
@Data
public class GetThirdDailyAccumulationUpdateOutput {
@XText("井组名称(线路/光伏电站)")
private String stationName;
@XText("光伏日累计发电(KWh)")
private BigDecimal photovoltaicPower;
}
package pps.core.prediction.service; package pps.core.prediction.service;
import pps.cloud.prediction.service.IThirdActivePowerCloudService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.prediction.service.IThirdPowerCloudService;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerInput; import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerInput;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput; import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateInput;
import pps.cloud.prediction.service.data.third_daily_accumulation_update.GetThirdDailyAccumulationUpdateOutput;
import pps.core.prediction.entity.ThirdActivePowerView; import pps.core.prediction.entity.ThirdActivePowerView;
import pps.core.prediction.entity.ThirdDailyAccumulationUpdateEnt;
import pps.core.prediction.mapper.ThirdActivePowerViewMapper; import pps.core.prediction.mapper.ThirdActivePowerViewMapper;
import pps.core.prediction.mapper.ThirdDailyAccumulationUpdateMapper;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -21,7 +26,7 @@ import java.util.List; ...@@ -21,7 +26,7 @@ import java.util.List;
*/ */
@XText("第三方有功功率Cloud模块") @XText("第三方有功功率Cloud模块")
@XService @XService
public class ThirdActivePowerCloudServiceImpl implements IThirdActivePowerCloudService { public class ThirdPowerCloudServiceImpl implements IThirdPowerCloudService {
/** /**
* 获得15分钟平均功率 * 获得15分钟平均功率
...@@ -38,4 +43,24 @@ public class ThirdActivePowerCloudServiceImpl implements IThirdActivePowerCloudS ...@@ -38,4 +43,24 @@ public class ThirdActivePowerCloudServiceImpl implements IThirdActivePowerCloudS
.build()); .build());
return XListResult.success(XCopyUtils.copyNewList(list, GetThirdActivePowerOutput.class)); return XListResult.success(XCopyUtils.copyNewList(list, GetThirdActivePowerOutput.class));
} }
}
/**
* 查询每日井场日累计数据
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetThirdDailyAccumulationUpdateOutput }>
*/
@Override
public XListResult<GetThirdDailyAccumulationUpdateOutput> queryDailyUpdatePower(XContext context, GetThirdDailyAccumulationUpdateInput input) {
ThirdDailyAccumulationUpdateMapper mapper = context.getBean(ThirdDailyAccumulationUpdateMapper.class);
List<ThirdDailyAccumulationUpdateEnt> list = mapper.selectList(new QueryWrapper<ThirdDailyAccumulationUpdateEnt>()
.select("station_name", "IFNULL( AVG( photovoltaic_power ), 0 ) AS photovoltaic_power")
.lambda()
.gt(ThirdDailyAccumulationUpdateEnt::getPhotovoltaicPower, 0)
.apply("DATE( create_date ) = {0}", input.getCreateDate())
.groupBy(ThirdDailyAccumulationUpdateEnt::getStationName)
);
return XListResult.success(XCopyUtils.copyNewList(list, GetThirdDailyAccumulationUpdateOutput.class));
}
}
\ No newline at end of file
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