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; ...@@ -6,6 +6,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import xstartup.annotation.XText; import xstartup.annotation.XText;
import java.util.List;
/** /**
* 策略配置详情 * 策略配置详情
* *
...@@ -26,4 +28,7 @@ public class GetBasePriceStrategyDetailInput { ...@@ -26,4 +28,7 @@ public class GetBasePriceStrategyDetailInput {
@XText("时段类型key(字典获取)") @XText("时段类型key(字典获取)")
private String periodTypeKey; private String periodTypeKey;
@XText("市电峰谷月列表")
private List<String> monthList;
} }
...@@ -48,7 +48,8 @@ public class BasePriceStrategyCloudServiceImpl implements IBasePriceStrategyClou ...@@ -48,7 +48,8 @@ public class BasePriceStrategyCloudServiceImpl implements IBasePriceStrategyClou
) )
.lambda() .lambda()
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE) .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) .eq(CharSequenceUtil.isNotBlank(periodTypeKey), BasePriceStrategyDetailEnt::getPeriodTypeKey, periodTypeKey)
.apply(CharSequenceUtil.isNotBlank(lineId), "strategy_id = ( SELECT strategy_id FROM base_power_line WHERE id = {0} ) ", lineId) .apply(CharSequenceUtil.isNotBlank(lineId), "strategy_id = ( SELECT strategy_id FROM base_power_line WHERE id = {0} ) ", lineId)
.orderByAsc(BasePriceStrategyDetailEnt::getStartTime) .orderByAsc(BasePriceStrategyDetailEnt::getStartTime)
......
...@@ -11,7 +11,6 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import pps.cloud.base.service.IBasePowerLineCloudService; 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.DynamicQueryBasePowerLineInput;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput; import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput;
import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput; import pps.cloud.base.service.data.base_power_line_plant.DynamicQueryBasePowerLinePlantInput;
...@@ -48,6 +47,7 @@ import xstartup.error.XError; ...@@ -48,6 +47,7 @@ import xstartup.error.XError;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -58,6 +58,87 @@ import java.util.stream.Collectors; ...@@ -58,6 +58,87 @@ import java.util.stream.Collectors;
*/ */
public class SpaceOptimizeBaseService { 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 { ...@@ -156,8 +237,7 @@ public class SpaceOptimizeBaseService {
institutionIds.add(detail.getId()); institutionIds.add(detail.getId());
}); });
//取间开的所有井口 //取间开的所有井口
SpaceInstitutionWellheadViewMapper wellheadMapper = context.getBean(SpaceInstitutionWellheadViewMapper.class); List<SpaceInstitutionWellheadView> spaceWellheadList = this.getSpaceWellheadList(context, institutionIds);
List<SpaceInstitutionWellheadView> spaceWellheadList = wellheadMapper.selectWellheadsByInstitutionIds(institutionIds);
if (CollUtil.isEmpty(spaceWellheadList)) { if (CollUtil.isEmpty(spaceWellheadList)) {
throw new XServiceException(BusinessError.DidNotFindWellhead); throw new XServiceException(BusinessError.DidNotFindWellhead);
} }
...@@ -1903,16 +1983,12 @@ public class SpaceOptimizeBaseService { ...@@ -1903,16 +1983,12 @@ public class SpaceOptimizeBaseService {
* @param spaceWellheadList 空间井口清单 * @param spaceWellheadList 空间井口清单
*/ */
private void setServiceRatingForSpaceWellheadList(XContext context, List<SpaceInstitutionWellheadView> spaceWellheadList) { private void setServiceRatingForSpaceWellheadList(XContext context, List<SpaceInstitutionWellheadView> spaceWellheadList) {
IBaseWellheadCloudService cloudService = context.getBean(IBaseWellheadCloudService.class); List<DynamicQueryBaseWellheadOutput> wellheadOutputList = ServiceUtil.getBaseWellList(context, DynamicQueryBaseWellheadInput.builder()
XListResult<DynamicQueryBaseWellheadOutput> result = cloudService.queryBaseWellheadListByParam(context,
DynamicQueryBaseWellheadInput.builder()
.wellheadIds(spaceWellheadList.stream() .wellheadIds(spaceWellheadList.stream()
.map(SpaceInstitutionWellheadView::getWellheadId) .map(SpaceInstitutionWellheadView::getWellheadId)
.collect(Collectors.toList()) .collect(Collectors.toList())
) )
.build()); .build());
result.throwIfFail();
List<DynamicQueryBaseWellheadOutput> wellheadOutputList = result.getResult();
if (CollUtil.isEmpty(wellheadOutputList)) { if (CollUtil.isEmpty(wellheadOutputList)) {
return; return;
} }
...@@ -2841,4 +2917,17 @@ public class SpaceOptimizeBaseService { ...@@ -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; ...@@ -8,6 +8,7 @@ import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import pps.cloud.base.service.IBasePowerLineCloudService; import pps.cloud.base.service.IBasePowerLineCloudService;
import pps.cloud.base.service.IBasePriceStrategyCloudService; import pps.cloud.base.service.IBasePriceStrategyCloudService;
import pps.cloud.base.service.IBaseWellheadCloudService;
import pps.cloud.base.service.IConfigOilFieldCloudService; 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.DynamicQueryBasePowerLineInput;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineOutput; 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 ...@@ -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_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.GetBasePriceStrategyDetailInput;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput; 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.base.service.data.config_oil_field.GetConfigOilFieldOutput;
import pps.cloud.system.service.SysOrganizationCloudService; import pps.cloud.system.service.SysOrganizationCloudService;
import pps.cloud.system.service.SystemDictionaryService; import pps.cloud.system.service.SystemDictionaryService;
...@@ -46,6 +49,20 @@ public class ServiceUtil { ...@@ -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 @@ ...@@ -166,13 +166,16 @@
b.service_rating b.service_rating
FROM FROM
space_institution_wellhead w 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 WHERE
w.is_deleted = 1 w.is_deleted = 1
AND b.is_deleted = 1
<if test="list != null and list.size()>0">
AND w.institution_id IN AND w.institution_id IN
<foreach collection="list" open="(" close=")" separator="," item="item"> <foreach collection="list" open="(" close=")" separator="," item="item">
#{item} #{item}
</foreach> </foreach>
</if>
</select> </select>
<select id="selectInstitutionWellheadList" parameterType="pps.core.space.entity.SpaceInstitutionWellheadView" <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