Commit 4da13d66 authored by ZWT's avatar ZWT

feat(吉林演示): 松原

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 337ab543
......@@ -6,6 +6,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.util.List;
/**
* 策略配置详情
*
......@@ -26,4 +28,7 @@ public class GetBasePriceStrategyDetailInput {
@XText("时段类型key(字典获取)")
private String periodTypeKey;
@XText("市电峰谷月列表")
private List<String> monthList;
}
......@@ -48,7 +48,8 @@ public class BasePriceStrategyCloudServiceImpl implements IBasePriceStrategyClou
)
.lambda()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(BasePriceStrategyDetailEnt::getStrategyMonth, input.getStrategyMonth())
.eq(CharSequenceUtil.isNotBlank(input.getStrategyMonth()), BasePriceStrategyDetailEnt::getStrategyMonth, input.getStrategyMonth())
.in(CollUtil.isNotEmpty(input.getMonthList()), BasePriceStrategyDetailEnt::getStrategyMonth, input.getMonthList())
.eq(CharSequenceUtil.isNotBlank(periodTypeKey), BasePriceStrategyDetailEnt::getPeriodTypeKey, periodTypeKey)
.apply(CharSequenceUtil.isNotBlank(lineId), "strategy_id = ( SELECT strategy_id FROM base_power_line WHERE id = {0} ) ", lineId)
.orderByAsc(BasePriceStrategyDetailEnt::getStartTime)
......
......@@ -11,7 +11,6 @@ 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.base.service.IBasePowerLineCloudService;
import pps.cloud.base.service.IBaseWellheadCloudService;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineInput;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
......@@ -48,6 +47,7 @@ import xstartup.error.XError;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
......@@ -58,6 +58,87 @@ import java.util.stream.Collectors;
*/
public class SpaceOptimizeBaseService {
/**
* 计算优化效果
*
* @param context 上下文
* @param periodDTOList 周期数据列表
* @param wellheadDTOList 井口数据表
* @param durationDTOList 优化结果
* @param unOptimizeDurationList 未优化持续时间列表
*/
public void calculateOptimizeEffect(XContext context, List<SpaceOptimizePeriodDTO> periodDTOList, List<SpaceOptimizeWellheadDTO> wellheadDTOList,
List<SpaceOptimizeDurationDTO> durationDTOList, List<SpaceOptimizeDurationDTO> unOptimizeDurationList) {
if (CollUtil.isNotEmpty(periodDTOList)) {
//按周期ID分组
Map<String, List<SpaceOptimizeWellheadDTO>> wellMap;
if (CollUtil.isNotEmpty(wellheadDTOList)) {
wellMap = wellheadDTOList.stream()
.collect(Collectors.groupingBy(SpaceOptimizeWellheadDTO::getPeriodId));
} else {
wellMap = Collections.emptyMap();
}
Map<String, Map<String, Map<Date, List<SpaceOptimizeDurationDTO>>>> optimizeMap;
if (CollUtil.isNotEmpty(durationDTOList)) {
optimizeMap = durationDTOList.stream()
.collect(Collectors.groupingBy(SpaceOptimizeDurationDTO::getPeriodId,
Collectors.groupingBy(SpaceOptimizeDurationDTO::getWellheadId,
Collectors.groupingBy(SpaceOptimizeDurationDTO::getOptimizeDate))));
} else {
optimizeMap = Collections.emptyMap();
}
Map<String, Map<String, Map<Date, List<SpaceOptimizeDurationDTO>>>> unOptimizeMap;
if (CollUtil.isNotEmpty(unOptimizeDurationList)) {
unOptimizeMap = unOptimizeDurationList.stream()
.collect(Collectors.groupingBy(SpaceOptimizeDurationDTO::getPeriodId,
Collectors.groupingBy(SpaceOptimizeDurationDTO::getWellheadId,
Collectors.groupingBy(SpaceOptimizeDurationDTO::getOptimizeDate))));
} else {
unOptimizeMap = Collections.emptyMap();
}
DateTime now = DateUtil.date();
int month = now.monthBaseOne();
//市电峰谷
Map<String, Map<String, List<GetBasePriceStrategyDetailOutput>>> strategyMap;
List<GetBasePriceStrategyDetailOutput> strategyList = ServiceUtil.getStrategyDetailList(context, GetBasePriceStrategyDetailInput.builder()
.monthList(CollUtil.list(false, String.valueOf(month), String.valueOf(month + 1)))
.build());
if (CollUtil.isNotEmpty(strategyList)) {
strategyMap = strategyList.stream()
.collect(Collectors.groupingBy(GetBasePriceStrategyDetailOutput::getStrategyMonth,
Collectors.groupingBy(GetBasePriceStrategyDetailOutput::getStrategyId)));
} else {
strategyMap = Collections.emptyMap();
}
//线路ID/电站ID LIST Map
Map<String, List<String>> plantIdsMap;
//查关联线路的所有电站
List<DynamicQueryBasePowerLinePlantViewOutput> powerLinePlantList = ServiceUtil.getPowerLinePlantList(context, DynamicQueryBasePowerLinePlantInput.builder()
.build());
if (CollUtil.isNotEmpty(powerLinePlantList)) {
plantIdsMap = powerLinePlantList.stream()
.collect(Collectors.groupingBy(DynamicQueryBasePowerLinePlantViewOutput::getLineId,
Collectors.mapping(DynamicQueryBasePowerLinePlantViewOutput::getPlantId, Collectors.toList())));
} else {
plantIdsMap = Collections.emptyMap();
}
//取所有井口
Map<String, DynamicQueryBaseWellheadOutput> baseWellMap;
List<DynamicQueryBaseWellheadOutput> wellList = ServiceUtil.getBaseWellList(context, new DynamicQueryBaseWellheadInput());
if (CollUtil.isNotEmpty(wellList)) {
baseWellMap = wellList.stream()
.collect(Collectors.toMap(DynamicQueryBaseWellheadOutput::getId, Function.identity()));
} else {
baseWellMap = Collections.emptyMap();
}
//初始化权重时间轴(半小时间隔)
List<DateTime> rangeToList = DateUtil.rangeToList(DateUtil.offsetDay(BusinessConstant.DATE_FLAG, -1), BusinessConstant.DATE_FLAG, DateField.MINUTE, 30);
System.out.println();
}
}
/**
* 获取优化详情
*
......@@ -156,8 +237,7 @@ public class SpaceOptimizeBaseService {
institutionIds.add(detail.getId());
});
//取间开的所有井口
SpaceInstitutionWellheadViewMapper wellheadMapper = context.getBean(SpaceInstitutionWellheadViewMapper.class);
List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadMapper.selectWellheadsByInstitutionIds(institutionIds);
List<SpaceInstitutionWellheadView> spaceWellheadList = this.getSpaceWellheadList(context, institutionIds);
if (CollUtil.isEmpty(spaceWellheadList)) {
throw new XServiceException(BusinessError.DidNotFindWellhead);
}
......@@ -1903,16 +1983,12 @@ public class SpaceOptimizeBaseService {
* @param spaceWellheadList 空间井口清单
*/
private void setServiceRatingForSpaceWellheadList(XContext context, List<SpaceInstitutionWellheadView> spaceWellheadList) {
IBaseWellheadCloudService cloudService = context.getBean(IBaseWellheadCloudService.class);
XListResult<DynamicQueryBaseWellheadOutput> result = cloudService.queryBaseWellheadListByParam(context,
DynamicQueryBaseWellheadInput.builder()
List<DynamicQueryBaseWellheadOutput> wellheadOutputList = ServiceUtil.getBaseWellList(context, DynamicQueryBaseWellheadInput.builder()
.wellheadIds(spaceWellheadList.stream()
.map(SpaceInstitutionWellheadView::getWellheadId)
.collect(Collectors.toList())
)
.build());
result.throwIfFail();
List<DynamicQueryBaseWellheadOutput> wellheadOutputList = result.getResult();
if (CollUtil.isEmpty(wellheadOutputList)) {
return;
}
......@@ -2841,4 +2917,17 @@ public class SpaceOptimizeBaseService {
}
}
}
/**
* 获取间开井口列表
*
* @param context 上下文
* @param institutionIds 机构ID
* @return {@link List }<{@link SpaceInstitutionWellheadView }>
*/
private List<SpaceInstitutionWellheadView> getSpaceWellheadList(XContext context, List<String> institutionIds) {
//取间开的所有井口
SpaceInstitutionWellheadViewMapper wellheadMapper = context.getBean(SpaceInstitutionWellheadViewMapper.class);
return wellheadMapper.selectWellheadsByInstitutionIds(institutionIds);
}
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.IBasePowerLineCloudService;
import pps.cloud.base.service.IBasePriceStrategyCloudService;
import pps.cloud.base.service.IBaseWellheadCloudService;
import pps.cloud.base.service.IConfigOilFieldCloudService;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineInput;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput;
......@@ -17,6 +18,8 @@ import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLi
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantViewOutput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadInput;
import pps.cloud.base.service.data.base_wellhead.DynamicQueryBaseWellheadOutput;
import pps.cloud.base.service.data.config_oil_field.GetConfigOilFieldOutput;
import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.SystemDictionaryService;
......@@ -46,6 +49,20 @@ public class ServiceUtil {
/*-------------------------服务调用-------------------------*/
/**
* 获取基础井列表
*
* @param context 上下文
* @param input 输入
* @return {@link List }<{@link DynamicQueryBaseWellheadOutput }>
*/
public static List<DynamicQueryBaseWellheadOutput> getBaseWellList(XContext context, DynamicQueryBaseWellheadInput input) {
IBaseWellheadCloudService cloudService = context.getBean(IBaseWellheadCloudService.class);
XListResult<DynamicQueryBaseWellheadOutput> result = cloudService.queryBaseWellheadListByParam(context, input);
result.throwIfFail();
return result.getResult();
}
/**
* 获取输电线电站列表
*
......
......@@ -166,13 +166,16 @@
b.service_rating
FROM
space_institution_wellhead w
LEFT JOIN base_wellhead b ON w.wellhead_id = b.id
JOIN base_wellhead b ON w.wellhead_id = b.id
WHERE
w.is_deleted = 1
AND b.is_deleted = 1
<if test="list != null and list.size()>0">
AND w.institution_id IN
<foreach collection="list" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</if>
</select>
<select id="selectInstitutionWellheadList" parameterType="pps.core.space.entity.SpaceInstitutionWellheadView"
......
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