Commit 1ece1094 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

1.开发间开优化结果统计功能,创建间开优化效果统计表,生成对应代码;
2.修改15天,10天,3天,1天间开优化功能,修改代码结构;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent f59338d8
......@@ -3,6 +3,7 @@ package pps.core.space.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.space.service.ISpaceOptimizeShortCloudService;
......@@ -14,6 +15,7 @@ import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.common.utils.BaseUtils;
import pps.core.space.entity.*;
import pps.core.space.mapper.SpaceOptimizeEffectMapper;
import pps.core.space.mapper.SpaceOptimizeShortDurationMapper;
import pps.core.space.mapper.SpaceOptimizeShortWellheadMapper;
import pps.core.space.mapper.SpaceOptimizeViewMapper;
......@@ -27,6 +29,7 @@ import xstartup.data.XServiceResult;
import xstartup.data.XSingleResult;
import xstartup.helper.XTransactionHelper;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
......@@ -131,6 +134,7 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
@Override
public XListResult<GetSpaceOptimizeShortWellheadOutput> dailyOptimizationResult(XContext context, GetSpaceOptimizeShortWellheadInput input) {
DateTime today = DateUtil.beginOfDay(DateUtil.date());
//查间开优化井口
SpaceOptimizeShortWellheadMapper wellheadMapper = context.getBean(SpaceOptimizeShortWellheadMapper.class);
List<SpaceOptimizeShortWellheadEnt> wellheadList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeShortWellheadEnt>()
.in(SpaceOptimizeShortWellheadEnt::getWellheadId, input.getWellheadIds())
......@@ -139,15 +143,57 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
if (CollUtil.isEmpty(wellheadList)) {
return XListResult.success(Collections.emptyList());
}
List<pps.core.space.service.data.space_optimize_short_wellhead.GetSpaceOptimizeShortWellheadOutput> wellheadOutputs = XCopyUtils.copyNewList(wellheadList, pps.core.space.service.data.space_optimize_short_wellhead.GetSpaceOptimizeShortWellheadOutput.class);
SpaceOptimizeShortDurationMapper durationMapper = context.getBean(SpaceOptimizeShortDurationMapper.class);
List<SpaceOptimizeShortDurationEnt> durationList = durationMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeShortDurationEnt>()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceOptimizeShortDurationEnt::getIsOptimize, BusinessConstant.ZERO)
.in(SpaceOptimizeShortDurationEnt::getWellheadId, input.getWellheadIds())
.eq(SpaceOptimizeShortDurationEnt::getOptimizeDate, today)
.orderByAsc(SpaceOptimizeShortDurationEnt::getIsOptimize, SpaceOptimizeShortDurationEnt::getOpenWellTime)
List<SpaceOptimizeShortDurationEnt> durationList;
//查能耗
SpaceOptimizeEffectMapper mapper = context.getBean(SpaceOptimizeEffectMapper.class);
List<SpaceOptimizeEffectEnt> effectList = mapper.selectList(new LambdaQueryWrapper<SpaceOptimizeEffectEnt>()
.select(SpaceOptimizeEffectEnt::getWellheadId, SpaceOptimizeEffectEnt::getGreenPowerRate, SpaceOptimizeEffectEnt::getPowerCost,
SpaceOptimizeEffectEnt::getOptimalGreenPowerRate, SpaceOptimizeEffectEnt::getOptimalPowerCost, SpaceOptimizeEffectEnt::getInstitutionResult,
SpaceOptimizeEffectEnt::getGreenPowerUpgrade, SpaceOptimizeEffectEnt::getCostDown, SpaceOptimizeEffectEnt::getOptimalResult)
.eq(BaseModel::getIsDeleted, 1)
.in(SpaceOptimizeEffectEnt::getPeriodId, wellheadList.stream()
.map(SpaceOptimizeShortWellheadEnt::getShortPeriodId)
.collect(Collectors.toSet()))
.in(SpaceOptimizeEffectEnt::getWellheadId, input.getWellheadIds())
.eq(SpaceOptimizeEffectEnt::getOptimizeDate, today)
);
if (CollUtil.isNotEmpty(effectList)) {
Map<Boolean, List<SpaceOptimizeEffectEnt>> collect = effectList.stream()
.collect(Collectors.partitioningBy(
w ->
/* 降低费用大于等于0才优化 */
ObjectUtil.defaultIfNull(w.getCostDown(), BigDecimal.ZERO).compareTo(BigDecimal.ZERO) >= 0
));
durationList = new ArrayList<>(effectList.size());
List<String> trueList;
List<SpaceOptimizeShortDurationEnt> list;
//可优化的
List<SpaceOptimizeEffectEnt> effectEntList = collect.get(true);
if (CollUtil.isNotEmpty(effectEntList)) {
trueList = effectEntList.stream()
.map(SpaceOptimizeEffectEnt::getWellheadId)
.collect(Collectors.toList());
list = this.getDurationList(durationMapper, BusinessConstant.ZERO, trueList, today);
if (CollUtil.isNotEmpty(list)) {
CollUtil.addAll(durationList, list);
}
}
//不可优化
effectEntList = collect.get(false);
if (CollUtil.isNotEmpty(effectEntList)) {
trueList = effectEntList.stream()
.map(SpaceOptimizeEffectEnt::getWellheadId)
.collect(Collectors.toList());
list = this.getDurationList(durationMapper, BusinessConstant.ONE, trueList, today);
if (CollUtil.isNotEmpty(list)) {
CollUtil.addAll(durationList, list);
}
}
} else {
durationList = this.getDurationList(durationMapper, BusinessConstant.ZERO, input.getWellheadIds(), today);
}
List<pps.core.space.service.data.space_optimize_short_wellhead.GetSpaceOptimizeShortWellheadOutput> wellheadOutputs = XCopyUtils.copyNewList(wellheadList, pps.core.space.service.data.space_optimize_short_wellhead.GetSpaceOptimizeShortWellheadOutput.class);
List<SpaceOptimizeDateDuration> durationOutputs = XCopyUtils.copyNewList(durationList, SpaceOptimizeDateDuration.class);
Map<String, List<SpaceOptimizeDateDuration>> collect = durationOutputs.stream()
.collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getWellheadId));
......@@ -156,4 +202,23 @@ public class SpaceOptimizeShortCloudServiceImpl extends SpaceOptimizeBaseService
}
return XListResult.success(XCopyUtils.copyNewList(wellheadOutputs, GetSpaceOptimizeShortWellheadOutput.class));
}
/**
* 获取持续时间列表
*
* @param durationMapper 持续时间映射器
* @param isOptimize 已优化
* @param wellheadIds 井口ID
* @param today 今天
* @return {@link List }<{@link SpaceOptimizeShortDurationEnt }>
*/
private List<SpaceOptimizeShortDurationEnt> getDurationList(SpaceOptimizeShortDurationMapper durationMapper, Integer isOptimize, List<String> wellheadIds, DateTime today) {
return durationMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeShortDurationEnt>()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceOptimizeShortDurationEnt::getIsOptimize, isOptimize)
.in(SpaceOptimizeShortDurationEnt::getWellheadId, wellheadIds)
.eq(SpaceOptimizeShortDurationEnt::getOptimizeDate, today)
.orderByAsc(SpaceOptimizeShortDurationEnt::getIsOptimize, SpaceOptimizeShortDurationEnt::getOpenWellTime)
);
}
}
\ 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