Commit 6ad5dbda authored by ZWT's avatar ZWT

feat(能源管理系统): 间开优化定时任务

1.开发间开优化长期间开优化定时任务,完成并网流程绿电消纳优先策略;
2.开发间开优化长期间开优化定时任务,完成并网流程消峰平谷策略;
3.开发间开优化中短期间开优化定时任务,创建定时任务并添加配置;
4.抽取间开优化定时任务逻辑处理父类,对长期间开优化定时任务/中短期间开优化定时任务代码结构进行优化;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 6c2b5973
...@@ -9,6 +9,9 @@ import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLi ...@@ -9,6 +9,9 @@ import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLi
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput; import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput; import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput; import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput;
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.core.common.constant.BusinessConstant; import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel; import pps.core.common.entity.BaseModel;
import pps.core.space.entity.SpaceInstitutionDetailEnt; import pps.core.space.entity.SpaceInstitutionDetailEnt;
...@@ -16,12 +19,15 @@ import pps.core.space.entity.SpaceInstitutionWellheadView; ...@@ -16,12 +19,15 @@ import pps.core.space.entity.SpaceInstitutionWellheadView;
import pps.core.space.enums.BusinessError; import pps.core.space.enums.BusinessError;
import pps.core.space.mapper.SpaceInstitutionDetailMapper; import pps.core.space.mapper.SpaceInstitutionDetailMapper;
import pps.core.space.mapper.SpaceInstitutionWellheadViewMapper; import pps.core.space.mapper.SpaceInstitutionWellheadViewMapper;
import pps.core.space.service.data.SpaceOptimizeWellheadAndPlant;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.base.exception.XServiceException; import xstartup.base.exception.XServiceException;
import xstartup.data.XListResult; import xstartup.data.XListResult;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -60,9 +66,9 @@ public class SpaceOptimizeBaseService { ...@@ -60,9 +66,9 @@ public class SpaceOptimizeBaseService {
* *
* @param context 上下文 * @param context 上下文
* @param detailEntList 详细ent列表 * @param detailEntList 详细ent列表
* @return {@link Map}<{@link String}, {@link List}> * @return {@link SpaceOptimizeWellheadAndPlant}
*/ */
public Map<String, List> getWellheadAndPlant(XContext context, List<SpaceInstitutionDetailEnt> detailEntList) { public SpaceOptimizeWellheadAndPlant getWellheadAndPlant(XContext context, List<SpaceInstitutionDetailEnt> detailEntList) {
Set<String> lineIds = new HashSet<>(32); Set<String> lineIds = new HashSet<>(32);
Set<String> institutionIds = new HashSet<>(32); Set<String> institutionIds = new HashSet<>(32);
for (SpaceInstitutionDetailEnt spaceInstitutionDetailEnt : detailEntList) { for (SpaceInstitutionDetailEnt spaceInstitutionDetailEnt : detailEntList) {
...@@ -83,10 +89,30 @@ public class SpaceOptimizeBaseService { ...@@ -83,10 +89,30 @@ public class SpaceOptimizeBaseService {
//未发现可用光伏电站 //未发现可用光伏电站
throw new XServiceException(BusinessError.DidNotFindPlant); throw new XServiceException(BusinessError.DidNotFindPlant);
} }
Map<String, List> result = new HashMap<>(4); return SpaceOptimizeWellheadAndPlant.builder()
result.put(BusinessConstant.WELLHEAD, spaceWellheadList); .spaceWellheadList(spaceWellheadList)
result.put(BusinessConstant.PHOTOVOLTAIC_POWER_STATION, plantList); .plantIdsByLineIdMap(
return result; plantList.stream()
.collect(
Collectors.groupingBy(DynamicQueryBasePowerLinePlantOutput::getLineId,
Collectors.mapping(DynamicQueryBasePowerLinePlantOutput::getPlantId, Collectors.toList()))
)
)
.build();
}
/**
* 条件获取获取光伏预测各时段平均值列表
*
* @param context 上下文
* @param input 输入
* @return {@link List}<{@link DynamicQueryPlantPredictedPowerOutput}>
*/
public List<DynamicQueryPlantPredictedPowerOutput> getAveragePowerGenerationListByPlantIds(XContext context, DynamicQueryPlantPredictedPowerInput input) {
IPlantPredictedPowerCloudService cloudService = context.getBean(IPlantPredictedPowerCloudService.class);
XListResult<DynamicQueryPlantPredictedPowerOutput> result = cloudService.queryAveragePowerGenerationListByParam(context, input);
result.throwIfFail();
return result.getResult();
} }
/*-----------------------------------private-----------------------------------*/ /*-----------------------------------private-----------------------------------*/
......
...@@ -7,7 +7,6 @@ import cn.hutool.core.date.DateUnit; ...@@ -7,7 +7,6 @@ import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput; import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput; import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput; import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
...@@ -21,6 +20,7 @@ import pps.core.space.mapper.SpaceInstitutionDurationMapper; ...@@ -21,6 +20,7 @@ import pps.core.space.mapper.SpaceInstitutionDurationMapper;
import pps.core.space.mapper.SpaceOptimizeLongDurationViewMapper; import pps.core.space.mapper.SpaceOptimizeLongDurationViewMapper;
import pps.core.space.mapper.SpaceOptimizeLongPeriodViewMapper; import pps.core.space.mapper.SpaceOptimizeLongPeriodViewMapper;
import pps.core.space.mapper.SpaceOptimizeLongWellheadViewMapper; import pps.core.space.mapper.SpaceOptimizeLongWellheadViewMapper;
import pps.core.space.service.data.SpaceOptimizeWellheadAndPlant;
import pps.core.space.utils.ServiceUtil; import pps.core.space.utils.ServiceUtil;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -52,9 +52,9 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -52,9 +52,9 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService
DateTime date = DateUtil.date(); DateTime date = DateUtil.date();
//取生效中的基础间开 //取生效中的基础间开
List<SpaceInstitutionDetailEnt> detailEntList = super.getEffectiveSpaceInstitution(context, date.toString(BusinessConstant.DATE_FORMAT_DAY)); List<SpaceInstitutionDetailEnt> detailEntList = super.getEffectiveSpaceInstitution(context, date.toString(BusinessConstant.DATE_FORMAT_DAY));
Map<String, List> wellheadAndPlant = super.getWellheadAndPlant(context, detailEntList); SpaceOptimizeWellheadAndPlant wellheadAndPlant = super.getWellheadAndPlant(context, detailEntList);
List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadAndPlant.get(BusinessConstant.WELLHEAD); List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadAndPlant.getSpaceWellheadList();
List<DynamicQueryBasePowerLinePlantOutput> plantList = wellheadAndPlant.get(BusinessConstant.PHOTOVOLTAIC_POWER_STATION); Map<String, List<String>> plantIdsByLineIdMap = wellheadAndPlant.getPlantIdsByLineIdMap();
//取年份 //取年份
int year = date.year(); int year = date.year();
//月份要加一 //月份要加一
...@@ -82,14 +82,9 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -82,14 +82,9 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService
//并网型优化 //并网型优化
case "1": case "1":
//获取当前制度对应的光伏预测数据列表 //获取当前制度对应的光伏预测数据列表
List<DynamicQueryPlantPredictedPowerOutput> avgPowerList = ServiceUtil.getAveragePowerGenerationListByPlantIds(context, List<DynamicQueryPlantPredictedPowerOutput> avgPowerList = super.getAveragePowerGenerationListByPlantIds(context,
DynamicQueryPlantPredictedPowerInput.builder() DynamicQueryPlantPredictedPowerInput.builder()
.plantIds( .plantIds(plantIdsByLineIdMap.get(lineId))
plantList.stream()
.filter(p -> StringUtils.equals(lineId, p.getLineId()))
.map(DynamicQueryBasePowerLinePlantOutput::getPlantId)
.collect(Collectors.toList())
)
.yearTime(String.valueOf(year)) .yearTime(String.valueOf(year))
.monthTime(month) .monthTime(month)
.build() .build()
......
...@@ -7,7 +7,6 @@ import cn.hutool.core.date.DateUnit; ...@@ -7,7 +7,6 @@ import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput; import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput; import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput; import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
...@@ -18,6 +17,7 @@ import pps.core.common.entity.BaseModel; ...@@ -18,6 +17,7 @@ import pps.core.common.entity.BaseModel;
import pps.core.common.utils.BaseUtils; import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.*; import pps.core.space.entity.*;
import pps.core.space.mapper.SpaceInstitutionDurationMapper; import pps.core.space.mapper.SpaceInstitutionDurationMapper;
import pps.core.space.service.data.SpaceOptimizeWellheadAndPlant;
import pps.core.space.utils.ServiceUtil; import pps.core.space.utils.ServiceUtil;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.base.XContext; import xstartup.base.XContext;
...@@ -50,9 +50,9 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i ...@@ -50,9 +50,9 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
String startWeek = date.toString(BusinessConstant.DATE_FORMAT_DAY); String startWeek = date.toString(BusinessConstant.DATE_FORMAT_DAY);
//取生效中的基础间开 //取生效中的基础间开
List<SpaceInstitutionDetailEnt> detailEntList = super.getEffectiveSpaceInstitution(context, startWeek); List<SpaceInstitutionDetailEnt> detailEntList = super.getEffectiveSpaceInstitution(context, startWeek);
Map<String, List> wellheadAndPlant = super.getWellheadAndPlant(context, detailEntList); SpaceOptimizeWellheadAndPlant wellheadAndPlant = super.getWellheadAndPlant(context, detailEntList);
List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadAndPlant.get(BusinessConstant.WELLHEAD); List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadAndPlant.getSpaceWellheadList();
List<DynamicQueryBasePowerLinePlantOutput> plantList = wellheadAndPlant.get(BusinessConstant.PHOTOVOLTAIC_POWER_STATION); Map<String, List<String>> plantIdsByLineIdMap = wellheadAndPlant.getPlantIdsByLineIdMap();
//下一周 //下一周
String nextWeek = DateUtil.nextWeek().toString(BusinessConstant.DATE_FORMAT_DAY); String nextWeek = DateUtil.nextWeek().toString(BusinessConstant.DATE_FORMAT_DAY);
//月份要加一 //月份要加一
...@@ -74,14 +74,9 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i ...@@ -74,14 +74,9 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
//并网型优化 //并网型优化
case "1": case "1":
//获取当前制度对应的光伏预测数据列表 //获取当前制度对应的光伏预测数据列表
List<DynamicQueryPlantPredictedPowerOutput> avgPowerList = ServiceUtil.getAveragePowerGenerationListByPlantIds(context, List<DynamicQueryPlantPredictedPowerOutput> avgPowerList = super.getAveragePowerGenerationListByPlantIds(context,
DynamicQueryPlantPredictedPowerInput.builder() DynamicQueryPlantPredictedPowerInput.builder()
.plantIds( .plantIds(plantIdsByLineIdMap.get(lineId))
plantList.stream()
.filter(p -> StringUtils.equals(lineId, p.getLineId()))
.map(DynamicQueryBasePowerLinePlantOutput::getPlantId)
.collect(Collectors.toList())
)
.startTime(startWeek) .startTime(startWeek)
.endTime(nextWeek) .endTime(nextWeek)
.build() .build()
......
package pps.core.space.service.data;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import pps.core.space.entity.SpaceInstitutionWellheadView;
import java.util.List;
import java.util.Map;
/**
* 间开优化数据集
*
* @author ZWT
* @date 2023/09/18 16:42
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SpaceOptimizeWellheadAndPlant {
/**
* 井口列表
*/
List<SpaceInstitutionWellheadView> spaceWellheadList;
/**
* 电站Map
*/
Map<String, List<String>> plantIdsByLineIdMap;
}
...@@ -10,13 +10,8 @@ import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineInpu ...@@ -10,13 +10,8 @@ import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineInpu
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput; import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput;
import pps.cloud.base.service.data.base_power_line.GetBasePowerLineInput; import pps.cloud.base.service.data.base_power_line.GetBasePowerLineInput;
import pps.cloud.base.service.data.base_power_line.GetBasePowerLineViewOutput; import pps.cloud.base.service.data.base_power_line.GetBasePowerLineViewOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantOutput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput; import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput; import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput;
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.system.service.SysOrganizationCloudService; import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.SystemDictionaryService; import pps.cloud.system.service.SystemDictionaryService;
import pps.cloud.system.service.data.*; import pps.cloud.system.service.data.*;
...@@ -147,21 +142,6 @@ public class ServiceUtil { ...@@ -147,21 +142,6 @@ public class ServiceUtil {
return result.getResult(); return result.getResult();
} }
/**
* 条件获取获取光伏预测各时段平均值列表
*
* @param context 上下文
* @param input 输入
* @return {@link List}<{@link DynamicQueryPlantPredictedPowerOutput}>
*/
public static List<DynamicQueryPlantPredictedPowerOutput> getAveragePowerGenerationListByPlantIds(XContext context, DynamicQueryPlantPredictedPowerInput input) {
IPlantPredictedPowerCloudService cloudService = context.getBean(IPlantPredictedPowerCloudService.class);
XListResult<DynamicQueryPlantPredictedPowerOutput> result = cloudService.queryAveragePowerGenerationListByParam(context, input);
result.throwIfFail();
return result.getResult();
}
/** /**
* 获取优化日期列表 * 获取优化日期列表
* *
......
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