Commit e949310f authored by ZWT's avatar ZWT

feat(零碳): 长庆

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent d6d715e1
......@@ -161,7 +161,6 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
//权重数组
int[] ladder = {10, 5, 3, 1};
//时间间隔
Integer startInterval;
for (SpaceInstitutionDetailEnt detail : detailEntList) {
//创建记录
periodId = this.createOptimizePeriod(periodDTOList, detail.getId(), detail.getLineId(),
......@@ -201,7 +200,7 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
SpaceInstitutionWellheadView wellhead;
//记录第一次开井时间
DateTime firstOpenWellTime = null;
startInterval = detail.getStartInterval();
int offset = detail.getStartInterval();
for (int i = 0; i < wellheadList.size(); i++) {
wellhead = wellheadList.get(i);
String wellheadId = wellhead.getWellheadId();
......@@ -375,25 +374,25 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
//时间处理并排序(处理后第一次开井时间的索引位置为0)
weightDurationList.sort((o1, o2) -> o2.getWeight() - o1.getWeight());
List<SpaceOptimizeDurationDTO> optimizeDurationDTOList = new ArrayList<>(12);
//从前往后算时间
SpaceOptimizeWeightDuration weightDuration;
//总开井时间
long sumOpenTime = 0;
long duration;
DateTime openTime;
//中断标识
boolean breakFlag = false;
//重新计算标识
boolean againFlag = false;
for (int i1 = 0; i1 < weightDurationList.size(); i1++) {
weightDuration = weightDurationList.get(i1);
duration = weightDuration.getDuration();
openTime = weightDuration.getOpenTime();
SpaceOptimizeWeightDuration weightDuration = weightDurationList.get(i1);
long duration = weightDuration.getDuration();
DateTime openTime = weightDuration.getOpenTime();
//记录第一次开井时间
if (0 == i && 0 == i1) {
firstOpenWellTime = weightDuration.getOpenTime();
}
//偏移其他井口开井时间,并修改时间间隔
if (0 == openTime.compareTo(firstOpenWellTime) && i > 0 && 0 == i1) {
duration -= (long) startInterval * i;
openTime = DateUtil.offsetMinute(openTime, startInterval * i);
}
// if (0 == openTime.compareTo(firstOpenWellTime) && i > 0 && 0 == i1) {
// duration -= (long) startInterval * i;
// openTime = DateUtil.offsetMinute(openTime, startInterval * i);
// }
DateTime closeTime = weightDuration.getCloseTime();
//正向标识
boolean forwardFlag = true;
......@@ -501,7 +500,7 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
duration = duration - minOpenMinute - minCloseMinute;
} else {
//时间不够,舍弃
break;
continue;
}
optimizeDurationDTOList.add(SpaceOptimizeDurationDTO.builder()
.openTime(openTime)
......@@ -524,7 +523,7 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
duration = duration - minOpenMinute - minCloseMinute;
} else {
//时间不够,舍弃
break;
continue;
}
optimizeDurationDTOList.add(SpaceOptimizeDurationDTO.builder()
.openTime(openTimeNew)
......@@ -571,10 +570,47 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
}
}
//结束循环
break;
breakFlag = true;
}
//重新按开井时间排序
optimizeDurationDTOList.sort(Comparator.comparing(SpaceOptimizeDurationDTO::getOpenTime));
//判断第一次开井时间
if (breakFlag || i1 == (weightDurationList.size() - 1)) {
Date checkOpenTime = optimizeDurationDTOList.get(0).getOpenTime();
int check = firstOpenWellTime.compareTo(checkOpenTime);
if (check > 0) {
//如果第一次开井时间大于当前开井时间,修改第一次开井时间
firstOpenWellTime = DateUtil.date(checkOpenTime);
if (breakFlag) {
break;
}
} else if (check == 0) {
if (againFlag) {
break;
}
againFlag = true;
if (0 == i) {
//第一口井跳过
continue;
}
//如果第一次开井时间等于当前开井时间,重置优化结果,偏移启动间隔,重新计算
SpaceOptimizeWeightDuration spaceOptimizeWeightDuration = weightDurationList.get(0);
spaceOptimizeWeightDuration.setOpenTime(
DateUtil.offsetMinute(spaceOptimizeWeightDuration.getOpenTime(), offset)
);
spaceOptimizeWeightDuration.setDuration(
spaceOptimizeWeightDuration.getDuration() - offset
);
offset += detail.getStartInterval();
//信息重置
i1 = -1;
sumOpenTime = 0;
optimizeDurationDTOList = new ArrayList<>(12);
breakFlag = false;
} else {
break;
}
}
}
//判断是否需要补时间
if (sumOpenTime < dayOpenMinute) {
......
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