Commit 33221008 authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.长庆演示首页功能开发,新增查询井场/场站列表接口,添加接口文档并完成接口冒烟测试;
2.长庆演示首页功能开发,新增总览信息统计接口,添加接口文档并完成接口冒烟测试;
3.长庆演示首页功能开发,新增用能分析统计接口,添加接口文档并完成接口冒烟测试;
4.长庆演示首页功能开发,新增累计用电统计接口,添加接口文档并完成接口冒烟测试;
5.长庆演示首页功能开发,新增光伏实时监控统计接口,添加接口文档并完成接口冒烟测试;
6.长庆演示首页功能开发,新增先导实验井间开制度统计接口,添加接口文档并完成接口冒烟测试;
7.长庆演示首页功能开发,新增零碳井场收益分析统计接口,添加接口文档并完成接口冒烟测试;
8.长庆演示首页功能开发,新增零碳井场实时监控接口,添加接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent a2c30f3c
......@@ -93,6 +93,11 @@ public class BusinessConstant {
*/
public static final Integer THREE = 3;
/**
* 4
*/
public static final Integer FOUR = 4;
/**
* 10
*/
......
package pps.core.space.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;
import org.apache.commons.lang3.StringUtils;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.space.entity.*;
import pps.core.space.mapper.*;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
import pps.core.space.service.data.space_optimize_long_period.GetSpaceOptimizeLongPeriodViewInput;
import pps.core.space.service.data.space_optimize_long_period.GetSpaceOptimizeLongPeriodViewOutput;
import pps.core.space.entity.SpaceOptimizeLongPeriodView;
import pps.core.space.mapper.SpaceOptimizeLongPeriodViewMapper;
import pps.core.space.service.data.space_optimize_long_period.QuerySpaceOptimizeLongPeriodViewInput;
import pps.core.space.service.data.space_optimize_long_period.QuerySpaceOptimizeLongPeriodViewOutput;
import pps.core.space.service.data.space_optimize_long_wellhead.GetSpaceOptimizeLongWellheadOutput;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodInput;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodOutput;
import pps.core.space.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
......@@ -25,10 +17,10 @@ import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XPageResult;
import xstartup.data.XSingleResult;
import xstartup.error.XError;
import xstartup.feature.api.annotation.XApiGet;
import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -80,94 +72,11 @@ public class SpaceOptimizeLongPeriodService extends SpaceOptimizeBaseService {
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetSpaceOptimizeLongPeriodViewOutput}>
* @return {@link XSingleResult}<{@link GetSpaceOptimizePeriodOutput}>
*/
@XApiGet
@XText("中期间开优化--详情")
public XSingleResult<GetSpaceOptimizeLongPeriodViewOutput> getSpaceOptimizeLongPeriodView(XContext context, GetSpaceOptimizeLongPeriodViewInput input) {
SpaceOptimizeLongPeriodMapper mapper = context.getBean(SpaceOptimizeLongPeriodMapper.class);
String longPeriodId = input.getId();
SpaceOptimizeLongPeriodEnt period = mapper.selectById(longPeriodId);
if (Objects.isNull(period)) {
return XSingleResult.error(context, XError.NotFound);
}
GetSpaceOptimizeLongPeriodViewOutput output = XCopyUtils.copyNewObject(period, GetSpaceOptimizeLongPeriodViewOutput.class);
//查间开制度详情
SpaceInstitutionDetailMapper detailMapper = context.getBean(SpaceInstitutionDetailMapper.class);
SpaceInstitutionDetailEnt detailEnt = detailMapper.selectById(period.getInstitutionId());
if (StringUtils.equals(String.valueOf(BusinessConstant.ONE), Optional.ofNullable(detailEnt.getGridTypeKey())
.orElse(String.valueOf(BusinessConstant.ZERO)))) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(period.getOptimizeDeadline());
output.setStrategyDetailList(ServiceUtil.getStrategyDetailList(context,
GetBasePriceStrategyDetailInput.builder()
.lineId(period.getLineId())
.strategyMonth(String.valueOf(calendar.get(Calendar.MONTH) + 1))
.build()));
} else {
output.setStrategyDetailList(new ArrayList<>(0));
}
output.setDateList(ServiceUtil.getOptimizeDateList(period.getCreateTime(), period.getOptimizeDeadline()));
output.setGridTypeKey(detailEnt.getGridTypeKey());
//查井口列表
SpaceOptimizeLongWellheadMapper wellheadMapper = context.getBean(SpaceOptimizeLongWellheadMapper.class);
List<SpaceOptimizeLongWellheadEnt> wellheadList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeLongWellheadEnt>()
.eq(SpaceOptimizeLongWellheadEnt::getLongPeriodId, longPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeLongWellheadEnt::getStartSeq)
);
if (CollUtil.isNotEmpty(wellheadList)) {
List<GetSpaceOptimizeLongWellheadOutput> wellheadOutputs = XCopyUtils.copyNewList(wellheadList, GetSpaceOptimizeLongWellheadOutput.class);
//查井口配置列表
SpaceOptimizeLongDurationMapper durationMapper = context.getBean(SpaceOptimizeLongDurationMapper.class);
List<SpaceOptimizeLongDurationEnt> durationList = durationMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeLongDurationEnt>()
.eq(SpaceOptimizeLongDurationEnt::getLongPeriodId, longPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeLongDurationEnt::getIsOptimize, SpaceOptimizeLongDurationEnt::getOpenWellTime)
);
if (CollUtil.isNotEmpty(durationList)) {
List<SpaceOptimizeDateDuration> durationOutputs = XCopyUtils.copyNewList(durationList, SpaceOptimizeDateDuration.class);
Map<String, List<SpaceOptimizeDateDuration>> collect = new HashMap<>(16);
for (SpaceOptimizeDateDuration durationOutput : durationOutputs) {
if (StringUtils.isEmpty(durationOutput.getGenerationTypeKey())) {
durationOutput.setGenerationTypeKey(BusinessConstant.PHOTOVOLTAIC);
}
List<SpaceOptimizeDateDuration> tmpList = collect.get(durationOutput.getWellheadId());
if (CollUtil.isEmpty(tmpList)) {
tmpList = new ArrayList<>(16);
tmpList.add(durationOutput);
collect.put(durationOutput.getWellheadId(), tmpList);
} else {
tmpList.add(durationOutput);
}
}
wellheadOutputs.forEach(w -> {
if (collect.containsKey(w.getWellheadId())) {
Map<Integer, List<SpaceOptimizeDateDuration>> listMap = collect.get(w.getWellheadId()).stream()
.collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getIsOptimize));
w.setOptimizeList(ServiceUtil.getAllDateDuration(listMap.get(0)));
w.setInitializeList(ServiceUtil.getAllDateDuration(listMap.get(1)));
} else {
w.setOptimizeList(new ArrayList<>(0));
w.setInitializeList(new ArrayList<>(0));
}
});
}
output.setWellheadList(wellheadOutputs);
} else {
output.setWellheadList(new ArrayList<>(0));
}
//查功率预测信息
output.setPowerGenerationList(
super.getAveragePowerGenerationHourList(context, DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(super.getOptimizeLineRelation(context, CollUtil.newArrayList(detailEnt))
.getPlantIdsByLineIdMap()
.get(detailEnt.getLineId()))
.startTime(DateUtil.beginOfDay(period.getCreateTime()).toString())
.endTime(DateUtil.beginOfDay(period.getOptimizeDeadline()).toString())
.dateType(BusinessConstant.ZERO)
.build())
);
return XSingleResult.success(output);
public XSingleResult<GetSpaceOptimizePeriodOutput> getSpaceOptimizeLongPeriodView(XContext context, GetSpaceOptimizePeriodInput input) {
return XSingleResult.success(super.getSpaceOptimizePeriodView(context, input, BusinessConstant.TWO, BusinessConstant.ZERO));
}
}
\ No newline at end of file
package pps.core.space.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;
import org.apache.commons.lang3.StringUtils;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.space.entity.*;
import pps.core.space.mapper.*;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
import pps.core.space.service.data.SpaceOptimizeDateOutput;
import pps.core.space.service.data.space_optimize_mid_period.GetSpaceOptimizeMidPeriodViewInput;
import pps.core.space.service.data.space_optimize_mid_period.GetSpaceOptimizeMidPeriodViewOutput;
import pps.core.space.entity.SpaceOptimizeMidPeriodView;
import pps.core.space.mapper.SpaceOptimizeMidPeriodViewMapper;
import pps.core.space.service.data.space_optimize_mid_period.QuerySpaceOptimizeMidPeriodViewInput;
import pps.core.space.service.data.space_optimize_mid_period.QuerySpaceOptimizeMidPeriodViewOutput;
import pps.core.space.service.data.space_optimize_mid_wellhead.GetSpaceOptimizeMidWellheadOutput;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodInput;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodOutput;
import pps.core.space.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
......@@ -26,10 +17,10 @@ import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XPageResult;
import xstartup.data.XSingleResult;
import xstartup.error.XError;
import xstartup.feature.api.annotation.XApiGet;
import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -81,101 +72,11 @@ public class SpaceOptimizeMidPeriodService extends SpaceOptimizeBaseService {
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetSpaceOptimizeMidPeriodViewOutput}>
* @return {@link XSingleResult}<{@link GetSpaceOptimizePeriodOutput}>
*/
@XApiGet
@XText("短期间开开优化--详情")
public XSingleResult<GetSpaceOptimizeMidPeriodViewOutput> getSpaceOptimizeMidPeriodView(XContext context, GetSpaceOptimizeMidPeriodViewInput input) {
SpaceOptimizeMidPeriodMapper mapper = context.getBean(SpaceOptimizeMidPeriodMapper.class);
String midPeriodId = input.getId();
SpaceOptimizeMidPeriodEnt period = mapper.selectById(midPeriodId);
if (Objects.isNull(period)) {
return XSingleResult.error(context, XError.NotFound);
}
GetSpaceOptimizeMidPeriodViewOutput output = XCopyUtils.copyNewObject(period, GetSpaceOptimizeMidPeriodViewOutput.class);
//查间开制度详情
SpaceInstitutionDetailMapper detailMapper = context.getBean(SpaceInstitutionDetailMapper.class);
SpaceInstitutionDetailEnt detailEnt = detailMapper.selectById(period.getInstitutionId());
List<SpaceOptimizeDateOutput> optimizeDateList = ServiceUtil.getOptimizeDateList(period.getCreateTime(), period.getOptimizeDeadline());
output.setDateList(optimizeDateList);
if (StringUtils.equals(String.valueOf(BusinessConstant.ONE), Optional.ofNullable(detailEnt.getGridTypeKey())
.orElse(String.valueOf(BusinessConstant.ZERO)))) {
int month;
if (CollUtil.isNotEmpty(optimizeDateList)) {
month = DateUtil.month(optimizeDateList.get(optimizeDateList.size() - 1).getDateTime());
} else {
Calendar calendar = Calendar.getInstance();
calendar.setTime(period.getOptimizeDeadline());
month = calendar.get(Calendar.MONTH);
}
output.setStrategyDetailList(ServiceUtil.getStrategyDetailList(context,
GetBasePriceStrategyDetailInput.builder()
.lineId(period.getLineId())
.strategyMonth(String.valueOf(month + 1))
.build()));
} else {
output.setStrategyDetailList(new ArrayList<>(0));
}
output.setGridTypeKey(detailEnt.getGridTypeKey());
//查井口列表
SpaceOptimizeMidWellheadMapper wellheadMapper = context.getBean(SpaceOptimizeMidWellheadMapper.class);
List<SpaceOptimizeMidWellheadEnt> wellheadList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeMidWellheadEnt>()
.eq(SpaceOptimizeMidWellheadEnt::getMidPeriodId, midPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeMidWellheadEnt::getStartSeq)
);
if (CollUtil.isNotEmpty(wellheadList)) {
List<GetSpaceOptimizeMidWellheadOutput> wellheadOutputs = XCopyUtils.copyNewList(wellheadList, GetSpaceOptimizeMidWellheadOutput.class);
//查井口配置列表
SpaceOptimizeMidDurationMapper durationMapper = context.getBean(SpaceOptimizeMidDurationMapper.class);
List<SpaceOptimizeMidDurationEnt> durationList = durationMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeMidDurationEnt>()
.eq(SpaceOptimizeMidDurationEnt::getMidPeriodId, midPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeMidDurationEnt::getIsOptimize, SpaceOptimizeMidDurationEnt::getOpenWellTime)
);
if (CollUtil.isNotEmpty(durationList)) {
List<SpaceOptimizeDateDuration> durationOutputs = XCopyUtils.copyNewList(durationList, SpaceOptimizeDateDuration.class);
Map<String, List<SpaceOptimizeDateDuration>> collect = new HashMap<>(16);
for (SpaceOptimizeDateDuration durationOutput : durationOutputs) {
if (StringUtils.isEmpty(durationOutput.getGenerationTypeKey())) {
durationOutput.setGenerationTypeKey(BusinessConstant.PHOTOVOLTAIC);
}
List<SpaceOptimizeDateDuration> tmpList = collect.get(durationOutput.getWellheadId());
if (CollUtil.isEmpty(tmpList)) {
tmpList = new ArrayList<>(16);
tmpList.add(durationOutput);
collect.put(durationOutput.getWellheadId(), tmpList);
} else {
tmpList.add(durationOutput);
}
}
wellheadOutputs.forEach(w -> {
if (collect.containsKey(w.getWellheadId())) {
Map<Integer, List<SpaceOptimizeDateDuration>> listMap = collect.get(w.getWellheadId()).stream()
.collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getIsOptimize));
w.setOptimizeList(ServiceUtil.getAllDateDuration(listMap.get(0)));
w.setInitializeList(ServiceUtil.getAllDateDuration(listMap.get(1)));
} else {
w.setOptimizeList(new ArrayList<>(0));
w.setInitializeList(new ArrayList<>(0));
}
});
}
output.setWellheadList(wellheadOutputs);
} else {
output.setWellheadList(new ArrayList<>(0));
}
//查功率预测信息
output.setPowerGenerationList(
super.getAveragePowerGenerationHourList(context, DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(super.getOptimizeLineRelation(context, CollUtil.newArrayList(detailEnt))
.getPlantIdsByLineIdMap()
.get(detailEnt.getLineId()))
.startTime(DateUtil.beginOfDay(period.getCreateTime()).toString())
.endTime(DateUtil.beginOfDay(period.getOptimizeDeadline()).toString())
.dateType(BusinessConstant.ONE)
.build())
);
return XSingleResult.success(output);
public XSingleResult<GetSpaceOptimizePeriodOutput> getSpaceOptimizeMidPeriodView(XContext context, GetSpaceOptimizePeriodInput input) {
return XSingleResult.success(super.getSpaceOptimizePeriodView(context, input, BusinessConstant.THREE, BusinessConstant.ONE));
}
}
\ No newline at end of file
......@@ -8,17 +8,13 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;
import org.apache.commons.lang3.StringUtils;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.space.entity.*;
import pps.core.space.mapper.*;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
import pps.core.space.service.data.SpaceOptimizeDateOutput;
import pps.core.space.service.data.space_optimize_short_period.GetSpaceOptimizeShortPeriodViewInput;
import pps.core.space.service.data.space_optimize_short_period.GetSpaceOptimizeShortPeriodViewOutput;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodInput;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodOutput;
import pps.core.space.service.data.space_optimize_short_period.QuerySpaceOptimizeShortPeriodViewInput;
import pps.core.space.service.data.space_optimize_short_period.QuerySpaceOptimizeShortPeriodViewOutput;
import pps.core.space.service.data.space_optimize_short_wellhead.GetSpaceOptimizeShortWellheadInput;
......@@ -33,10 +29,11 @@ import xstartup.base.util.XCopyUtils;
import xstartup.data.XListResult;
import xstartup.data.XPageResult;
import xstartup.data.XSingleResult;
import xstartup.error.XError;
import xstartup.feature.api.annotation.XApiGet;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -88,102 +85,12 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetSpaceOptimizeShortPeriodViewOutput}>
* @return {@link XSingleResult}<{@link GetSpaceOptimizePeriodOutput}>
*/
@XApiGet
@XText("极短期间开优化--详情")
public XSingleResult<GetSpaceOptimizeShortPeriodViewOutput> getSpaceOptimizeShortPeriodView(XContext context, GetSpaceOptimizeShortPeriodViewInput input) {
SpaceOptimizeShortPeriodMapper mapper = context.getBean(SpaceOptimizeShortPeriodMapper.class);
String shortPeriodId = input.getId();
SpaceOptimizeShortPeriodEnt period = mapper.selectById(shortPeriodId);
if (Objects.isNull(period)) {
return XSingleResult.error(context, XError.NotFound);
}
GetSpaceOptimizeShortPeriodViewOutput output = XCopyUtils.copyNewObject(period, GetSpaceOptimizeShortPeriodViewOutput.class);
//查间开制度详情
SpaceInstitutionDetailMapper detailMapper = context.getBean(SpaceInstitutionDetailMapper.class);
SpaceInstitutionDetailEnt detailEnt = detailMapper.selectById(period.getInstitutionId());
List<SpaceOptimizeDateOutput> optimizeDateList = ServiceUtil.getOptimizeDateList(period.getCreateTime(), period.getOptimizeDate());
output.setDateList(optimizeDateList);
if (StringUtils.equals(String.valueOf(BusinessConstant.ONE), Optional.ofNullable(detailEnt.getGridTypeKey())
.orElse(String.valueOf(BusinessConstant.ZERO)))) {
int month;
if (CollUtil.isNotEmpty(optimizeDateList)) {
month = DateUtil.month(optimizeDateList.get(optimizeDateList.size() - 1).getDateTime());
} else {
Calendar calendar = Calendar.getInstance();
calendar.setTime(period.getOptimizeDate());
month = calendar.get(Calendar.MONTH);
}
output.setStrategyDetailList(ServiceUtil.getStrategyDetailList(context,
GetBasePriceStrategyDetailInput.builder()
.lineId(period.getLineId())
.strategyMonth(String.valueOf(month + 1))
.build()));
} else {
output.setStrategyDetailList(new ArrayList<>(0));
}
output.setGridTypeKey(detailEnt.getGridTypeKey());
//查井口列表
SpaceOptimizeShortWellheadMapper wellheadMapper = context.getBean(SpaceOptimizeShortWellheadMapper.class);
List<SpaceOptimizeShortWellheadEnt> wellheadList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeShortWellheadEnt>()
.eq(SpaceOptimizeShortWellheadEnt::getShortPeriodId, shortPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeShortWellheadEnt::getStartSeq)
);
if (CollUtil.isNotEmpty(wellheadList)) {
List<GetSpaceOptimizeShortWellheadOutput> wellheadOutputs = XCopyUtils.copyNewList(wellheadList, GetSpaceOptimizeShortWellheadOutput.class);
//查井口配置列表
SpaceOptimizeShortDurationMapper durationMapper = context.getBean(SpaceOptimizeShortDurationMapper.class);
List<SpaceOptimizeShortDurationEnt> durationList = durationMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeShortDurationEnt>()
.eq(SpaceOptimizeShortDurationEnt::getShortPeriodId, shortPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeShortDurationEnt::getIsOptimize, SpaceOptimizeShortDurationEnt::getOpenWellTime)
);
if (CollUtil.isNotEmpty(durationList)) {
List<SpaceOptimizeDateDuration> durationOutputs = XCopyUtils.copyNewList(durationList, SpaceOptimizeDateDuration.class);
Map<String, List<SpaceOptimizeDateDuration>> collect = new HashMap<>(16);
for (SpaceOptimizeDateDuration durationOutput : durationOutputs) {
if (StringUtils.isEmpty(durationOutput.getGenerationTypeKey())) {
durationOutput.setGenerationTypeKey(BusinessConstant.PHOTOVOLTAIC);
}
List<SpaceOptimizeDateDuration> tmpList = collect.get(durationOutput.getWellheadId());
if (CollUtil.isEmpty(tmpList)) {
tmpList = new ArrayList<>(16);
tmpList.add(durationOutput);
collect.put(durationOutput.getWellheadId(), tmpList);
} else {
tmpList.add(durationOutput);
}
}
wellheadOutputs.forEach(w -> {
if (collect.containsKey(w.getWellheadId())) {
Map<Integer, List<SpaceOptimizeDateDuration>> listMap = collect.get(w.getWellheadId()).stream()
.collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getIsOptimize));
w.setOptimizeList(ServiceUtil.getAllDateDuration(listMap.get(0)));
w.setInitializeList(ServiceUtil.getAllDateDuration(listMap.get(1)));
} else {
w.setOptimizeList(new ArrayList<>(0));
w.setInitializeList(new ArrayList<>(0));
}
});
}
output.setWellheadList(wellheadOutputs);
} else {
output.setWellheadList(new ArrayList<>(0));
}
//查功率预测信息
output.setPowerGenerationList(
super.getAveragePowerGenerationHourList(context, DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(super.getOptimizeLineRelation(context, CollUtil.newArrayList(detailEnt))
.getPlantIdsByLineIdMap()
.get(detailEnt.getLineId()))
.startTime(DateUtil.beginOfDay(period.getCreateTime()).toString())
.endTime(DateUtil.beginOfDay(period.getOptimizeDate()).toString())
.dateType(BusinessConstant.ONE)
.build())
);
return XSingleResult.success(output);
public XSingleResult<GetSpaceOptimizePeriodOutput> getSpaceOptimizeShortPeriodView(XContext context, GetSpaceOptimizePeriodInput input) {
return XSingleResult.success(super.getSpaceOptimizePeriodView(context, input, BusinessConstant.FOUR, BusinessConstant.ONE));
}
/**
......
package pps.core.space.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.page.PageMethod;
import org.apache.commons.lang3.StringUtils;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailInput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerInput;
import pps.core.common.constant.BusinessConstant;
import pps.core.common.entity.BaseModel;
import pps.core.space.entity.*;
import pps.core.space.mapper.*;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
import pps.core.space.service.data.space_optimize_ultra_period.GetSpaceOptimizeUltraPeriodViewInput;
import pps.core.space.service.data.space_optimize_ultra_period.GetSpaceOptimizeUltraPeriodViewOutput;
import pps.core.space.entity.SpaceOptimizeUltraPeriodView;
import pps.core.space.mapper.SpaceOptimizeUltraPeriodViewMapper;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodInput;
import pps.core.space.service.data.space_optimize_period.GetSpaceOptimizePeriodOutput;
import pps.core.space.service.data.space_optimize_ultra_period.QuerySpaceOptimizeUltraPeriodViewInput;
import pps.core.space.service.data.space_optimize_ultra_period.QuerySpaceOptimizeUltraPeriodViewOutput;
import pps.core.space.service.data.space_optimize_ultra_wellhead.GetSpaceOptimizeUltraWellheadOutput;
import pps.core.space.utils.ServiceUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
......@@ -25,10 +17,10 @@ import xstartup.base.XContext;
import xstartup.base.util.XCopyUtils;
import xstartup.data.XPageResult;
import xstartup.data.XSingleResult;
import xstartup.error.XError;
import xstartup.feature.api.annotation.XApiGet;
import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -80,94 +72,11 @@ public class SpaceOptimizeUltraPeriodService extends SpaceOptimizeBaseService {
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetSpaceOptimizeUltraPeriodViewOutput}>
* @return {@link XSingleResult}<{@link GetSpaceOptimizePeriodOutput}>
*/
@XApiGet
@XText("长期间开优化--详情")
public XSingleResult<GetSpaceOptimizeUltraPeriodViewOutput> getSpaceOptimizeUltraPeriodView(XContext context, GetSpaceOptimizeUltraPeriodViewInput input) {
SpaceOptimizeUltraPeriodMapper mapper = context.getBean(SpaceOptimizeUltraPeriodMapper.class);
String ultraPeriodId = input.getId();
SpaceOptimizeUltraPeriodEnt period = mapper.selectById(ultraPeriodId);
if (Objects.isNull(period)) {
return XSingleResult.error(context, XError.NotFound);
}
GetSpaceOptimizeUltraPeriodViewOutput output = XCopyUtils.copyNewObject(period, GetSpaceOptimizeUltraPeriodViewOutput.class);
//查间开制度详情
SpaceInstitutionDetailMapper detailMapper = context.getBean(SpaceInstitutionDetailMapper.class);
SpaceInstitutionDetailEnt detailEnt = detailMapper.selectById(period.getInstitutionId());
if (StringUtils.equals(String.valueOf(BusinessConstant.ONE), Optional.ofNullable(detailEnt.getGridTypeKey())
.orElse(String.valueOf(BusinessConstant.ZERO)))) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(period.getOptimizeDeadline());
output.setStrategyDetailList(ServiceUtil.getStrategyDetailList(context,
GetBasePriceStrategyDetailInput.builder()
.lineId(period.getLineId())
.strategyMonth(String.valueOf(calendar.get(Calendar.MONTH) + 1))
.build()));
} else {
output.setStrategyDetailList(new ArrayList<>(0));
}
output.setDateList(ServiceUtil.getOptimizeDateList(period.getCreateTime(), period.getOptimizeDeadline()));
output.setGridTypeKey(detailEnt.getGridTypeKey());
//查井口列表
SpaceOptimizeUltraWellheadMapper wellheadMapper = context.getBean(SpaceOptimizeUltraWellheadMapper.class);
List<SpaceOptimizeUltraWellheadEnt> wellheadList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeUltraWellheadEnt>()
.eq(SpaceOptimizeUltraWellheadEnt::getUltraPeriodId, ultraPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeUltraWellheadEnt::getStartSeq)
);
if (CollUtil.isNotEmpty(wellheadList)) {
List<GetSpaceOptimizeUltraWellheadOutput> wellheadOutputs = XCopyUtils.copyNewList(wellheadList, GetSpaceOptimizeUltraWellheadOutput.class);
//查井口配置列表
SpaceOptimizeUltraDurationMapper durationMapper = context.getBean(SpaceOptimizeUltraDurationMapper.class);
List<SpaceOptimizeUltraDurationEnt> durationList = durationMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeUltraDurationEnt>()
.eq(SpaceOptimizeUltraDurationEnt::getUltraPeriodId, ultraPeriodId)
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.orderByAsc(SpaceOptimizeUltraDurationEnt::getIsOptimize, SpaceOptimizeUltraDurationEnt::getOpenWellTime)
);
if (CollUtil.isNotEmpty(durationList)) {
List<SpaceOptimizeDateDuration> durationOutputs = XCopyUtils.copyNewList(durationList, SpaceOptimizeDateDuration.class);
Map<String, List<SpaceOptimizeDateDuration>> collect = new HashMap<>(16);
for (SpaceOptimizeDateDuration durationOutput : durationOutputs) {
if (StringUtils.isEmpty(durationOutput.getGenerationTypeKey())) {
durationOutput.setGenerationTypeKey(BusinessConstant.PHOTOVOLTAIC);
}
List<SpaceOptimizeDateDuration> tmpList = collect.get(durationOutput.getWellheadId());
if (CollUtil.isEmpty(tmpList)) {
tmpList = new ArrayList<>(16);
tmpList.add(durationOutput);
collect.put(durationOutput.getWellheadId(), tmpList);
} else {
tmpList.add(durationOutput);
}
}
wellheadOutputs.forEach(w -> {
if (collect.containsKey(w.getWellheadId())) {
Map<Integer, List<SpaceOptimizeDateDuration>> listMap = collect.get(w.getWellheadId()).stream()
.collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getIsOptimize));
w.setOptimizeList(ServiceUtil.getAllDateDuration(listMap.get(0)));
w.setInitializeList(ServiceUtil.getAllDateDuration(listMap.get(1)));
} else {
w.setOptimizeList(new ArrayList<>(0));
w.setInitializeList(new ArrayList<>(0));
}
});
}
output.setWellheadList(wellheadOutputs);
} else {
output.setWellheadList(new ArrayList<>(0));
}
//查功率预测信息
output.setPowerGenerationList(
super.getAveragePowerGenerationHourList(context, DynamicQueryPlantPredictedPowerInput.builder()
.plantIds(super.getOptimizeLineRelation(context, CollUtil.newArrayList(detailEnt))
.getPlantIdsByLineIdMap()
.get(detailEnt.getLineId()))
.startTime(DateUtil.beginOfDay(period.getCreateTime()).toString())
.endTime(DateUtil.beginOfDay(period.getOptimizeDeadline()).toString())
.dateType(BusinessConstant.ZERO)
.build())
);
return XSingleResult.success(output);
public XSingleResult<GetSpaceOptimizePeriodOutput> getSpaceOptimizeUltraPeriodView(XContext context, GetSpaceOptimizePeriodInput input) {
return XSingleResult.success(super.getSpaceOptimizePeriodView(context, input, BusinessConstant.ONE, BusinessConstant.ZERO));
}
}
\ No newline at end of file
......@@ -6,6 +6,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
import java.util.Date;
/**
* 间开优化时间区间
*
......@@ -38,4 +40,7 @@ public class SpaceOptimizeDateDuration {
@XText("是否第一次启动(0_是;1_否)")
private Integer firstStart;
@XText("优化日期")
private Date optimizeDate;
}
package pps.core.space.service.data.space_optimize_period;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import xstartup.annotation.XText;
import java.util.Date;
/**
* 间开优化周期记录
*
* @author ZWT
* @date 2024/03/22
*/
@Data
public class GetSpaceOptimizePeriodInput {
@XText("ID")
@NotBlank(message = "缺少ID")
private String id;
@XText("优化日期")
private Date optimizeDate;
}
package pps.core.space.service.data.space_optimize_period;
import lombok.Data;
import pps.cloud.base.service.data.base_price_strategy_detail.GetBasePriceStrategyDetailOutput;
import pps.cloud.prediction.service.data.plant_predicted_power_data.DynamicQueryPlantPredictedPowerOutput;
import pps.core.space.service.data.SpaceOptimizeDateOutput;
import xstartup.annotation.XText;
import java.util.Date;
import java.util.List;
/**
* 间开优化周期记录
*
* @author ZWT
* @date 2024/03/22
*/
@Data
public class GetSpaceOptimizePeriodOutput {
@XText("ID")
private String id;
@XText("线路ID")
private String lineId;
@XText("间开制度ID")
private String institutionId;
@XText("执行周期")
private String executionCycle;
@XText("优化状态(0_已优化;1_未优化)")
private Integer optimizeState;
@XText("优化截止日期")
private Date optimizeDeadline;
@XText("优化日期")
private Date optimizeDate;
@XText("创建时间")
private Date createTime;
/**
* 电网类型key
*/
@XText("电网类型key(字典获取)")
private String gridTypeKey;
/**
* 已优化日期列表
*/
@XText("已优化日期列表")
List<SpaceOptimizeDateOutput> dateList;
/**
* 井口信息
*/
@XText("井口信息")
List<GetSpaceOptimizeWellheadOutput> wellheadList;
/**
* 策略配置列表
*/
@XText("策略配置列表")
List<GetBasePriceStrategyDetailOutput> strategyDetailList;
/**
* 功率预测列表
*/
@XText("功率预测列表")
List<DynamicQueryPlantPredictedPowerOutput> powerGenerationList;
}
package pps.core.space.service.data.space_optimize_period;
import lombok.Data;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
import xstartup.annotation.XText;
import java.util.List;
/**
* 间开优化井口记录
*
* @author ZWT
* @date 2024/03/22
*/
@Data
public class GetSpaceOptimizeWellheadOutput {
@XText("ID")
private String id;
@XText("井口ID")
private String wellheadId;
@XText("井号")
private String wellNumber;
/**
* 井口配置(未优化)
*/
@XText("井口配置(未优化)")
private List<SpaceOptimizeDateDuration> initializeList;
/**
* 井口配置(已优化)
*/
@XText("井口配置(已优化)")
private List<SpaceOptimizeDateDuration> optimizeList;
}
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