Commit 73ec5583 authored by ZWT's avatar ZWT

feat(能源管理系统): 基础信息配置,间开制度管理

1.优化基础信息配置-柴发设备模块新增,修改,删除,查询接口,优化代码结构增加事务处理;
2.优化基础信息配置-储能设备模块新增,修改,删除,查询接口,优化代码结构增加事务处理;
3.优化基础信息配置-井口设备模块新增,修改,删除,查询接口,优化代码结构增加事务处理;
4.优化基础信息配置-光伏电站模块新增,修改,删除,查询接口,优化代码结构增加事务处理;
5.修改间开制度管理-长期间开优化模块详情接口,增加查询已优化时间周期逻辑,修改接口文档完成冒烟测试;
6.修改间开制度管理-中短期间开优化模块详情接口,增加查询已优化时间周期逻辑,修改接口文档完成冒烟测试;
7.修改间开制度管理业务操作工具类,增加通过开始时间和结束时间获取时间区间的方法;
8.添加业务异常枚举;
9.修改间开制度管理-长期间开优化模块详情接口,添加电网类型返回值,修改接口文档完成冒烟测试;
10.修改间开制度管理-中短期间开优化模块详情接口,添加电网类型返回值,修改接口文档完成冒烟测试;
11.修改间开制度管理-长期间开优化模块详情接口,修改井口配置详情区分已优化和未优化时间段,修改接口文档完成冒烟测试;
12.修改间开制度管理-中短期间开优化模块详情接口,修改井口配置详情区分已优化和未优化时间段,修改接口文档完成冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 5ea08ae9
......@@ -10,7 +10,7 @@ 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.space_optimize_long_duration.GetSpaceOptimizeLongDurationOutput;
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.service.data.space_optimize_long_period.QuerySpaceOptimizeLongPeriodViewInput;
......@@ -124,17 +124,17 @@ public class SpaceOptimizeLongPeriodService {
.orderByAsc(SpaceOptimizeLongDurationEnt::getIsOptimize, SpaceOptimizeLongDurationEnt::getOpenWellTime)
);
if (CollUtil.isNotEmpty(durationList)) {
List<GetSpaceOptimizeLongDurationOutput> durationOutputs = XCopyUtils.copyNewList(durationList, GetSpaceOptimizeLongDurationOutput.class);
Map<String, List<GetSpaceOptimizeLongDurationOutput>> collect = durationOutputs.stream()
List<SpaceOptimizeDateDuration> durationOutputs = XCopyUtils.copyNewList(durationList, SpaceOptimizeDateDuration.class);
Map<String, List<SpaceOptimizeDateDuration>> collect = durationOutputs.stream()
.collect(
Collectors.groupingBy(GetSpaceOptimizeLongDurationOutput::getWellheadId)
Collectors.groupingBy(SpaceOptimizeDateDuration::getWellheadId)
);
wellheadOutputs.forEach(w -> {
if (collect.containsKey(w.getWellheadId())) {
Map<Integer, List<GetSpaceOptimizeLongDurationOutput>> listMap = collect.get(w.getWellheadId()).stream()
.collect(Collectors.groupingBy(GetSpaceOptimizeLongDurationOutput::getIsOptimize));
w.setOptimizeList(listMap.get(0));
w.setInitializeList(listMap.get(1));
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));
......
......@@ -10,7 +10,7 @@ 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.space_optimize_mid_duration.GetSpaceOptimizeMidDurationOutput;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
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.service.data.space_optimize_mid_period.QuerySpaceOptimizeMidPeriodViewInput;
......@@ -124,17 +124,17 @@ public class SpaceOptimizeMidPeriodService {
.orderByAsc(SpaceOptimizeMidDurationEnt::getIsOptimize, SpaceOptimizeMidDurationEnt::getOpenWellTime)
);
if (CollUtil.isNotEmpty(durationList)) {
List<GetSpaceOptimizeMidDurationOutput> durationOutputs = XCopyUtils.copyNewList(durationList, GetSpaceOptimizeMidDurationOutput.class);
Map<String, List<GetSpaceOptimizeMidDurationOutput>> collect = durationOutputs.stream()
List<SpaceOptimizeDateDuration> durationOutputs = XCopyUtils.copyNewList(durationList, SpaceOptimizeDateDuration.class);
Map<String, List<SpaceOptimizeDateDuration>> collect = durationOutputs.stream()
.collect(
Collectors.groupingBy(GetSpaceOptimizeMidDurationOutput::getWellheadId)
Collectors.groupingBy(SpaceOptimizeDateDuration::getWellheadId)
);
wellheadOutputs.forEach(w -> {
if (collect.containsKey(w.getWellheadId())) {
Map<Integer, List<GetSpaceOptimizeMidDurationOutput>> listMap = collect.get(w.getWellheadId()).stream()
.collect(Collectors.groupingBy(GetSpaceOptimizeMidDurationOutput::getIsOptimize));
w.setOptimizeList(listMap.get(0));
w.setInitializeList(listMap.get(1));
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));
......
package pps.core.space.service.data;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import xstartup.annotation.XText;
/**
* 间开优化时间区间
*
* @author ZWT
* @date 2023/09/12 15:17
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SpaceOptimizeDateDuration {
@XText("井口ID")
private String wellheadId;
@XText("是否优化(0_是;1_否)")
private Integer isOptimize;
@XText("发电类型key(字典获取)")
private String generationTypeKey;
@XText("开井时间")
private String openWellTime;
@XText("关井时间")
private String closeWellTime;
@XText("井口状态:0_关井,1_开井")
private Integer isOpen;
}
package pps.core.space.service.data.space_optimize_long_wellhead;
import lombok.Data;
import pps.core.space.service.data.space_optimize_long_duration.GetSpaceOptimizeLongDurationOutput;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
import xstartup.annotation.XText;
import java.util.List;
......@@ -28,11 +28,11 @@ public class GetSpaceOptimizeLongWellheadOutput {
* 井口配置(未优化)
*/
@XText("井口配置(未优化)")
private List<GetSpaceOptimizeLongDurationOutput> initializeList;
private List<SpaceOptimizeDateDuration> initializeList;
/**
* 井口配置(已优化)
*/
@XText("井口配置(已优化)")
private List<GetSpaceOptimizeLongDurationOutput> optimizeList;
private List<SpaceOptimizeDateDuration> optimizeList;
}
package pps.core.space.service.data.space_optimize_mid_wellhead;
import lombok.Data;
import pps.core.space.service.data.space_optimize_mid_duration.GetSpaceOptimizeMidDurationOutput;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
import xstartup.annotation.XText;
import java.util.List;
......@@ -28,11 +28,11 @@ public class GetSpaceOptimizeMidWellheadOutput {
* 井口配置(未优化)
*/
@XText("井口配置(未优化)")
private List<GetSpaceOptimizeMidDurationOutput> initializeList;
private List<SpaceOptimizeDateDuration> initializeList;
/**
* 井口配置(已优化)
*/
@XText("井口配置(已优化)")
private List<GetSpaceOptimizeMidDurationOutput> optimizeList;
private List<SpaceOptimizeDateDuration> optimizeList;
}
package pps.core.space.utils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import pps.cloud.base.service.IBasePowerLineCloudService;
import pps.cloud.base.service.IBasePriceStrategyCloudService;
import pps.cloud.base.service.data.base_power_line.DynamicQueryBasePowerLineInput;
......@@ -17,15 +19,13 @@ import pps.cloud.system.service.SystemAreaService;
import pps.cloud.system.service.SystemDictionaryService;
import pps.cloud.system.service.data.*;
import pps.core.common.constant.BusinessConstant;
import pps.core.space.service.data.SpaceOptimizeDateDuration;
import pps.core.space.service.data.SpaceOptimizeDateOutput;
import xstartup.base.XContext;
import xstartup.data.XListResult;
import xstartup.data.XSingleResult;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -211,4 +211,74 @@ public class ServiceUtil {
return spaceOptimizeDateOutput;
}).collect(Collectors.toList());
}
/**
* 封装全天时间段
*
* @param optimizeList 优化列表
* @return {@link List}<{@link SpaceOptimizeDateDuration}>
*/
public static List<SpaceOptimizeDateDuration> getAllDateDuration(List<SpaceOptimizeDateDuration> optimizeList) {
List<SpaceOptimizeDateDuration> allList = new ArrayList<>(16);
if (CollUtil.isEmpty(optimizeList)) {
allList.add(
SpaceOptimizeDateDuration.builder()
.openWellTime("00:00")
.closeWellTime("24:00")
.isOpen(0)
.build()
);
return allList;
}
int size = optimizeList.size();
for (int i = 0; i < size; i++) {
SpaceOptimizeDateDuration optimize = optimizeList.get(i);
String openWellTime = optimize.getOpenWellTime();
String closeWellTime = optimize.getCloseWellTime();
optimize.setIsOpen(1);
if (i == 0) {
//如果开始时间不是从00:00开始,初始化开始时间为关井时间
if (!StringUtils.equals("00:00", openWellTime)) {
allList.add(
SpaceOptimizeDateDuration.builder()
.openWellTime("00:00")
.closeWellTime(openWellTime)
.isOpen(0)
.build()
);
}
}
//将当前时段添加到新集合
allList.add(optimize);
//判断当前时段到下一时段间是否有关井时段
int next = i + 1;
int last = size - 1;
if (next <= last) {
SpaceOptimizeDateDuration nextOptimize = optimizeList.get(next);
String nextOpenWellTime = nextOptimize.getOpenWellTime();
if (!StringUtils.equals(closeWellTime, nextOpenWellTime)) {
allList.add(
SpaceOptimizeDateDuration.builder()
.openWellTime(closeWellTime)
.closeWellTime(nextOpenWellTime)
.isOpen(0)
.build()
);
}
}
if (i == last) {
//如果结束时间不是24:00开始,初始化最终关井时间
if (!StringUtils.equals("24:00", closeWellTime)) {
allList.add(
SpaceOptimizeDateDuration.builder()
.openWellTime(closeWellTime)
.closeWellTime("24:00")
.isOpen(0)
.build()
);
}
}
}
return allList;
}
}
\ 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