Commit 258070df authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.邮件发送服务代码修改,修改配置文件及发送逻辑,解决邮件名称唯一性;
2.邮件接收功能修改,解决邮件接收协议修改后导致的一系列问题;
3.长期间开优化功能修改,修改定时任务处理逻辑及执行周期;
4.中期间开优化功能修改,修改定时任务处理逻辑及执行周期;
5.超长期间开优化功能开发,开发相关接口及定时任务,创建对应数据表,生成对应接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent c08861ba
...@@ -2,6 +2,7 @@ package pps.core.space.service; ...@@ -2,6 +2,7 @@ package pps.core.space.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import pps.cloud.space.service.ISpaceOptimizeLongCloudService; import pps.cloud.space.service.ISpaceOptimizeLongCloudService;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils; import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.SpaceOptimizeDurationDTO; import pps.core.space.entity.SpaceOptimizeDurationDTO;
import pps.core.space.entity.SpaceOptimizePeriodDTO; import pps.core.space.entity.SpaceOptimizePeriodDTO;
...@@ -36,7 +37,7 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -36,7 +37,7 @@ public class SpaceOptimizeLongCloudServiceImpl extends SpaceOptimizeBaseService
List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64); List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64);
List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128); List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128);
List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128); List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128);
super.doOptimize(context, periodDTOList, wellheadDTOList, durationDTOList, unOptimizeDurationList, 0, 0, 10); super.doOptimize(context, periodDTOList, wellheadDTOList, durationDTOList, unOptimizeDurationList, BusinessConstant.ZERO, BusinessConstant.ZERO, 10);
//开启事务 //开启事务
return XTransactionHelper.begin(context, () -> { return XTransactionHelper.begin(context, () -> {
int size; int size;
......
...@@ -2,6 +2,7 @@ package pps.core.space.service; ...@@ -2,6 +2,7 @@ package pps.core.space.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import pps.cloud.space.service.ISpaceOptimizeMidCloudService; import pps.cloud.space.service.ISpaceOptimizeMidCloudService;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils; import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.SpaceOptimizeDurationDTO; import pps.core.space.entity.SpaceOptimizeDurationDTO;
import pps.core.space.entity.SpaceOptimizePeriodDTO; import pps.core.space.entity.SpaceOptimizePeriodDTO;
...@@ -36,7 +37,7 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i ...@@ -36,7 +37,7 @@ public class SpaceOptimizeMidCloudServiceImpl extends SpaceOptimizeBaseService i
List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64); List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64);
List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128); List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128);
List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128); List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128);
super.doOptimize(context, periodDTOList, wellheadDTOList, durationDTOList, unOptimizeDurationList, 1, 1, 3); super.doOptimize(context, periodDTOList, wellheadDTOList, durationDTOList, unOptimizeDurationList, BusinessConstant.ONE, BusinessConstant.ONE, 3);
//开启事务 //开启事务
return XTransactionHelper.begin(context, () -> { return XTransactionHelper.begin(context, () -> {
int size; int size;
......
package pps.core.space.service; package pps.core.space.service;
import cn.hutool.core.collection.CollUtil; 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.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.utils.BaseUtils; import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.*; import pps.core.space.entity.SpaceOptimizeDurationDTO;
import pps.core.space.mapper.*; import pps.core.space.entity.SpaceOptimizePeriodDTO;
import pps.core.space.utils.ServiceUtil; import pps.core.space.entity.SpaceOptimizeWellheadDTO;
import pps.core.space.mapper.SpaceOptimizeViewMapper;
import xstartup.annotation.XService; import xstartup.annotation.XService;
import xstartup.base.XContext; import xstartup.base.XContext;
import xstartup.data.XServiceResult; import xstartup.data.XServiceResult;
import xstartup.helper.XTransactionHelper; import xstartup.helper.XTransactionHelper;
import java.util.*; import java.util.ArrayList;
import java.util.stream.Collectors; import java.util.List;
/** /**
* 极短期间开优化Cloud模块 * 极短期间开优化Cloud模块
...@@ -37,163 +33,11 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -37,163 +33,11 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
*/ */
@Override @Override
public XServiceResult optimizeShortJob(XContext context) { public XServiceResult optimizeShortJob(XContext context) {
//取生效中的基础间开
DateTime date = DateUtil.date();
String curDate = date.toString(BusinessConstant.DATE_FORMAT_DAY);
List<SpaceInstitutionDetailEnt> detailEntList = super.getEffectiveSpaceInstitution(context, curDate);
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);
List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128); List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128);
DateTime beginOfDay = DateUtil.beginOfDay(date); super.doOptimize(context, periodDTOList, wellheadDTOList, durationDTOList, unOptimizeDurationList, BusinessConstant.ONE, BusinessConstant.THREE, 1);
//优化
for (SpaceInstitutionDetailEnt detail : detailEntList) {
String detailId = detail.getId();
String lineId = detail.getLineId();
//查是否已经存有短期历史数据
SpaceOptimizeShortPeriodMapper shortPeriodMapper = context.getBean(SpaceOptimizeShortPeriodMapper.class);
SpaceOptimizeShortPeriodEnt shortPeriod = shortPeriodMapper.selectOne(new LambdaQueryWrapper<SpaceOptimizeShortPeriodEnt>()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceOptimizeShortPeriodEnt::getOptimizeDate, beginOfDay)
.eq(SpaceOptimizeShortPeriodEnt::getInstitutionId, detailId)
.orderByDesc(BaseModel::getCreateTime)
.last("LIMIT 1")
);
String periodId;
if (Objects.isNull(shortPeriod)) {
//创建记录
periodId = super.createOptimizePeriod(periodDTOList, detailId, lineId, null, beginOfDay);
} else {
periodId = shortPeriod.getId();
}
//查未记录的井口
SpaceInstitutionWellheadMapper wellheadMapper = context.getBean(SpaceInstitutionWellheadMapper.class);
List<SpaceInstitutionWellheadEnt> wellheadEntList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceInstitutionWellheadEnt>()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceInstitutionWellheadEnt::getInstitutionId, detailId)
.notExists("SELECT 1 FROM space_optimize_short_wellhead WHERE is_deleted = 1 AND short_period_id = {0}", periodId)
);
if (CollUtil.isEmpty(wellheadEntList)) {
continue;
}
List<String> wellheadIdList = wellheadEntList.stream()
.map(SpaceInstitutionWellheadEnt::getWellheadId)
.collect(Collectors.toList());
//查需要初始化的时段配置
SpaceInstitutionDurationMapper durationMapper = context.getBean(SpaceInstitutionDurationMapper.class);
List<SpaceInstitutionDurationEnt> durationEntList = durationMapper.selectList(new LambdaQueryWrapper<SpaceInstitutionDurationEnt>()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceInstitutionDurationEnt::getInstitutionId, detailId)
.in(SpaceInstitutionDurationEnt::getWellheadId, wellheadIdList)
);
Map<String, List<SpaceInstitutionDurationEnt>> durationListMap;
if (CollUtil.isEmpty(durationEntList)) {
durationListMap = new HashMap<>(0);
} else {
durationListMap = durationEntList.stream()
.collect(Collectors.groupingBy(SpaceInstitutionDurationEnt::getWellheadId));
}
//按类型拆分井口
Map<Boolean, List<SpaceInstitutionWellheadEnt>> interval = wellheadEntList.stream()
.sorted(Comparator.comparing(SpaceInstitutionWellheadEnt::getStartSeq))
.collect(
Collectors.partitioningBy(w -> StringUtils.equals(detailId, w.getInstitutionId()) &&
StringUtils.equals(BusinessConstant.INTERVAL_PUMPING_WELL, w.getRunTypeKey()) &&
StringUtils.equals("0", w.getIntervalTypeKey())
)
);
//不需要优化的井口
List<SpaceInstitutionWellheadEnt> unOptimizeWellheadList = interval.get(false);
if (CollUtil.isNotEmpty(unOptimizeWellheadList)) {
for (SpaceInstitutionWellheadEnt wellhead : unOptimizeWellheadList) {
String wellheadId = wellhead.getWellheadId();
String recordId = super.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
switch (wellhead.getIntervalTypeKey()) {
//小间开(不优化)
case "0":
if (!durationListMap.containsKey(wellheadId)) {
continue;
}
//初始化未优化间开
List<SpaceInstitutionDurationEnt> durationList = durationListMap.get(wellheadId);
for (SpaceInstitutionDurationEnt durationEnt : durationList) {
super.createUnOptimizeDuration(unOptimizeDurationList, durationEnt, periodId, recordId, wellheadId);
super.createOptimizeDuration(durationDTOList, periodId, recordId, wellheadId, null,
durationEnt.getOpenWellTime(), durationEnt.getCloseWellTime()
);
}
break;
//大间开
case "1":
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:
//未配置不处理
}
}
}
//需要优化的井口(匹配中短期优化配置)
List<SpaceInstitutionWellheadEnt> needToOptimizeWellheadList = interval.get(true);
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(SpaceOptimizeMidDurationEnt::getOpenWellTime)
);
if (CollUtil.isNotEmpty(optimizeMidDurationEntList)) {
optimizeMidDurationMap = optimizeMidDurationEntList.stream()
.collect(Collectors.groupingBy(SpaceOptimizeMidDurationEnt::getWellheadId));
}
}
for (SpaceInstitutionWellheadEnt wellhead : needToOptimizeWellheadList) {
String wellheadId = wellhead.getWellheadId();
String recordId = super.createOptimizeWellhead(wellheadDTOList, periodId, wellheadId, wellhead.getWellNumber(), wellhead.getStartSeq());
if (!durationListMap.containsKey(wellheadId)) {
continue;
}
List<SpaceInstitutionDurationEnt> durationList = durationListMap.get(wellheadId);
if (optimizeMidDurationMap.containsKey(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 XTransactionHelper.begin(context, () -> { return XTransactionHelper.begin(context, () -> {
int size; int size;
......
...@@ -2,6 +2,7 @@ package pps.core.space.service; ...@@ -2,6 +2,7 @@ package pps.core.space.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import pps.cloud.space.service.ISpaceOptimizeUltraCloudService; import pps.cloud.space.service.ISpaceOptimizeUltraCloudService;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.utils.BaseUtils; import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.SpaceOptimizeDurationDTO; import pps.core.space.entity.SpaceOptimizeDurationDTO;
import pps.core.space.entity.SpaceOptimizePeriodDTO; import pps.core.space.entity.SpaceOptimizePeriodDTO;
...@@ -36,7 +37,7 @@ public class SpaceOptimizeUltraCloudServiceImpl extends SpaceOptimizeBaseService ...@@ -36,7 +37,7 @@ public class SpaceOptimizeUltraCloudServiceImpl extends SpaceOptimizeBaseService
List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64); List<SpaceOptimizeWellheadDTO> wellheadDTOList = new ArrayList<>(64);
List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128); List<SpaceOptimizeDurationDTO> durationDTOList = new ArrayList<>(128);
List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128); List<SpaceOptimizeDurationDTO> unOptimizeDurationList = new ArrayList<>(128);
super.doOptimize(context, periodDTOList, wellheadDTOList, durationDTOList, unOptimizeDurationList, 0, 2, 15); super.doOptimize(context, periodDTOList, wellheadDTOList, durationDTOList, unOptimizeDurationList, BusinessConstant.ZERO, BusinessConstant.TWO, 15);
//开启事务 //开启事务
return XTransactionHelper.begin(context, () -> { return XTransactionHelper.begin(context, () -> {
int size; int size;
......
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