Commit 8532eb1e authored by ZWT's avatar ZWT

feat(零碳): 长庆

1.修改极短期间开预测定时任务逻辑,解决优化后部分优化结果时间段过短问题;
2.修改心知天气气象数据获取及接收定时任务,解决天气数据通过邮件下载后,部分数据精度丢失问题;
3.修改首页各个接口逻辑,对小数类型字段进行处理,修改首页接口,增加小时保留两位四舍五入逻辑,同时解决线路详情接口部分查询逻辑报错问题;
4.能耗分析模块,能耗概览接口修改,修改查询逻辑,修改数据获取逻辑及绿电占比计算逻辑;
5.能耗分析模块,消纳曲线用电趋势接口修改,修改查询逻辑,修改数据获取逻辑及绿电占比计算逻辑;
6.能耗分析模块,用电详情接口修改,修改查询逻辑,修改数据获取逻辑及绿电占比计算逻辑;
7.修改首页先导实验井间开制度模块接口查询逻辑,解决极短期间开优化修改后没有第一次开井时间标识导致数据查询不出来问题;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent ec54ee28
...@@ -559,6 +559,166 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService { ...@@ -559,6 +559,166 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
}); });
} }
/**
* 极短期间开开优化--分页列表
*
* @param context 上下文
* @param input 输入
* @return {@link XPageResult}<{@link QuerySpaceOptimizeShortPeriodViewOutput}>
*/
@XApiGet
@XText("极短期间开优化--分页列表")
public XPageResult<QuerySpaceOptimizeShortPeriodViewOutput> querySpaceOptimizeShortPeriodView(XContext context, QuerySpaceOptimizeShortPeriodViewInput input) {
SpaceOptimizeShortPeriodViewMapper mapper = context.getBean(SpaceOptimizeShortPeriodViewMapper.class);
SpaceOptimizeShortPeriodView record = XCopyUtils.copyNewObject(input, SpaceOptimizeShortPeriodView.class);
PageMethod.startPage(input.getPage(), input.getLimit());
List<SpaceOptimizeShortPeriodView> list = mapper.selectList(record);
PageInfo<SpaceOptimizeShortPeriodView> pageInfo = new PageInfo<>(list);
List<QuerySpaceOptimizeShortPeriodViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QuerySpaceOptimizeShortPeriodViewOutput.class);
if (CollUtil.isNotEmpty(outputs)) {
Map<String, String> gridTypeMap = ServiceUtil.getDictMap(context, BusinessConstant.GRID_TYPE);
Map<String, String> ouMap = ServiceUtil.getOuMapByOuIds(context, outputs.stream()
.map(QuerySpaceOptimizeShortPeriodViewOutput::getOuId)
.distinct()
.collect(Collectors.toList())
);
String lineName = ServiceUtil.getPowerLineNameById(context, input.getLineId());
outputs.forEach(output -> {
output.setLineName(lineName);
output.setOuName(ouMap.get(output.getOuId()));
output.setGridTypeName(gridTypeMap.get(output.getGridTypeKey()));
output.setOptimizeStateValue(output.getOptimizeState().equals(0) ? BusinessConstant.OPTIMIZED_C : BusinessConstant.NO_OPTIMIZATION_C);
});
}
return XPageResult.success(outputs, input, pageInfo.getTotal());
}
/**
* 极短期间开开优化--详情
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetSpaceOptimizePeriodOutput}>
*/
@XApiGet
@XText("极短期间开优化--详情")
public XSingleResult<GetSpaceOptimizePeriodOutput> getSpaceOptimizeShortPeriodView(XContext context, GetSpaceOptimizePeriodInput input) {
return XSingleResult.success(super.getSpaceOptimizePeriodView(context, input, BusinessConstant.FOUR, BusinessConstant.ONE));
}
/**
* 获取当日井口优化列表
* GET /space/space-optimize-short-period/get-optimize-list
* 接口ID:158457157
* 接口地址:https://app.apifox.com/project/3196988/apis/api-158457157
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link GetSpaceOptimizeShortWellheadOutput}>
*/
@XApiGet
@XText("极短期间开优化--获取当日井口优化列表")
public XListResult<GetSpaceOptimizeShortWellheadOutput> getOptimizeList(XContext context, GetSpaceOptimizeShortWellheadInput input) {
DateTime now = DateUtil.beginOfDay(DateTime.now());
String lineId = input.getLineId();
String wellheadId = input.getWellheadId();
SpaceOptimizeShortPeriodMapper mapper = context.getBean(SpaceOptimizeShortPeriodMapper.class);
SpaceOptimizeShortPeriodEnt periodEnt = mapper.selectOne(new LambdaQueryWrapper<SpaceOptimizeShortPeriodEnt>()
.eq(SpaceOptimizeShortPeriodEnt::getOptimizeDate, now)
.eq(SpaceOptimizeShortPeriodEnt::getLineId, lineId)
.last("limit 1")
);
if (ObjectUtil.isEmpty(periodEnt)) {
return XListResult.success(Collections.emptyList());
}
SpaceOptimizeShortWellheadMapper wellheadMapper = context.getBean(SpaceOptimizeShortWellheadMapper.class);
List<SpaceOptimizeShortWellheadEnt> wellheadList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeShortWellheadEnt>()
.eq(SpaceOptimizeShortWellheadEnt::getShortPeriodId, periodEnt.getId())
.eq(CharSequenceUtil.isNotBlank(wellheadId), SpaceOptimizeShortWellheadEnt::getWellheadId, wellheadId)
);
if (CollUtil.isEmpty(wellheadList)) {
return XListResult.success(Collections.emptyList());
}
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, periodEnt.getId())
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceOptimizeShortDurationEnt::getIsOptimize, BusinessConstant.ZERO)
.eq(CharSequenceUtil.isNotBlank(wellheadId), SpaceOptimizeShortDurationEnt::getWellheadId, wellheadId)
.orderByAsc(SpaceOptimizeShortDurationEnt::getIsOptimize, SpaceOptimizeShortDurationEnt::getOpenWellTime)
);
List<SpaceOptimizeDateDuration> durationOutputs = XCopyUtils.copyNewList(durationList, SpaceOptimizeDateDuration.class);
Map<String, List<SpaceOptimizeDateDuration>> collect = durationOutputs.stream()
.collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getWellheadId));
for (GetSpaceOptimizeShortWellheadOutput wellhead : wellheadOutputs) {
wellhead.setOptimizeList(ServiceUtil.getAllDateDuration(collect.get(wellhead.getWellheadId())));
}
return XListResult.success(wellheadOutputs);
}
/**
* 先导实验井间开制度
*
* @param context 上下文
* @param input 输入
* @return {@link XPageResult}<{@link QuerySpaceOptimizeShortWellheadViewOutput}>
*/
@XApiGet
@XText("极短期间开优化--先导实验井间开制度")
public XPageResult<QuerySpaceOptimizeShortWellheadViewOutput> getDailySystemDisplay(XContext context, QuerySpaceOptimizeShortWellheadViewInput input) {
SpaceOptimizeShortDurationViewMapper mapper = context.getBean(SpaceOptimizeShortDurationViewMapper.class);
PageMethod.startPage(input.getPage(), input.getLimit());
List<SpaceOptimizeShortDurationView> list = mapper.selectDailySystemDisplay(SpaceOptimizeShortDurationView.builder()
.queryDate(DateUtil.beginOfDay(DateUtil.date()))
.ouId(input.getStationId())
.build());
PageInfo<SpaceOptimizeShortDurationView> pageInfo = new PageInfo<>(list);
return XPageResult.success(XCopyUtils.copyNewList(pageInfo.getList(), QuerySpaceOptimizeShortWellheadViewOutput.class),
input, pageInfo.getTotal());
}
/*------------------------------------------- private -------------------------------------------*/
/**
* 加时
*
* @param durationDTO 持续时间dto
* @param endTime 结束时间
* @param minute 分钟
*/
private void overtime(SpaceOptimizeDurationDTO durationDTO, DateTime endTime, int minute) {
//判断向前补还是向后补
if (DateUtil.compare(durationDTO.getOpenTime(), endTime) == 0) {
//向前补
durationDTO.setOpenTime(DateUtil.offsetMinute(durationDTO.getOpenTime(), -minute));
} else {
//向后补
durationDTO.setCloseTime(DateUtil.offsetMinute(durationDTO.getCloseTime(), minute));
}
}
/**
* 通过时段类型获取权重
*
* @param periodTypeKey 周期类型键
* @return int
*/
private int getWeightByPeriodTypeKey(String periodTypeKey) {
switch (periodTypeKey) {
case "LOW":
return 5;
case "PEACE":
return 3;
case "PEAK":
return 1;
case "RUSH":
default:
return 0;
}
}
/** /**
* 计算权重列表 * 计算权重列表
* *
...@@ -1179,161 +1339,4 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService { ...@@ -1179,161 +1339,4 @@ public class SpaceOptimizeShortPeriodService extends SpaceOptimizeBaseService {
} }
} }
} }
/**
* 极短期间开开优化--分页列表
*
* @param context 上下文
* @param input 输入
* @return {@link XPageResult}<{@link QuerySpaceOptimizeShortPeriodViewOutput}>
*/
@XApiGet
@XText("极短期间开优化--分页列表")
public XPageResult<QuerySpaceOptimizeShortPeriodViewOutput> querySpaceOptimizeShortPeriodView(XContext context, QuerySpaceOptimizeShortPeriodViewInput input) {
SpaceOptimizeShortPeriodViewMapper mapper = context.getBean(SpaceOptimizeShortPeriodViewMapper.class);
SpaceOptimizeShortPeriodView record = XCopyUtils.copyNewObject(input, SpaceOptimizeShortPeriodView.class);
PageMethod.startPage(input.getPage(), input.getLimit());
List<SpaceOptimizeShortPeriodView> list = mapper.selectList(record);
PageInfo<SpaceOptimizeShortPeriodView> pageInfo = new PageInfo<>(list);
List<QuerySpaceOptimizeShortPeriodViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QuerySpaceOptimizeShortPeriodViewOutput.class);
if (CollUtil.isNotEmpty(outputs)) {
Map<String, String> gridTypeMap = ServiceUtil.getDictMap(context, BusinessConstant.GRID_TYPE);
Map<String, String> ouMap = ServiceUtil.getOuMapByOuIds(context, outputs.stream()
.map(QuerySpaceOptimizeShortPeriodViewOutput::getOuId)
.distinct()
.collect(Collectors.toList())
);
String lineName = ServiceUtil.getPowerLineNameById(context, input.getLineId());
outputs.forEach(output -> {
output.setLineName(lineName);
output.setOuName(ouMap.get(output.getOuId()));
output.setGridTypeName(gridTypeMap.get(output.getGridTypeKey()));
output.setOptimizeStateValue(output.getOptimizeState().equals(0) ? BusinessConstant.OPTIMIZED_C : BusinessConstant.NO_OPTIMIZATION_C);
});
}
return XPageResult.success(outputs, input, pageInfo.getTotal());
}
/**
* 极短期间开开优化--详情
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult}<{@link GetSpaceOptimizePeriodOutput}>
*/
@XApiGet
@XText("极短期间开优化--详情")
public XSingleResult<GetSpaceOptimizePeriodOutput> getSpaceOptimizeShortPeriodView(XContext context, GetSpaceOptimizePeriodInput input) {
return XSingleResult.success(super.getSpaceOptimizePeriodView(context, input, BusinessConstant.FOUR, BusinessConstant.ONE));
}
/**
* 获取当日井口优化列表
* GET /space/space-optimize-short-period/get-optimize-list
* 接口ID:158457157
* 接口地址:https://app.apifox.com/project/3196988/apis/api-158457157
*
* @param context 上下文
* @param input 输入
* @return {@link XListResult}<{@link GetSpaceOptimizeShortWellheadOutput}>
*/
@XApiGet
@XText("极短期间开优化--获取当日井口优化列表")
public XListResult<GetSpaceOptimizeShortWellheadOutput> getOptimizeList(XContext context, GetSpaceOptimizeShortWellheadInput input) {
DateTime now = DateUtil.beginOfDay(DateTime.now());
String lineId = input.getLineId();
String wellheadId = input.getWellheadId();
SpaceOptimizeShortPeriodMapper mapper = context.getBean(SpaceOptimizeShortPeriodMapper.class);
SpaceOptimizeShortPeriodEnt periodEnt = mapper.selectOne(new LambdaQueryWrapper<SpaceOptimizeShortPeriodEnt>()
.eq(SpaceOptimizeShortPeriodEnt::getOptimizeDate, now)
.eq(SpaceOptimizeShortPeriodEnt::getLineId, lineId)
.last("limit 1")
);
if (ObjectUtil.isEmpty(periodEnt)) {
return XListResult.success(Collections.emptyList());
}
SpaceOptimizeShortWellheadMapper wellheadMapper = context.getBean(SpaceOptimizeShortWellheadMapper.class);
List<SpaceOptimizeShortWellheadEnt> wellheadList = wellheadMapper.selectList(new LambdaQueryWrapper<SpaceOptimizeShortWellheadEnt>()
.eq(SpaceOptimizeShortWellheadEnt::getShortPeriodId, periodEnt.getId())
.eq(CharSequenceUtil.isNotBlank(wellheadId), SpaceOptimizeShortWellheadEnt::getWellheadId, wellheadId)
);
if (CollUtil.isEmpty(wellheadList)) {
return XListResult.success(Collections.emptyList());
}
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, periodEnt.getId())
.eq(BaseModel::getIsDeleted, BusinessConstant.ONE)
.eq(SpaceOptimizeShortDurationEnt::getIsOptimize, BusinessConstant.ZERO)
.eq(CharSequenceUtil.isNotBlank(wellheadId), SpaceOptimizeShortDurationEnt::getWellheadId, wellheadId)
.orderByAsc(SpaceOptimizeShortDurationEnt::getIsOptimize, SpaceOptimizeShortDurationEnt::getOpenWellTime)
);
List<SpaceOptimizeDateDuration> durationOutputs = XCopyUtils.copyNewList(durationList, SpaceOptimizeDateDuration.class);
Map<String, List<SpaceOptimizeDateDuration>> collect = durationOutputs.stream()
.collect(Collectors.groupingBy(SpaceOptimizeDateDuration::getWellheadId));
for (GetSpaceOptimizeShortWellheadOutput wellhead : wellheadOutputs) {
wellhead.setOptimizeList(ServiceUtil.getAllDateDuration(collect.get(wellhead.getWellheadId())));
}
return XListResult.success(wellheadOutputs);
}
/**
* 先导实验井间开制度
*
* @param context 上下文
* @param input 输入
* @return {@link XPageResult}<{@link QuerySpaceOptimizeShortWellheadViewOutput}>
*/
@XApiGet
@XText("极短期间开优化--先导实验井间开制度")
public XPageResult<QuerySpaceOptimizeShortWellheadViewOutput> getDailySystemDisplay(XContext context, QuerySpaceOptimizeShortWellheadViewInput input) {
SpaceOptimizeShortDurationViewMapper mapper = context.getBean(SpaceOptimizeShortDurationViewMapper.class);
PageMethod.startPage(input.getPage(), input.getLimit());
List<SpaceOptimizeShortDurationView> list = mapper.selectDailySystemDisplay(SpaceOptimizeShortDurationView.builder()
.queryDate(DateUtil.beginOfDay(DateUtil.date()))
.ouId(input.getStationId())
.build());
PageInfo<SpaceOptimizeShortDurationView> pageInfo = new PageInfo<>(list);
return XPageResult.success(XCopyUtils.copyNewList(pageInfo.getList(), QuerySpaceOptimizeShortWellheadViewOutput.class),
input, pageInfo.getTotal());
}
/**
* 加时
*
* @param durationDTO 持续时间dto
* @param endTime 结束时间
* @param minute 分钟
*/
private void overtime(SpaceOptimizeDurationDTO durationDTO, DateTime endTime, int minute) {
//判断向前补还是向后补
if (DateUtil.compare(durationDTO.getOpenTime(), endTime) == 0) {
//向前补
durationDTO.setOpenTime(DateUtil.offsetMinute(durationDTO.getOpenTime(), -minute));
} else {
//向后补
durationDTO.setCloseTime(DateUtil.offsetMinute(durationDTO.getCloseTime(), minute));
}
}
/**
* 通过时段类型获取权重
*
* @param periodTypeKey 周期类型键
* @return int
*/
private int getWeightByPeriodTypeKey(String periodTypeKey) {
switch (periodTypeKey) {
case "LOW":
return 5;
case "PEACE":
return 3;
case "PEAK":
return 1;
case "RUSH":
default:
return 0;
}
}
} }
\ 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