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
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.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.entity.BaseModel;
import pps.core.space.entity.SpaceInstitutionDetailEnt;
......@@ -16,12 +19,15 @@ import pps.core.space.entity.SpaceInstitutionWellheadView;
import pps.core.space.enums.BusinessError;
import pps.core.space.mapper.SpaceInstitutionDetailMapper;
import pps.core.space.mapper.SpaceInstitutionWellheadViewMapper;
import pps.core.space.service.data.SpaceOptimizeWellheadAndPlant;
import xstartup.base.XContext;
import xstartup.base.exception.XServiceException;
import xstartup.data.XListResult;
import java.math.BigDecimal;
import java.util.*;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
......@@ -60,9 +66,9 @@ public class SpaceOptimizeBaseService {
*
* @param context 上下文
* @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> institutionIds = new HashSet<>(32);
for (SpaceInstitutionDetailEnt spaceInstitutionDetailEnt : detailEntList) {
......@@ -83,10 +89,30 @@ public class SpaceOptimizeBaseService {
//未发现可用光伏电站
throw new XServiceException(BusinessError.DidNotFindPlant);
}
Map<String, List> result = new HashMap<>(4);
result.put(BusinessConstant.WELLHEAD, spaceWellheadList);
result.put(BusinessConstant.PHOTOVOLTAIC_POWER_STATION, plantList);
return result;
return SpaceOptimizeWellheadAndPlant.builder()
.spaceWellheadList(spaceWellheadList)
.plantIdsByLineIdMap(
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-----------------------------------*/
......
......@@ -7,7 +7,6 @@ import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.GetBasePriceStrategyDetailOutput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
......@@ -21,6 +20,7 @@ import pps.core.space.mapper.SpaceInstitutionDurationMapper;
import pps.core.space.mapper.SpaceOptimizeLongDurationViewMapper;
import pps.core.space.mapper.SpaceOptimizeLongPeriodViewMapper;
import pps.core.space.mapper.SpaceOptimizeLongWellheadViewMapper;
import pps.core.space.service.data.SpaceOptimizeWellheadAndPlant;
import pps.core.space.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.base.XContext;
......@@ -52,9 +52,9 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService
DateTime date = DateUtil.date();
//取生效中的基础间开
List<SpaceInstitutionDetailEnt> detailEntList = super.getEffectiveSpaceInstitution(context, date.toString(BusinessConstant.DATE_FORMAT_DAY));
Map<String, List> wellheadAndPlant = super.getWellheadAndPlant(context, detailEntList);
List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadAndPlant.get(BusinessConstant.WELLHEAD);
List<DynamicQueryBasePowerLinePlantOutput> plantList = wellheadAndPlant.get(BusinessConstant.PHOTOVOLTAIC_POWER_STATION);
SpaceOptimizeWellheadAndPlant wellheadAndPlant = super.getWellheadAndPlant(context, detailEntList);
List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadAndPlant.getSpaceWellheadList();
Map<String, List<String>> plantIdsByLineIdMap = wellheadAndPlant.getPlantIdsByLineIdMap();
//取年份
int year = date.year();
//月份要加一
......@@ -82,14 +82,9 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService
//并网型优化
case "1":
//获取当前制度对应的光伏预测数据列表
List<DynamicQueryPlantPredictedPowerOutput> avgPowerList = ServiceUtil.getAveragePowerGenerationListByPlantIds(context,
List<DynamicQueryPlantPredictedPowerOutput> avgPowerList = super.getAveragePowerGenerationListByPlantIds(context,
DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(
plantList.stream()
.filter(p -> StringUtils.equals(lineId, p.getLineId()))
.map(DynamicQueryBasePowerLinePlantOutput::getPlantId)
.collect(Collectors.toList())
)
.plantIds(plantIdsByLineIdMap.get(lineId))
.yearTime(String.valueOf(year))
.monthTime(month)
.build()
......
......@@ -7,7 +7,6 @@ import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.GetBasePriceStrategyDetailOutput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
......@@ -18,6 +17,7 @@ import pps.core.common.entity.BaseModel;
import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.*;
import pps.core.space.mapper.SpaceInstitutionDurationMapper;
import pps.core.space.service.data.SpaceOptimizeWellheadAndPlant;
import pps.core.space.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.base.XContext;
......@@ -50,9 +50,9 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
String startWeek = date.toString(BusinessConstant.DATE_FORMAT_DAY);
//取生效中的基础间开
List<SpaceInstitutionDetailEnt> detailEntList = super.getEffectiveSpaceInstitution(context, startWeek);
Map<String, List> wellheadAndPlant = super.getWellheadAndPlant(context, detailEntList);
List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadAndPlant.get(BusinessConstant.WELLHEAD);
List<DynamicQueryBasePowerLinePlantOutput> plantList = wellheadAndPlant.get(BusinessConstant.PHOTOVOLTAIC_POWER_STATION);
SpaceOptimizeWellheadAndPlant wellheadAndPlant = super.getWellheadAndPlant(context, detailEntList);
List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadAndPlant.getSpaceWellheadList();
Map<String, List<String>> plantIdsByLineIdMap = wellheadAndPlant.getPlantIdsByLineIdMap();
//下一周
String nextWeek = DateUtil.nextWeek().toString(BusinessConstant.DATE_FORMAT_DAY);
//月份要加一
......@@ -74,14 +74,9 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
//并网型优化
case "1":
//获取当前制度对应的光伏预测数据列表
List<DynamicQueryPlantPredictedPowerOutput> avgPowerList = ServiceUtil.getAveragePowerGenerationListByPlantIds(context,
List<DynamicQueryPlantPredictedPowerOutput> avgPowerList = super.getAveragePowerGenerationListByPlantIds(context,
DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(
plantList.stream()
.filter(p -> StringUtils.equals(lineId, p.getLineId()))
.map(DynamicQueryBasePowerLinePlantOutput::getPlantId)
.collect(Collectors.toList())
)
.plantIds(plantIdsByLineIdMap.get(lineId))
.startTime(startWeek)
.endTime(nextWeek)
.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
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.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.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.SystemDictionaryService;
import pps.cloud.system.service.data.*;
......@@ -147,21 +142,6 @@ public class ServiceUtil {
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