Commit 041391c7 authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.修复登录页面登录接口验证码输入后不需要验证直接能登录的问题;
2.长庆演示,首页展示大屏功能修改,修改线路详情接口,增加查询日平均用电量逻辑,同时重构查询日产液量和日发电量逻辑,更新接口文档并完成接口冒烟测试,同时生成用例;
3.长庆极短期间开优化随动算法功能开发,设置自定义参数,初步完成极短时间,间开时间段优化测试功能;
4.间开制度管理模块,间开制度关联井口信息表表结构修改,增加"单次最高开井时长(h)","单次最低开井时长(h)","单次最高关井时长(h)","单次最低关井时长(h)"字段,同时修改数据表对应代码实体及表单参数,修改部分相关模块功能查询修改逻辑;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 0eb06c4a
...@@ -224,7 +224,7 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService { ...@@ -224,7 +224,7 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
DynamicQueryPlantPredictedPowerOutput lastPower; DynamicQueryPlantPredictedPowerOutput lastPower;
GetBasePriceStrategyDetailOutput firstStrategy; GetBasePriceStrategyDetailOutput firstStrategy;
GetBasePriceStrategyDetailOutput lastStrategy; GetBasePriceStrategyDetailOutput lastStrategy;
while (rangeListSize > 0 && rangeListSize > rangeIndex) { while (rangeListSize > 0 && rangeListSize > rangeIndex && powerListSize > powerIndex) {
boolean powerFlag = false; boolean powerFlag = false;
SpaceOptimizeWeight firstWeight = new SpaceOptimizeWeight(); SpaceOptimizeWeight firstWeight = new SpaceOptimizeWeight();
DateTime firstTime = rangeToList.get(rangeIndex); DateTime firstTime = rangeToList.get(rangeIndex);
...@@ -394,8 +394,10 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService { ...@@ -394,8 +394,10 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
duration -= (long) startInterval * i; duration -= (long) startInterval * i;
openTime = DateUtil.offsetMinute(openTime, startInterval * i); openTime = DateUtil.offsetMinute(openTime, startInterval * i);
} }
//偏移开/关井时间
DateTime closeTime = weightDuration.getCloseTime(); DateTime closeTime = weightDuration.getCloseTime();
//正向标识
boolean forwardFlag = true;
//偏移开/关井时间
if (CollUtil.isNotEmpty(optimizeDurationDTOList)) { if (CollUtil.isNotEmpty(optimizeDurationDTOList)) {
SpaceOptimizeDurationDTO durationDTO = optimizeDurationDTOList.get(optimizeDurationDTOList.size() - 1); SpaceOptimizeDurationDTO durationDTO = optimizeDurationDTOList.get(optimizeDurationDTOList.size() - 1);
Date lastOpenTime = durationDTO.getOpenTime(); Date lastOpenTime = durationDTO.getOpenTime();
...@@ -403,6 +405,7 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService { ...@@ -403,6 +405,7 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
long l; long l;
//如果关井时间在上一次开井时间之前,判断是否需要偏移关井时间 //如果关井时间在上一次开井时间之前,判断是否需要偏移关井时间
if (DateUtil.compare(lastOpenTime, closeTime) >= 0) { if (DateUtil.compare(lastOpenTime, closeTime) >= 0) {
forwardFlag = false;
l = closeTime.between(lastOpenTime, DateUnit.MINUTE); l = closeTime.between(lastOpenTime, DateUnit.MINUTE);
long l1 = l - minCloseMinute; long l1 = l - minCloseMinute;
//小于0,说明不满足最小停井时间,需要补 //小于0,说明不满足最小停井时间,需要补
...@@ -484,26 +487,52 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService { ...@@ -484,26 +487,52 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
//满足,判断能满足几次(最大开井时间) //满足,判断能满足几次(最大开井时间)
//todo : 能力有限,只能用(最大开井时间+最小停井时间)固定范围,求不了最优排布 //todo : 能力有限,只能用(最大开井时间+最小停井时间)固定范围,求不了最优排布
int div = (int) NumberUtil.div(duration, maxOpenMinute, 0, RoundingMode.UP); int div = (int) NumberUtil.div(duration, maxOpenMinute, 0, RoundingMode.UP);
for (int i2 = 1; i2 <= div; i2++) { if (forwardFlag) {
DateTime closeTimeNew; //正向拆分
if (duration >= maxOpenMinute) { for (int i2 = 1; i2 <= div; i2++) {
sumOpenTime += maxOpenMinute; DateTime closeTimeNew;
closeTimeNew = openTime.offsetNew(DateField.MINUTE, maxOpenMinute); if (duration >= maxOpenMinute) {
duration = duration - maxOpenMinute - minCloseMinute; sumOpenTime += maxOpenMinute;
} else if (duration >= minOpenMinute) { closeTimeNew = openTime.offsetNew(DateField.MINUTE, maxOpenMinute);
sumOpenTime += minOpenMinute; duration = duration - maxOpenMinute - minCloseMinute;
closeTimeNew = openTime.offsetNew(DateField.MINUTE, minOpenMinute); } else if (duration >= minOpenMinute) {
duration = duration - minOpenMinute - minCloseMinute; sumOpenTime += minOpenMinute;
} else { closeTimeNew = openTime.offsetNew(DateField.MINUTE, minOpenMinute);
//时间不够,舍弃 duration = duration - minOpenMinute - minCloseMinute;
break; } else {
//时间不够,舍弃
break;
}
optimizeDurationDTOList.add(SpaceOptimizeDurationDTO.builder()
.openTime(openTime)
.closeTime(closeTimeNew)
.build());
//下次启动时间为本次关井时间向后移动最小关井时间
openTime = closeTimeNew.offsetNew(DateField.MINUTE, minCloseMinute);
}
} else {
//反向拆分
for (int i2 = 1; i2 <= div; i2++) {
DateTime openTimeNew;
if (duration >= maxOpenMinute) {
sumOpenTime += maxOpenMinute;
openTimeNew = closeTime.offsetNew(DateField.MINUTE, -maxOpenMinute);
duration = duration - maxOpenMinute - minCloseMinute;
} else if (duration >= minOpenMinute) {
sumOpenTime += minOpenMinute;
openTimeNew = closeTime.offsetNew(DateField.MINUTE, -minOpenMinute);
duration = duration - minOpenMinute - minCloseMinute;
} else {
//时间不够,舍弃
break;
}
optimizeDurationDTOList.add(SpaceOptimizeDurationDTO.builder()
.openTime(openTimeNew)
.closeTime(closeTime)
.build());
//下次启动时间为本次关井时间向后移动最小关井时间
closeTime = openTimeNew.offsetNew(DateField.MINUTE, -minCloseMinute);
} }
optimizeDurationDTOList.add(SpaceOptimizeDurationDTO.builder()
.openTime(openTime)
.closeTime(closeTimeNew)
.build());
//下次启动时间为本次关井时间向后移动最小关井时间
openTime = closeTimeNew.offsetNew(DateField.MINUTE, minCloseMinute);
} }
} else { } else {
//不满足,取全部 //不满足,取全部
......
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