Commit c96e416d authored by ZWT's avatar ZWT

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

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent da08b3c5
......@@ -10,6 +10,7 @@ import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.*;
import pps.core.space.mapper.SpaceInstitutionDurationMapper;
import pps.core.space.mapper.SpaceOptimizeViewMapper;
import pps.core.space.service.data.SpaceOptimizeWellheadAndPlant;
import xstartup.annotation.XService;
import xstartup.base.XContext;
......@@ -49,9 +50,9 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
//月份要加一
int monthNum = date.month() + 1;
SpaceInstitutionDurationMapper durationMapper = context.getBean(SpaceInstitutionDurationMapper.class);
List<SpaceOptimizePeriodDTO> midPeriodList = new ArrayList<>(32);
List<SpaceOptimizeWellheadDTO> midWellheadList = new ArrayList<>(64);
List<SpaceOptimizeDurationDTO> midDurationList = new ArrayList<>(128);
List<SpaceOptimizePeriodDTO> periodDTOList = new ArrayList<>(32);
List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64);
List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128);
List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128);
String executionCycleForWeek = BaseUtils.getExecutionCycleForWeek(date);
DateTime optimizeDeadline = DateUtil.beginOfDay(DateUtil.nextWeek());
......@@ -62,7 +63,7 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
String detailId = detail.getId();
String lineId = detail.getLineId();
//创建记录
String midPeriodId = super.createOptimizePeriod(midPeriodList, detailId, lineId, executionCycleForWeek, optimizeDeadline);
String midPeriodId = super.createOptimizePeriod(periodDTOList, detailId, lineId, executionCycleForWeek, optimizeDeadline);
switch (detail.getGridTypeKey()) {
//并网型优化
case "1":
......@@ -91,7 +92,7 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
//光伏出力峰值大于等于井口总功率:绿电消纳优先策略
if (powerMax.compareTo(wellheadTotalPower) >= BusinessConstant.ZERO) {
//---------------------------------绿电消纳策略---------------------------------
super.greenElectricityConsumptionStrategy(midWellheadList, unOptimizeDurationList, midDurationList,
super.greenElectricityConsumptionStrategy(wellheadDTOList, unOptimizeDurationList, durationDTOList,
wellheadViewList, avgPowerList, durationMap, detail, midPeriodId);
} else {
//遍历井口,按发电功率大于等于光伏出力峰值条件分组
......@@ -102,16 +103,16 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
//光伏出力峰值<任何一口井的运行功率:消峰平谷策略
if (size == lowWellheadListSize) {
//---------------------------------消峰平谷策略---------------------------------
super.peakEliminationAndValleyLevelingStrategy(context, midWellheadList, unOptimizeDurationList, midDurationList, wellheadViewList,
super.peakEliminationAndValleyLevelingStrategy(context, wellheadDTOList, unOptimizeDurationList, durationDTOList, wellheadViewList,
durationMap, detail, lineId, monthNum, midPeriodId);
}
//光伏出力峰值>=线路哪部分井口运行功率:满足的部分井口采用绿电消纳优先,不满足的井采用消峰平谷
else {
List<SpaceInstitutionWellheadView> highWellheadList = collect.get(true);
super.greenElectricityConsumptionStrategy(midWellheadList, unOptimizeDurationList, midDurationList,
super.greenElectricityConsumptionStrategy(wellheadDTOList, unOptimizeDurationList, durationDTOList,
highWellheadList, avgPowerList, durationMap, detail, midPeriodId);
super.peakEliminationAndValleyLevelingStrategy(context, midWellheadList, unOptimizeDurationList, midDurationList, lowWellheadList,
durationMap, detail, lineId, monthNum, midPeriodId);
super.peakEliminationAndValleyLevelingStrategy(context, wellheadDTOList, unOptimizeDurationList, durationDTOList,
lowWellheadList, durationMap, detail, lineId, monthNum, midPeriodId);
}
}
break;
......@@ -125,54 +126,46 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
//开启事务
return XTransactionHelper.begin(context, () -> {
int size;
// if (CollUtil.isNotEmpty(longPeriodList)) {
// SpaceOptimizeLongPeriodViewMapper longPeriodViewMapper = context.getBean(SpaceOptimizeLongPeriodViewMapper.class);
// size = longPeriodList.size();
// if (size > BaseUtils.BATCH_SIZE) {
// List<List<SpaceOptimizeLongPeriodView>> subList = BaseUtils.getSubList(longPeriodList);
// subList.forEach(b -> longPeriodViewMapper.batchInsertList(b));
// } else {
// longPeriodViewMapper.batchInsertList(longPeriodList);
// }
// }
// if (CollUtil.isNotEmpty(midWellheadList)) {
// SpaceOptimizeMidWellheadViewMapper longWellheadViewMapper = context.getBean(SpaceOptimizeMidWellheadViewMapper.class);
// size = midWellheadList.size();
// if (size > BaseUtils.BATCH_SIZE) {
// List<List<SpaceOptimizeMidWellheadView>> subList = BaseUtils.getSubList(midWellheadList);
// subList.forEach(b -> longWellheadViewMapper.batchInsertList(b));
// } else {
// longWellheadViewMapper.batchInsertList(midWellheadList);
// }
// }
// if (CollUtil.isNotEmpty(unOptimizeDurationList)) {
// SpaceOptimizeMidDurationViewMapper longDurationViewMapper = context.getBean(SpaceOptimizeMidDurationViewMapper.class);
// size = unOptimizeDurationList.size();
// if (size > BaseUtils.BATCH_SIZE) {
// List<List<SpaceOptimizeMidDurationView>> subList = BaseUtils.getSubList(unOptimizeDurationList);
// subList.forEach(b -> longDurationViewMapper.batchInsertList(b));
// } else {
// longDurationViewMapper.batchInsertList(unOptimizeDurationList);
// }
// }
// if (CollUtil.isNotEmpty(midDurationList)) {
// SpaceOptimizeMidDurationViewMapper longDurationViewMapper = context.getBean(SpaceOptimizeMidDurationViewMapper.class);
// size = midDurationList.size();
// if (size > BaseUtils.BATCH_SIZE) {
// List<List<SpaceOptimizeMidDurationView>> subList = BaseUtils.getSubList(midDurationList);
// subList.forEach(b -> longDurationViewMapper.batchInsertList(b));
// } else {
// longDurationViewMapper.batchInsertList(midDurationList);
// }
// }
SpaceOptimizeViewMapper optimizeViewMapper = context.getBean(SpaceOptimizeViewMapper.class);
if (CollUtil.isNotEmpty(periodDTOList)) {
size = periodDTOList.size();
if (size > BaseUtils.BATCH_SIZE) {
List<List<SpaceOptimizePeriodDTO>> subList = BaseUtils.getSubList(periodDTOList);
subList.forEach(b -> optimizeViewMapper.midPeriodBatchInsertList(b));
} else {
optimizeViewMapper.midPeriodBatchInsertList(periodDTOList);
}
}
if (CollUtil.isNotEmpty(wellheadDTOList)) {
size = wellheadDTOList.size();
if (size > BaseUtils.BATCH_SIZE) {
List<List<SpaceOptimizeWellheadDTO>> subList = BaseUtils.getSubList(wellheadDTOList);
subList.forEach(b -> optimizeViewMapper.midWellheadBatchInsertList(b));
} else {
optimizeViewMapper.midWellheadBatchInsertList(wellheadDTOList);
}
}
if (CollUtil.isNotEmpty(unOptimizeDurationList)) {
size = unOptimizeDurationList.size();
if (size > BaseUtils.BATCH_SIZE) {
List<List<SpaceOptimizeDurationDTO>> subList = BaseUtils.getSubList(unOptimizeDurationList);
subList.forEach(b -> optimizeViewMapper.midDurationBatchInsertList(b));
} else {
optimizeViewMapper.midDurationBatchInsertList(unOptimizeDurationList);
}
}
if (CollUtil.isNotEmpty(durationDTOList)) {
size = durationDTOList.size();
if (size > BaseUtils.BATCH_SIZE) {
List<List<SpaceOptimizeDurationDTO>> subList = BaseUtils.getSubList(durationDTOList);
subList.forEach(b -> optimizeViewMapper.midDurationBatchInsertList(b));
} else {
optimizeViewMapper.midDurationBatchInsertList(durationDTOList);
}
}
return XServiceResult.OK;
});
}
/*-----------------------------------private-----------------------------------*/
}
\ 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