Commit 72911469 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.开发间开优化结果统计功能,创建间开优化效果统计表,生成对应代码;
2.修改15天,10天,3天,1天间开优化功能,修改代码结构;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent cf0cfd37
......@@ -4,7 +4,10 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import pps.cloud.prediction.service.IPlantPredictedPowerCloudService;
import pps.cloud.prediction.service.IThirdPowerCloudService;
import pps.cloud.prediction.service.data.plant_predicted_power_data.GetPredictedPowerViewInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.GetPredictedPowerViewOutput;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerInput;
import pps.cloud.prediction.service.data.third_active_power.GetThirdActivePowerOutput;
import pps.cloud.space.service.ISpaceYesterdayGreenRateCloudService;
......@@ -47,9 +50,11 @@ public class SpaceYesterdayGreenRateCloudServiceImpl extends SpaceOptimizeBaseSe
.build());
Map<String, Map<String, Map<Integer, List<SpaceOptimizeShortDurationView>>>> durationCollect;
Map<String, List<GetThirdActivePowerOutput>> activePowerMap;
Map<String, List<GetPredictedPowerViewOutput>> predictionMap;
if (CollUtil.isEmpty(durationViewList)) {
durationCollect = Collections.emptyMap();
activePowerMap = Collections.emptyMap();
predictionMap = Collections.emptyMap();
} else {
//间开区间Map
durationCollect = durationViewList.stream()
......@@ -70,8 +75,21 @@ public class SpaceYesterdayGreenRateCloudServiceImpl extends SpaceOptimizeBaseSe
activePowerMap = powerList.stream()
.collect(Collectors.groupingBy(GetThirdActivePowerOutput::getStationName));
}
//昨日预测发电功率
IPlantPredictedPowerCloudService service = context.getBean(IPlantPredictedPowerCloudService.class);
XListResult<GetPredictedPowerViewOutput> predictionResult = service.queryPredictionPower30(context, GetPredictedPowerViewInput.builder()
.stationNames(durationCollect.keySet())
.dataDate(beginOfYesterday)
.build());
predictionResult.throwIfFail();
List<GetPredictedPowerViewOutput> predictionList = predictionResult.getResult();
if (CollUtil.isEmpty(predictionList)) {
predictionMap = Collections.emptyMap();
} else {
predictionMap = predictionList.stream()
.collect(Collectors.groupingBy(GetPredictedPowerViewOutput::getStationName));
}
}
//初始化时间轴
List<DateTime> rangeToList = DateUtil.rangeToList(DateUtil.offsetDay(BusinessConstant.DATE_FLAG, -1), BusinessConstant.DATE_FLAG, DateField.MINUTE, 30);
......
......@@ -2,6 +2,8 @@ package pps.cloud.prediction.service;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerOutput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.GetPredictedPowerViewInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.GetPredictedPowerViewOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
......@@ -48,6 +50,16 @@ public interface IPlantPredictedPowerCloudService {
@XText("光伏预测Cloud模块--获取每小时平均发电量列表")
XListResult<DynamicQueryPlantPredictedPowerOutput> queryAveragePowerGenerationHourListByParam(XContext context, DynamicQueryPlantPredictedPowerInput input);
/**
* 光伏预测Cloud模块--每30分钟一天预测发电量
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link DynamicQueryPlantPredictedPowerOutput}>
*/
@XText("光伏预测Cloud模块--每30分钟一天预测发电量")
XListResult<GetPredictedPowerViewOutput> queryPredictionPower30(XContext context, GetPredictedPowerViewInput input);
/**
* 日耗电日产液信息定时任务
*
......
package pps.cloud.prediction.service.data.plant_predicted_power_data;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
/**
* 电站预测功率短期72小时数据
*
* @author ZWT
* @date 2024/11/28
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GetPredictedPowerViewInput implements Serializable {
private static final long serialVersionUID = 6448506009773270723L;
@XText("电站名称")
private String stationName;
@XText("电站名称列表")
private Collection<String> stationNames;
@XText("时间")
private Date dataDate;
}
package pps.cloud.prediction.service.data.plant_predicted_power_data;
import lombok.Data;
import xstartup.annotation.XText;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 电站预测功率短期72小时数据
*
* @author ZWT
* @date 2024/11/28
*/
@Data
public class GetPredictedPowerViewOutput implements Serializable {
private static final long serialVersionUID = -1183112288004968421L;
@XText("日期")
private String dataDate;
@XText("预测发电量")
private BigDecimal predictPower;
@XText("电站名称")
private String stationName;
}
package pps.core.prediction.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;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
/**
* 电站预测功率短期72小时数据
*
* @author ZWT
* @date 2024/11/28
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class PlantPredictedPowerShortTermView implements Serializable {
private static final long serialVersionUID = 3175283261612418065L;
@TableField
private Integer id;
@XText("线路id")
@TableField
private String plantId;
@XText("日期")
@TableField
private String dataDate;
@XText("预测功率")
@TableField
private BigDecimal power;
@XText("创建时间")
@TableField
private Date createTime;
@XText("预测发电量")
@TableField
private BigDecimal predictPower;
@XText("电站名称")
@TableField(exist = false)
private String stationName;
@XText("电站名称列表")
@TableField(exist = false)
private Collection<String> stationNames;
@XText("开始时间")
@TableField(exist = false)
private Date startTime;
@XText("结束时间")
@TableField(exist = false)
private Date endTime;
}
package pps.core.prediction.mapper;
import org.springframework.stereotype.Repository;
import pps.core.prediction.entity.PlantPredictedPowerShortTermView;
import java.util.List;
/**
* 电站预测功率短期72小时数据
*
* @author ZWT
* @date 2024/11/28
*/
@Repository(value = "pps.core.prediction.mapper.PlantPredictedPowerShortTermViewMapper")
public interface PlantPredictedPowerShortTermViewMapper {
PlantPredictedPowerShortTermView selectOne(PlantPredictedPowerShortTermView record);
List<PlantPredictedPowerShortTermView> selectList(PlantPredictedPowerShortTermView record);
/**
* 查询预测发电量30分钟
*
* @param record 记录
* @return {@link List }<{@link PlantPredictedPowerShortTermView }>
*/
List<PlantPredictedPowerShortTermView> selectPredictionPower30(PlantPredictedPowerShortTermView record);
}
......@@ -14,12 +14,16 @@ import pps.cloud.middle.service.data.wellhead_daily_production_situation.GetWell
import pps.cloud.prediction.service.IPlantPredictedPowerCloudService;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerOutput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.GetPredictedPowerViewInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.GetPredictedPowerViewOutput;
import pps.core.auth.HttpRequestClient;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils;
import pps.core.prediction.constant.ThirdPartyApiConstant;
import pps.core.prediction.entity.PlantPredictedPowerShortTermView;
import pps.core.prediction.entity.PredictedPowerView;
import pps.core.prediction.entity.WellheadDailyProductionSituationView;
import pps.core.prediction.mapper.PlantPredictedPowerShortTermViewMapper;
import pps.core.prediction.mapper.PredictedPowerViewMapper;
import pps.core.prediction.mapper.WellheadDailyProductionSituationViewMapper;
import pps.core.prediction.service.data.wellhead_daily_production_situation.WellheadDailyProductionSituationJob;
......@@ -172,6 +176,24 @@ public class PlantPredictedPowerCloudServiceImpl implements IPlantPredictedPower
return XListResult.success(outputs);
}
/**
* 光伏预测Cloud模块--每30分钟一天预测发电量
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult }<{@link GetPredictedPowerViewOutput }>
*/
@Override
public XListResult<GetPredictedPowerViewOutput> queryPredictionPower30(XContext context, GetPredictedPowerViewInput input) {
PlantPredictedPowerShortTermViewMapper mapper = context.getBean(PlantPredictedPowerShortTermViewMapper.class);
return XListResult.success(XCopyUtils.copyNewList(mapper.selectPredictionPower30(PlantPredictedPowerShortTermView.builder()
.stationNames(input.getStationNames())
.startTime(input.getDataDate())
.endTime(DateUtil.offsetDay(input.getDataDate(), 1))
.build()),
GetPredictedPowerViewOutput.class));
}
public XServiceResult test(XContext context) {
List<WellheadDailyProductionSituationJob> list = null;
IWellDailyProductionSituationCloudService service = context.getBean(IWellDailyProductionSituationCloudService.class);
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pps.core.prediction.mapper.PlantPredictedPowerShortTermViewMapper">
<resultMap id="BaseResultMap" type="pps.core.prediction.entity.PlantPredictedPowerShortTermView">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="plant_id" property="plantId" jdbcType="VARCHAR"/>
<result column="data_date" property="dataDate" jdbcType="VARCHAR"/>
<result column="power" property="power" jdbcType="DECIMAL"/>
<result column="create_time" property="createTime" jdbcType="DATE"/>
<result column="predict_power" property="predictPower" jdbcType="DECIMAL"/>
</resultMap>
<sql id="Base_Column_List">
id
,
plant_id,
data_date,
power,
create_time,
predict_power
</sql>
<select id="selectOne" parameterType="pps.core.prediction.entity.PlantPredictedPowerShortTermView"
resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from plant_predicted_power_short_term
where
id=#{id}
</select>
<select id="selectList" parameterType="pps.core.prediction.entity.PlantPredictedPowerShortTermView"
resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from plant_predicted_power_short_term
where
id=#{id}
</select>
<resultMap id="ExtResultMap" type="pps.core.prediction.entity.PlantPredictedPowerShortTermView"
extends="BaseResultMap">
<result column="station_name" property="stationName" jdbcType="VARCHAR"/>
</resultMap>
<select id="selectPredictionPower30" parameterType="pps.core.prediction.entity.PlantPredictedPowerShortTermView"
resultMap="BaseResultMap">
SELECT
z.station_name,
z.data_date,
MAX( z.predict_power ) AS predict_power
FROM
(
SELECT
p.station_name,
CASE
WHEN MINUTE ( t.data_date ) &lt; 31 THEN
DATE_FORMAT( t.data_date, '%H:00:00' ) ELSE DATE_FORMAT( t.data_date, '%H:30:00' )
END data_date,
t.predict_power
FROM
base_photovoltaic_plant p
JOIN plant_predicted_power_short_term t ON p.id = t.plant_id
WHERE
data_date BETWEEN #{startTime}
AND #{endTime}
<if test="stationNames != null and stationNames.size() > 0">
AND p.station_name IN
<foreach collection="stationNames" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
) z
GROUP BY
z.station_name,
z.data_date
ORDER BY
z.station_name,
z.data_date
</select>
</mapper>
\ 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