Commit ada29494 authored by ZWT's avatar ZWT

feat(能源管理系统): 测试问题修复

1.修改间开制度管理-短期极端天气优化模块,查询优化详情接口,优化查询sql逻辑;
2.修改间开制度管理-短期极端天气优化模块,查询优化详情接口,修改井口视图增加间开类型和运行类型字段;
3.修改间开制度管理-短期极端天气优化模块,查询优化详情接口,修改井口视图增加没有区间配置的井口设置默认全关;
4.修改间开制度管理-短期极端天气优化模块,查询优化详情接口,修改井口视图增加字段同时修改代码逻辑,增加大间开类型井口启动时间初始化计算逻辑;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 09928adf
......@@ -11,6 +11,7 @@ import pps.core.common.entity.BaseModel;
import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.*;
import pps.core.space.mapper.*;
import pps.core.space.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.data.XServiceResult;
......@@ -120,55 +121,13 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
break;
//大间开
case "1":
boolean openFlag = true;
//计算开关井周期总天数
Integer openWellDay = Objects.isNull(wellhead.getOpenWellDay()) ? 0 : wellhead.getOpenWellDay();
Integer closeWellDay = Objects.isNull(wellhead.getCloseWellDay()) ? 0 : wellhead.getCloseWellDay();
Integer totalDays = openWellDay + closeWellDay;
if (!totalDays.equals(0)) {
//获取间开井口创建时间和当天的时间差
int betweenDay = (int) DateUtil.betweenDay(wellhead.getCreateTime(), date, true);
switch (totalDays.compareTo(betweenDay)) {
case -1:
//按周期取余数和开井时间比较,超过开井时间就是关井
if (openWellDay.compareTo(betweenDay % totalDays) >= 0) {
//开井
openFlag = true;
} else {
//关井
openFlag = false;
}
break;
case 0:
//相等为周期最后一天,只要关井天数不为0就是关井
if (closeWellDay.equals(0)) {
//开井
openFlag = true;
} else {
//关井
openFlag = false;
}
break;
case 1:
//当前未过一个执行周期,判断开井时间是否大于时差,大于就是开井
if (openWellDay.compareTo(betweenDay) >= 0) {
//开井
openFlag = true;
} else {
//关井
openFlag = false;
}
break;
default:
}
String closeWellTime = BusinessConstant.START_OF_DAY_TIME;
if (openFlag) {
closeWellTime = BusinessConstant.END_OF_DAY_TIME;
}
//创建间开记录
super.createDuration(unOptimizeDurationList, recordId, periodId, wellheadId, BusinessConstant.ONE, BusinessConstant.START_OF_DAY_TIME, closeWellTime, null);
super.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO, BusinessConstant.START_OF_DAY_TIME, closeWellTime, null);
String closeWellTime = BusinessConstant.START_OF_DAY_TIME;
if (ServiceUtil.checkWellIsOpen(wellhead.getOpenWellDay(), wellhead.getCloseWellDay(), wellhead.getCreateTime(), date)) {
closeWellTime = BusinessConstant.END_OF_DAY_TIME;
}
//创建间开记录
super.createDuration(unOptimizeDurationList, recordId, periodId, wellheadId, BusinessConstant.ONE, BusinessConstant.START_OF_DAY_TIME, closeWellTime, null);
super.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO, BusinessConstant.START_OF_DAY_TIME, closeWellTime, null);
break;
default:
//未配置不处理
......
......@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.lang3.StringUtils;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.space.entity.*;
......@@ -109,21 +110,38 @@ public class SpaceOptimizeShortPeriodService {
}
}
//遍历井口,添加区间
//todo 连抽井,大间开不优化,手动设置区间
List<GetSpaceOptimizeShortWellheadViewOutput> wellheadViewOutputs = XCopyUtils.copyNewList(wellheadEntList, GetSpaceOptimizeShortWellheadViewOutput.class);
for (GetSpaceOptimizeShortWellheadViewOutput wellheadViewOutput : wellheadViewOutputs) {
if (collect.containsKey(wellheadViewOutput.getWellheadId())) {
wellheadViewOutput.setDurationList(ServiceUtil.getAllDateDuration(collect.get(wellheadViewOutput.getWellheadId())));
} else {
//全关
wellheadViewOutput.setDurationList(
CollUtil.newArrayList(SpaceOptimizeDateDuration.builder()
.openWellTime(BusinessConstant.START_OF_DAY_TIME)
.closeWellTime(BusinessConstant.END_OF_DAY_TIME)
.isOpen(BusinessConstant.ZERO)
.isOptimize(BusinessConstant.ONE)
.build())
);
//大间开处理
if (StringUtils.equals("1", wellheadViewOutput.getIntervalTypeKey())) {
Integer isOpen = BusinessConstant.ZERO;
String closeWellTime = BusinessConstant.START_OF_DAY_TIME;
if (ServiceUtil.checkWellIsOpen(wellheadViewOutput.getOpenWellDay(), wellheadViewOutput.getCloseWellDay(), wellheadViewOutput.getCreateTime(), date)) {
isOpen = BusinessConstant.ONE;
closeWellTime = BusinessConstant.END_OF_DAY_TIME;
}
wellheadViewOutput.setDurationList(
CollUtil.newArrayList(SpaceOptimizeDateDuration.builder()
.openWellTime(BusinessConstant.START_OF_DAY_TIME)
.closeWellTime(closeWellTime)
.isOpen(isOpen)
.isOptimize(BusinessConstant.ONE)
.build())
);
} else {
//全关
wellheadViewOutput.setDurationList(
CollUtil.newArrayList(SpaceOptimizeDateDuration.builder()
.openWellTime(BusinessConstant.START_OF_DAY_TIME)
.closeWellTime(BusinessConstant.END_OF_DAY_TIME)
.isOpen(BusinessConstant.ZERO)
.isOptimize(BusinessConstant.ONE)
.build())
);
}
}
}
output.setWellheadList(wellheadViewOutputs);
......
......@@ -4,6 +4,7 @@ import lombok.Data;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
import xstartup.annotation.XText;
import java.util.Date;
import java.util.List;
/**
......@@ -27,6 +28,15 @@ public class GetSpaceOptimizeShortWellheadViewOutput {
@XText("间开类型key(字典获取)")
private String intervalTypeKey;
@XText("创建时间")
private Date createTime;
@XText("开井天数")
private Integer openWellDay;
@XText("关井天数")
private Integer closeWellDay;
/**
* 井口时段配置
*/
......
......@@ -2,6 +2,7 @@ package pps.core.space.utils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import pps.cloud.base.service.IBasePowerLineCloudService;
......@@ -232,4 +233,62 @@ public class ServiceUtil {
}
return allList;
}
/**
* 检查大间开是否开井
*
* @param openWellDay 开井日
* @param closeWellDay 闭井日
* @param createTime 创建时间
* @param currentTime 当前时间
* @return boolean
*/
public static boolean checkWellIsOpen(Integer openWellDay, Integer closeWellDay, Date createTime, DateTime currentTime) {
boolean openFlag = true;
//计算开关井周期总天数
openWellDay = Objects.isNull(openWellDay) ? 0 : openWellDay;
closeWellDay = Objects.isNull(closeWellDay) ? 0 : closeWellDay;
Integer totalDays = openWellDay + closeWellDay;
if (!totalDays.equals(0)) {
//获取间开井口创建时间和当天的时间差
int betweenDay = (int) DateUtil.betweenDay(createTime, currentTime, true);
switch (totalDays.compareTo(betweenDay)) {
case -1:
//按周期取余数和开井时间比较,超过开井时间就是关井
if (openWellDay.compareTo(betweenDay % totalDays) >= 0) {
//开井
openFlag = true;
} else {
//关井
openFlag = false;
}
break;
case 0:
//相等为周期最后一天,只要关井天数不为0就是关井
if (closeWellDay.equals(0)) {
//开井
openFlag = true;
} else {
//关井
openFlag = false;
}
break;
case 1:
//当前未过一个执行周期,判断开井时间是否大于时差,大于就是开井
if (openWellDay.compareTo(betweenDay) >= 0) {
//开井
openFlag = true;
} else {
//关井
openFlag = false;
}
break;
default:
}
} else {
//关井
openFlag = false;
}
return openFlag;
}
}
\ 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