Commit bb75bfac authored by ZWT's avatar ZWT

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

1.开发间开优化定期校准定时任务,配置表达式修改定时任务配置文件,创建cloud模块方法;
2.开发间开优化定期校准定时任务,完成业务逻辑开发;
3.修改间开制度管理模块定期校准新增功能,增加初始化校准历史业务逻辑;
4.开发间开优化短期间开优化定时任务,配置表达式修改定时任务配置文件,创建cloud模块方法;
5.修改长期间开优化定时任务,添加离网型线路数据处理逻辑;
6.创建储能预测电量数据(模拟数据测试用)表,生成对应代码,添加条件查询各时段储能预测数据Cloud模块接口;
7.修改长期间开优化定时任务,增加离网型算法计算储能可用时长逻辑;
8.修改长期间开优化定时任务,优化部分sql查询语句查询逻辑,优化代码结构;
9.光伏预测Cloud模块查询预测发电量接口修改,增加查询长期发电量逻辑;
10.修改中短期间开优化定时任务,添加离网型优化逻辑;
11.修改长期/中短期间开优化定时任务,优化代码结构;
12.修改基础间开配置模块设为基础间开制度及重新优化接口,增加并网型优化逻辑;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 8786c8de
...@@ -13,7 +13,7 @@ import pps.cloud.base.service.IBasePowerLineCloudService; ...@@ -13,7 +13,7 @@ import pps.cloud.base.service.IBasePowerLineCloudService;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadInput; import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadInput;
import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadViewOutput; import pps.cloud.base.service.data.base_power_line_wellhead.DynamicQueryBasePowerLineWellheadViewOutput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput; 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.storage_predicted_power_data.DynamicQueryStoragePredictedPowerInput;
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.common.session.PpsUserSession; import pps.core.common.session.PpsUserSession;
...@@ -372,35 +372,45 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService { ...@@ -372,35 +372,45 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
String lineId = detail.getLineId(); String lineId = detail.getLineId();
//取年份 //取年份
int year = currentTime.year(); int year = currentTime.year();
int monthIndex = currentTime.month();
//月份要加一 //月份要加一
int monthNum = currentTime.month() + 1; int monthNum = monthIndex + 1;
String month; //上一月
if (monthNum < BusinessConstant.TEN) { int lastMonthNum = monthIndex;
month = "0" + monthNum; int lastYear = year;
} else { if (monthIndex == 0) {
month = String.valueOf(monthNum); lastMonthNum = 12;
lastYear = year - 1;
} }
SpaceOptimizeLineRelation wellheadAndPlant = super.getWellheadAndPlant(context, ListUtil.toList(detail)); SpaceOptimizeLineRelation relation = super.getOptimizeLineRelation(context, ListUtil.toList(detail));
//长期间开优化 //长期间开优化
List<DynamicQueryPlantPredictedPowerOutput> longAvgPowerList = super.getAveragePowerGenerationListByPlantIds(context, this.institutionalOptimization(context, longPeriodDTOList, longWellheadDTOList, longDurationDTOList, longUnOptimizeDurationList, relation,
DynamicQueryPlantPredictedPowerInput.builder() detail, BaseUtils.getExecutionCycleForMonth(currentTime), endOfMonth, monthNum, DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(wellheadAndPlant.getPlantIdsByLineIdMap().get(lineId)) .plantIds(relation.getPlantIdsByLineIdMap().get(lineId))
.yearTime(String.valueOf(year)) .yearTime(String.valueOf(year))
.monthTime(month) .monthTime(BaseUtils.getMonthString(monthNum))
.build() .dateType(BusinessConstant.ZERO)
); .build(),
this.institutionalOptimization(context, longPeriodDTOList, longWellheadDTOList, longDurationDTOList, longUnOptimizeDurationList, wellheadAndPlant, DynamicQueryStoragePredictedPowerInput.builder()
longAvgPowerList, detail, BaseUtils.getExecutionCycleForMonth(currentTime), endOfMonth, monthNum); .storageIds(relation.getPlantIdsByLineIdMap().get(detail.getLineId()))
.yearTime(String.valueOf(lastYear))
.monthTime(BaseUtils.getMonthString(lastMonthNum))
.build());
//中短期间开优化 //中短期间开优化
List<DynamicQueryPlantPredictedPowerOutput> midAvgPowerList = super.getAveragePowerGenerationListByPlantIds(context, this.institutionalOptimization(context, midPeriodDTOList, midWellheadDTOList, midDurationDTOList, midUnOptimizeDurationList, relation,
detail, BaseUtils.getExecutionCycleForWeek(currentTime), endOfWeek, monthNum,
DynamicQueryPlantPredictedPowerInput.builder() DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(wellheadAndPlant.getPlantIdsByLineIdMap().get(lineId)) .plantIds(relation.getPlantIdsByLineIdMap().get(lineId))
.startTime(DateUtil.beginOfWeek(currentTime).toString(BusinessConstant.DATE_FORMAT_DAY)) .startTime(DateUtil.beginOfWeek(currentTime).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(DateUtil.beginOfWeek(DateUtil.nextWeek()).toString(BusinessConstant.DATE_FORMAT_DAY)) .endTime(DateUtil.beginOfWeek(DateUtil.nextWeek()).toString(BusinessConstant.DATE_FORMAT_DAY))
.dateType(BusinessConstant.ONE)
.build(),
DynamicQueryStoragePredictedPowerInput.builder()
.storageIds(relation.getPlantIdsByLineIdMap().get(lineId))
.startTime(DateUtil.offsetDay(currentTime, -7).toString(BusinessConstant.DATE_FORMAT_DAY))
.endTime(currentTime.toString(BusinessConstant.DATE_FORMAT_DAY))
.build() .build()
); );
this.institutionalOptimization(context, midPeriodDTOList, midWellheadDTOList, midDurationDTOList, midUnOptimizeDurationList, wellheadAndPlant,
midAvgPowerList, detail, BaseUtils.getExecutionCycleForWeek(currentTime), endOfWeek, monthNum);
//逻辑删除已创建的长期优化数据 //逻辑删除已创建的长期优化数据
SpaceOptimizeLongPeriodMapper longPeriodMapper = context.getBean(SpaceOptimizeLongPeriodMapper.class); SpaceOptimizeLongPeriodMapper longPeriodMapper = context.getBean(SpaceOptimizeLongPeriodMapper.class);
List<SpaceOptimizeLongPeriodEnt> longPeriodEntList = longPeriodMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeLongPeriodEnt>() List<SpaceOptimizeLongPeriodEnt> longPeriodEntList = longPeriodMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeLongPeriodEnt>()
...@@ -665,7 +675,6 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService { ...@@ -665,7 +675,6 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
mapper.updateById(entity); mapper.updateById(entity);
} }
/** /**
* 制度优化 * 制度优化
* *
...@@ -674,30 +683,32 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService { ...@@ -674,30 +683,32 @@ public class SpaceInstitutionDetailService extends SpaceOptimizeBaseService {
* @param wellheadDTOList 井口dtolist * @param wellheadDTOList 井口dtolist
* @param durationDTOList 持续时间dtolist * @param durationDTOList 持续时间dtolist
* @param unOptimizeDurationList 取消优化工期列表 * @param unOptimizeDurationList 取消优化工期列表
* @param avgPowerList 平均功率列表 * @param relation 关系
* @param detail 细节 * @param detail 细节
* @param executionCycle 执行周期 * @param executionCycle 执行周期
* @param optimizeDeadline 优化截止日期 * @param optimizeDeadline 优化截止日期
* @param monthNum 月份 * @param monthNum 月份
* @param plantPowerInput 电厂功率输入
* @param storagePowerinput 存储电源输入
*/ */
private void institutionalOptimization(XContext context, List<SpaceOptimizePeriodDTO> periodDTOList, List<SpaceOptimizeWellheadDTO> wellheadDTOList, private void institutionalOptimization(XContext context, List<SpaceOptimizePeriodDTO> periodDTOList, List<SpaceOptimizeWellheadDTO> wellheadDTOList,
List<SpaceOptimizeDurationDTO> durationDTOList, List<SpaceOptimizeDurationDTO> unOptimizeDurationList, List<SpaceOptimizeDurationDTO> durationDTOList, List<SpaceOptimizeDurationDTO> unOptimizeDurationList,
SpaceOptimizeLineRelation wellheadAndPlant, List<DynamicQueryPlantPredictedPowerOutput> avgPowerList, SpaceInstitutionDetailEnt detail, SpaceOptimizeLineRelation relation, SpaceInstitutionDetailEnt detail,
String executionCycle, Date optimizeDeadline, int monthNum) { String executionCycle, Date optimizeDeadline, int monthNum,
String detailId = detail.getId(); DynamicQueryPlantPredictedPowerInput plantPowerInput, DynamicQueryStoragePredictedPowerInput storagePowerinput) {
String lineId = detail.getLineId();
List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadAndPlant.getSpaceWellheadList();
SpaceInstitutionDurationMapper durationMapper = context.getBean(SpaceInstitutionDurationMapper.class);
//创建记录 //创建记录
String periodId = super.createOptimizePeriod(periodDTOList, detailId, lineId, executionCycle, optimizeDeadline); String periodId = super.createOptimizePeriod(periodDTOList, detail.getId(), detail.getLineId(), executionCycle, optimizeDeadline);
switch (detail.getGridTypeKey()) { switch (detail.getGridTypeKey()) {
//并网型优化 //并网型优化
case "1": case "1":
super.gridConnectedOptimization(context, durationMapper, wellheadDTOList, durationDTOList, unOptimizeDurationList, super.gridConnectedOptimization(context, wellheadDTOList, durationDTOList, unOptimizeDurationList,
spaceWellheadList, avgPowerList, detail, monthNum, detailId, periodId, lineId); relation.getSpaceWellheadList(), detail, monthNum, periodId, plantPowerInput);
break; break;
//离网型优化 //离网型优化
case "0": case "0":
super.offGridOptimization(context, wellheadDTOList, durationDTOList, unOptimizeDurationList, relation.getSpaceWellheadList(),
relation.getStorageAvgMap(), detail, periodId,
storagePowerinput, plantPowerInput);
break; break;
default: default:
//电网类型不存在 //电网类型不存在
......
...@@ -81,7 +81,7 @@ public class SpaceOptimizeBaseService { ...@@ -81,7 +81,7 @@ public class SpaceOptimizeBaseService {
* @param detailEntList 详细ent列表 * @param detailEntList 详细ent列表
* @return {@link SpaceOptimizeLineRelation} * @return {@link SpaceOptimizeLineRelation}
*/ */
public SpaceOptimizeLineRelation getWellheadAndPlant(XContext context, List<SpaceInstitutionDetailEnt> detailEntList) { public SpaceOptimizeLineRelation getOptimizeLineRelation(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) {
...@@ -740,7 +740,6 @@ public class SpaceOptimizeBaseService { ...@@ -740,7 +740,6 @@ public class SpaceOptimizeBaseService {
return; return;
} }
//获取井口间开时间段 //获取井口间开时间段
SpaceInstitutionDurationMapper durationMapper = context.getBean(SpaceInstitutionDurationMapper.class);
Map<String, List<SpaceInstitutionDurationEnt>> durationMap = this.getDurationMap(context, detail.getId()); Map<String, List<SpaceInstitutionDurationEnt>> durationMap = this.getDurationMap(context, detail.getId());
if (CollUtil.isEmpty(durationMap)) { if (CollUtil.isEmpty(durationMap)) {
//没有设置时间段,无法优化 //没有设置时间段,无法优化
......
...@@ -44,7 +44,7 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -44,7 +44,7 @@ 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));
SpaceOptimizeLineRelation relation = super.getWellheadAndPlant(context, detailEntList); SpaceOptimizeLineRelation relation = super.getOptimizeLineRelation(context, detailEntList);
Map<String, List<String>> plantIdsByLineIdMap = relation.getPlantIdsByLineIdMap(); Map<String, List<String>> plantIdsByLineIdMap = relation.getPlantIdsByLineIdMap();
//取年份 //取年份
int year = date.year(); int year = date.year();
...@@ -57,8 +57,8 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -57,8 +57,8 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService
lastMonthNum = 12; lastMonthNum = 12;
lastYear = year - 1; lastYear = year - 1;
} }
String month = BaseUtils.getMonthString(lastMonthNum); String month = BaseUtils.getMonthString(date.month());
String lastMonth = BaseUtils.getMonthString(date.month()); String lastMonth = BaseUtils.getMonthString(lastMonthNum);
List<SpaceOptimizePeriodDTO> periodDTOList = new ArrayList<>(32); List<SpaceOptimizePeriodDTO> periodDTOList = new ArrayList<>(32);
List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64); List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64);
List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128); List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128);
......
...@@ -45,7 +45,7 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i ...@@ -45,7 +45,7 @@ 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);
SpaceOptimizeLineRelation relation = super.getWellheadAndPlant(context, detailEntList); SpaceOptimizeLineRelation relation = super.getOptimizeLineRelation(context, detailEntList);
Map<String, List<String>> plantIdsByLineIdMap = relation.getPlantIdsByLineIdMap(); Map<String, List<String>> plantIdsByLineIdMap = relation.getPlantIdsByLineIdMap();
//月份要加一 //月份要加一
int monthNum = date.month() + 1; int monthNum = date.month() + 1;
......
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