Commit a6ca38a2 authored by ZWT's avatar ZWT

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

1.开发间开优化短期间开优化定时任务;
2.开发间开优化短期间开优化定时任务,增加大间开井口时段信息初始化逻辑;
3.开发间开优化短期间开优化定时任务,增加间开井井口时段信息初始化逻辑;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 524895a4
...@@ -480,15 +480,8 @@ public class SpaceOptimizeBaseService { ...@@ -480,15 +480,8 @@ public class SpaceOptimizeBaseService {
public void createUnOptimizeDuration(List<SpaceOptimizeDurationDTO> unOptimizeDurationList, public void createUnOptimizeDuration(List<SpaceOptimizeDurationDTO> unOptimizeDurationList,
SpaceInstitutionDurationEnt durationEnt, SpaceInstitutionDurationEnt durationEnt,
String periodId, String recordId, String wellheadId) { String periodId, String recordId, String wellheadId) {
SpaceOptimizeDurationDTO durationDTO = new SpaceOptimizeDurationDTO(); this.createDuration(unOptimizeDurationList, recordId, periodId, wellheadId, BusinessConstant.ONE,
BaseUtils.setBaseModelDefaultForJob(durationDTO); durationEnt.getOpenWellTime(), durationEnt.getCloseWellTime(), null);
durationDTO.setRecordId(recordId);
durationDTO.setPeriodId(periodId);
durationDTO.setWellheadId(wellheadId);
durationDTO.setIsOptimize(BusinessConstant.ONE);
durationDTO.setOpenWellTime(durationEnt.getOpenWellTime());
durationDTO.setCloseWellTime(durationEnt.getCloseWellTime());
unOptimizeDurationList.add(durationDTO);
} }
/** /**
...@@ -505,15 +498,34 @@ public class SpaceOptimizeBaseService { ...@@ -505,15 +498,34 @@ public class SpaceOptimizeBaseService {
public void createOptimizeDuration(List<SpaceOptimizeDurationDTO> durationDTOList, String periodId, public void createOptimizeDuration(List<SpaceOptimizeDurationDTO> durationDTOList, String periodId,
String recordId, String wellheadId, String generationTypeKey, String recordId, String wellheadId, String generationTypeKey,
String openWellTime, String endTimeString) { String openWellTime, String endTimeString) {
this.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO,
openWellTime, endTimeString, generationTypeKey);
}
/**
* 创建持续时间
*
* @param durationDTOList 持续时间dtolist
* @param recordId 记录id
* @param periodId 期间id
* @param wellheadId 井口id
* @param isOptimize 正在优化
* @param openWellTime 开井时间
* @param closeWellTime 关井时间
* @param generationTypeKey 生成类型密钥
*/
public void createDuration(List<SpaceOptimizeDurationDTO> durationDTOList, String recordId,
String periodId, String wellheadId, Integer isOptimize,
String openWellTime, String closeWellTime, String generationTypeKey) {
SpaceOptimizeDurationDTO durationDTO = new SpaceOptimizeDurationDTO(); SpaceOptimizeDurationDTO durationDTO = new SpaceOptimizeDurationDTO();
BaseUtils.setBaseModelDefaultForJob(durationDTO); BaseUtils.setBaseModelDefaultForJob(durationDTO);
durationDTO.setRecordId(recordId); durationDTO.setRecordId(recordId);
durationDTO.setPeriodId(periodId); durationDTO.setPeriodId(periodId);
durationDTO.setWellheadId(wellheadId); durationDTO.setWellheadId(wellheadId);
durationDTO.setGenerationTypeKey(generationTypeKey); durationDTO.setIsOptimize(isOptimize);
durationDTO.setIsOptimize(BusinessConstant.ZERO);
durationDTO.setOpenWellTime(openWellTime); durationDTO.setOpenWellTime(openWellTime);
durationDTO.setCloseWellTime(endTimeString); durationDTO.setCloseWellTime(closeWellTime);
durationDTO.setGenerationTypeKey(generationTypeKey);
durationDTOList.add(durationDTO); durationDTOList.add(durationDTO);
} }
......
...@@ -8,11 +8,8 @@ import org.apache.commons.lang3.StringUtils; ...@@ -8,11 +8,8 @@ import org.apache.commons.lang3.StringUtils;
import pps.cloud.space.service.ISpaceOptimizeShortCloudService; import pps.cloud.space.service.ISpaceOptimizeShortCloudService;
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.utils.BaseUtils;
import pps.core.space.entity.*; import pps.core.space.entity.*;
import pps.core.space.mapper.SpaceInstitutionDurationMapper; import pps.core.space.mapper.*;
import pps.core.space.mapper.SpaceInstitutionWellheadMapper;
import pps.core.space.mapper.SpaceOptimizeShortPeriodMapper;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.data.XServiceResult; import xstartup.data.XServiceResult;
...@@ -41,9 +38,6 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -41,9 +38,6 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
DateTime date = DateUtil.date(); DateTime date = DateUtil.date();
String curDate = date.toString(BusinessConstant.DATE_FORMAT_DAY); String curDate = date.toString(BusinessConstant.DATE_FORMAT_DAY);
List<SpaceInstitutionDetailEnt> detailEntList = super.getEffectiveSpaceInstitution(context, curDate); List<SpaceInstitutionDetailEnt> detailEntList = super.getEffectiveSpaceInstitution(context, curDate);
List<String> institutionIdList = detailEntList.stream()
.map(BaseModel::getId)
.collect(Collectors.toList());
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);
...@@ -131,7 +125,7 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -131,7 +125,7 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
Integer totalDays = openWellDay + closeWellDay; Integer totalDays = openWellDay + closeWellDay;
if (!totalDays.equals(0)) { if (!totalDays.equals(0)) {
//获取间开井口创建时间和当天的时间差 //获取间开井口创建时间和当天的时间差
int betweenDay = (int) DateUtil.betweenDay(wellhead.getCreateTime(), DateUtil.date(), true); int betweenDay = (int) DateUtil.betweenDay(wellhead.getCreateTime(), date, true);
switch (totalDays.compareTo(betweenDay)) { switch (totalDays.compareTo(betweenDay)) {
case -1: case -1:
//按周期取余数和开井时间比较,超过开井时间就是关井 //按周期取余数和开井时间比较,超过开井时间就是关井
...@@ -170,8 +164,8 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -170,8 +164,8 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
closeWellTime = BusinessConstant.END_OF_DAY_TIME; closeWellTime = BusinessConstant.END_OF_DAY_TIME;
} }
//创建间开记录 //创建间开记录
this.createDuration(unOptimizeDurationList, recordId, periodId, wellheadId, BusinessConstant.ONE, BusinessConstant.START_OF_DAY_TIME, closeWellTime); super.createDuration(unOptimizeDurationList, recordId, periodId, wellheadId, BusinessConstant.ONE, BusinessConstant.START_OF_DAY_TIME, closeWellTime, null);
this.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO, BusinessConstant.START_OF_DAY_TIME, closeWellTime); super.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO, BusinessConstant.START_OF_DAY_TIME, closeWellTime, null);
} }
break; break;
default: default:
...@@ -179,38 +173,62 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -179,38 +173,62 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
} }
} }
} }
//需要优化的井口 //需要优化的井口(匹配中短期优化配置)
List<SpaceInstitutionWellheadEnt> needToOptimizeWellheadList = interval.get(true); List<SpaceInstitutionWellheadEnt> needToOptimizeWellheadList = interval.get(true);
if (CollUtil.isNotEmpty(needToOptimizeWellheadList)) { if (CollUtil.isNotEmpty(needToOptimizeWellheadList)) {
//查最近的中短期优化记录
SpaceOptimizeMidPeriodMapper midPeriodMapper = context.getBean(SpaceOptimizeMidPeriodMapper.class);
SpaceOptimizeMidPeriodEnt midPeriodEnt = midPeriodMapper.selectOne(new LambdaQueryWrapper<SpaceOptimizeMidPeriodEnt>()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceOptimizeMidPeriodEnt::getInstitutionId, detailId)
.orderByDesc(BaseModel::getCreateTime)
.last("LIMIT 1")
);
//如果有中短期优化记录,通过记录ID查优化过的时段按井口ID分组
Map<String, List<SpaceOptimizeMidDurationEnt>> optimizeMidDurationMap = new HashMap<>(0);
if (Objects.nonNull(midPeriodEnt)) {
SpaceOptimizeMidDurationMapper midDurationMapper = context.getBean(SpaceOptimizeMidDurationMapper.class);
List<SpaceOptimizeMidDurationEnt> optimizeMidDurationEntList = midDurationMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeMidDurationEnt>()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceOptimizeMidDurationEnt::getIsOptimize, BusinessConstant.ZERO)
.eq(SpaceOptimizeMidDurationEnt::getMidPeriodId, midPeriodEnt.getId())
.orderByAsc(BaseModel::getCreateTime)
);
if (CollUtil.isNotEmpty(optimizeMidDurationEntList)) {
optimizeMidDurationMap = optimizeMidDurationEntList.stream()
.collect(Collectors.groupingBy(SpaceOptimizeMidDurationEnt::getWellheadId));
}
}
for (SpaceInstitutionWellheadEnt wellhead : needToOptimizeWellheadList) { for (SpaceInstitutionWellheadEnt wellhead : needToOptimizeWellheadList) {
String wellheadId = wellhead.getWellheadId(); String wellheadId = wellhead.getWellheadId();
String recordId = super.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber()); String recordId = super.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber());
if (!durationListMap.containsKey(wellheadId)) { if (!durationListMap.containsKey(wellheadId)) {
continue; continue;
} }
//初始化未优化间开
List<SpaceInstitutionDurationEnt> durationList = durationListMap.get(wellheadId); List<SpaceInstitutionDurationEnt> durationList = durationListMap.get(wellheadId);
for (SpaceInstitutionDurationEnt durationEnt : durationList) { if (optimizeMidDurationMap.containsKey(wellheadId)) {
super.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId); //优化记录转换
List<SpaceOptimizeMidDurationEnt> midDurationEntList = optimizeMidDurationMap.get(wellheadId);
for (SpaceOptimizeMidDurationEnt midDurationEnt : midDurationEntList) {
super.createDuration(durationDTOList, recordId, periodId, wellheadId, BusinessConstant.ZERO,
midDurationEnt.getOpenWellTime(), midDurationEnt.getCloseWellTime(), midDurationEnt.getGenerationTypeKey());
}
//初始化未优化间开
for (SpaceInstitutionDurationEnt durationEnt : durationList) {
super.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId);
}
} else {
//缺少优化记录,不优化
for (SpaceInstitutionDurationEnt durationEnt : durationList) {
super.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId);
super.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
durationEnt.getOpenWellTime(), durationEnt.getCloseWellTime()
);
}
} }
} }
} }
} }
return XServiceResult.OK; return XServiceResult.OK;
} }
private void createDuration(List<SpaceOptimizeDurationDTO> durationDTOList, String recordId,
String periodId, String wellheadId, Integer isOptimize,
String openWellTime, String closeWellTime) {
SpaceOptimizeDurationDTO durationDTO = new SpaceOptimizeDurationDTO();
BaseUtils.setBaseModelDefaultForJob(durationDTO);
durationDTO.setRecordId(recordId);
durationDTO.setPeriodId(periodId);
durationDTO.setWellheadId(wellheadId);
durationDTO.setIsOptimize(isOptimize);
durationDTO.setOpenWellTime(openWellTime);
durationDTO.setCloseWellTime(closeWellTime);
durationDTOList.add(durationDTO);
}
} }
\ 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