增加暂态信息搜索,调整全景区域污染值逻辑

This commit is contained in:
wr
2025-12-14 14:24:15 +08:00
parent d09f1472a9
commit cebda9323e
3 changed files with 98 additions and 71 deletions

View File

@@ -1,6 +1,6 @@
package com.njcn.event.pojo.param; package com.njcn.event.pojo.param;
import com.njcn.web.pojo.annotation.DateTimeStrValid; import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.web.pojo.param.BaseParam; import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@@ -29,7 +29,13 @@ public class EventBaseParam extends BaseParam implements Serializable {
@Data @Data
public static class Info extends EventBaseParam { public static class Info extends DeviceInfoParam.BusinessParam {
@ApiModelProperty("页码")
private Integer pageNum;
@ApiModelProperty("页面尺寸")
private Integer pageSize;
@ApiModelProperty(name = "dicData", value = "字典id") @ApiModelProperty(name = "dicData", value = "字典id")
private String dicData; private String dicData;

View File

@@ -488,50 +488,58 @@ public class RmpEventDetailServiceImpl extends ServiceImpl<RmpEventDetailMapper,
@Override @Override
public Page<AdvanceEventDetailVO> getEventByLineIdsCount(EventBaseParam.Info param) { public Page<AdvanceEventDetailVO> getEventByLineIdsCount(EventBaseParam.Info param) {
Page<RmpEventDetailPO> poPage = this.page(new Page<>(PageFactory.getPageNum(param), PageFactory.getPageSize(param)), new LambdaQueryWrapper<RmpEventDetailPO>() Page<AdvanceEventDetailVO> pageResult = new Page<>();
.eq(StrUtil.isNotBlank(param.getLineId()), RmpEventDetailPO::getLineId, param.getLineId()) param.setLineOrDevice(0);
param.setDeptIndex("0d52f9f6e43ec0ee83013cd32da93f66");
param.setStatisticalType(new SimpleDTO());
//获取终端台账类信息
List<GeneralDeviceDTO> deviceInfo = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
List<String> ids = deviceInfo.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList());
Page<RmpEventDetailPO> poPage = this.page(new Page<>(param.getPageNum(), param.getPageSize()), new LambdaQueryWrapper<RmpEventDetailPO>()
.in(CollUtil.isNotEmpty(ids), RmpEventDetailPO::getLineId, ids)
.eq(StrUtil.isNotBlank(param.getDicData()), RmpEventDetailPO::getEventType, param.getDicData()) .eq(StrUtil.isNotBlank(param.getDicData()), RmpEventDetailPO::getEventType, param.getDicData())
.ge(StrUtil.isNotBlank(param.getSearchBeginTime()), RmpEventDetailPO::getStartTime, DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime()))) .ge(StrUtil.isNotBlank(param.getSearchBeginTime()), RmpEventDetailPO::getStartTime, DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())))
.le(StrUtil.isNotBlank(param.getSearchEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))) .le(StrUtil.isNotBlank(param.getSearchEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())))
); );
List<String> tempLineIds = poPage.getRecords().stream().map(RmpEventDetailPO::getLineId).distinct().collect(Collectors.toList()); List<String> tempLineIds = poPage.getRecords().stream().map(RmpEventDetailPO::getLineId).distinct().collect(Collectors.toList());
List<AreaLineInfoVO> temLine = lineFeignClient.getBaseLineAreaInfo(tempLineIds).getData(); if(CollUtil.isNotEmpty(tempLineIds)){
Map<String, AreaLineInfoVO> map = temLine.stream().collect(Collectors.toMap(AreaLineInfoVO::getLineId, Function.identity())); List<AreaLineInfoVO> temLine = lineFeignClient.getBaseLineAreaInfo(tempLineIds).getData();
List<AdvanceEventDetailVO> advanceEventDetailVOList = BeanUtil.copyToList(poPage.getRecords(), AdvanceEventDetailVO.class); Map<String, AreaLineInfoVO> map = temLine.stream().collect(Collectors.toMap(AreaLineInfoVO::getLineId, Function.identity()));
advanceEventDetailVOList = advanceEventDetailVOList.stream().peek(item -> { List<AdvanceEventDetailVO> advanceEventDetailVOList = BeanUtil.copyToList(poPage.getRecords(), AdvanceEventDetailVO.class);
if (map.containsKey(item.getLineId())) { advanceEventDetailVOList = advanceEventDetailVOList.stream().peek(item -> {
item.setGdName(map.get(item.getLineId()).getGdName()); if (map.containsKey(item.getLineId())) {
item.setSubName(map.get(item.getLineId()).getSubName()); item.setGdName(map.get(item.getLineId()).getGdName());
item.setLineName(map.get(item.getLineId()).getLineName()); item.setSubName(map.get(item.getLineId()).getSubName());
item.setLoadType(map.get(item.getLineId()).getLoadType()); item.setLineName(map.get(item.getLineId()).getLineName());
item.setObjName(map.get(item.getLineId()).getObjName()); item.setLoadType(map.get(item.getLineId()).getLoadType());
switch (item.getDealFlag()) { item.setObjName(map.get(item.getLineId()).getObjName());
case 0: switch (item.getDealFlag()) {
item.setFeatureAmplitudeFlag(EnumFlag.UNTREATED.getDescription()); case 0:
break; item.setFeatureAmplitudeFlag(EnumFlag.UNTREATED.getDescription());
case 1: break;
item.setFeatureAmplitudeFlag(EnumFlag.PROCESSED.getDescription()); case 1:
break; item.setFeatureAmplitudeFlag(EnumFlag.PROCESSED.getDescription());
case 2: break;
item.setFeatureAmplitudeFlag(EnumFlag.NODATA.getDescription()); case 2:
break; item.setFeatureAmplitudeFlag(EnumFlag.NODATA.getDescription());
case 3: break;
item.setFeatureAmplitudeFlag(EnumFlag.PROCESSFAIL.getDescription()); case 3:
break; item.setFeatureAmplitudeFlag(EnumFlag.PROCESSFAIL.getDescription());
default: break;
throw new IllegalStateException("未发现的类型: " + item.getDealFlag()); default:
} throw new IllegalStateException("未发现的类型: " + item.getDealFlag());
//录波文件 }
if (Objects.nonNull(item.getFileFlag()) && item.getFileFlag() == 1) { //录波文件
item.setBoFileFlag(EnumFlag.EXIST.description); if (Objects.nonNull(item.getFileFlag()) && item.getFileFlag() == 1) {
} else { item.setBoFileFlag(EnumFlag.EXIST.description);
item.setBoFileFlag(EnumFlag.ABSENCE.description); } else {
} item.setBoFileFlag(EnumFlag.ABSENCE.description);
}
} }
}).collect(Collectors.toList()); }).collect(Collectors.toList());
Page<AdvanceEventDetailVO> pageResult = new Page<>(); pageResult.setRecords(advanceEventDetailVOList);
pageResult.setRecords(advanceEventDetailVOList); }
pageResult.setTotal(poPage.getTotal()); pageResult.setTotal(poPage.getTotal());
pageResult.setPages(poPage.getPages()); pageResult.setPages(poPage.getPages());
pageResult.setSize(poPage.getSize()); pageResult.setSize(poPage.getSize());

View File

@@ -1199,45 +1199,58 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
deviceInfoParam.setLineRunFlag(0); deviceInfoParam.setLineRunFlag(0);
deviceInfoParam.setDeptIndex(param.getId()); deviceInfoParam.setDeptIndex(param.getId());
deviceInfoParam.setStatisticalType(new SimpleDTO()); deviceInfoParam.setStatisticalType(new SimpleDTO());
deviceInfoParam.setMonitorFlag(param.getIsUpToGrid());
List<GeneralDeviceDTO> deptData = generalDeviceInfoClient.getPracticalRunDeviceInfo(deviceInfoParam).getData(); List<GeneralDeviceDTO> deptData = generalDeviceInfoClient.getPracticalRunDeviceInfo(deviceInfoParam).getData();
List<String> lineIdList = deptData.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList()); List<String> lineIdList = deptData.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList());
if (CollUtil.isNotEmpty(lineIdList)) { if (CollUtil.isNotEmpty(lineIdList)) {
List<DeptDTO> deptList = deptFeignClient.getDepSonDetailByDeptId(param.getId()).getData();
Map<String, String> deptId = deptList.stream().filter(x ->!x.getId().equals("46364ea96a55095ebc250be698d5262c") &&
!x.getId().equals("a3069759b0b6072c99cf9a7af6c162e9")).collect(Collectors.toMap(DeptDTO::getArea, DeptDTO::getId));
List<RMpPollutionDPO> pollutionList = rMpPollutionDPOMapper.selectSumList(lineIdList, param.getIds(), param.getStartTime(), param.getEndTime()); List<RMpPollutionDPO> pollutionList = rMpPollutionDPOMapper.selectSumList(lineIdList, param.getIds(), param.getStartTime(), param.getEndTime());
Map<String, Double> pollutionMap = pollutionList.stream().collect(Collectors.toMap(RMpPollutionDPO::getLineId, RMpPollutionDPO::getValue)); Map<String, Double> pollutionMap = pollutionList.stream().collect(Collectors.toMap(RMpPollutionDPO::getLineId, RMpPollutionDPO::getValue));
List<PollutionLineInfoDTO> lineDetailList = commLineClient.getPollutionLineInfo(lineIdList).getData(); List<PollutionLineInfoDTO> lineDetailList = commLineClient.getPollutionLineInfo(lineIdList).getData();
Map<String, List<PollutionLineInfoDTO>> lineDetailMap = lineDetailList.stream().collect(Collectors.groupingBy(PollutionLineInfoDTO::getActualArea)); List<String> ids = deptData.stream()
//获取部门 .filter(x -> x.getIndex().equals("46364ea96a55095ebc250be698d5262c") ||
List<DeptDTO> deptList = deptFeignClient.getDepSonDetailByDeptId(param.getId()).getData(); x.getIndex().equals("a3069759b0b6072c99cf9a7af6c162e9"))
deptList.forEach(item -> { .flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList());
if (lineDetailMap.containsKey(item.getArea())) { //获取到了部门风光储和超高压的其他部门信息
List<PowerFlagPollution> linePollutionList = new ArrayList<>(); Map<String, List<String>> fgIds = lineDetailList
AreaPollution pollution = new AreaPollution(); .stream().filter(x -> ids.contains(x.getLineId()))
pollution.setDeptName(item.getName()); .collect(Collectors.groupingBy(x -> deptId.get(x.getActualArea()), Collectors.mapping(PollutionLineInfoDTO::getLineId, Collectors.toList())));
pollution.setDeptId(item.getId()); for (GeneralDeviceDTO dto : deptData) {
List<PollutionLineInfoDTO> lineDetails = lineDetailMap.get(item.getArea()).stream().collect(Collectors.toList()); if (dto.getIndex().equals("46364ea96a55095ebc250be698d5262c") ||
PowerFlagPollution pollution1; dto.getIndex().equals("a3069759b0b6072c99cf9a7af6c162e9")) {
for (PollutionLineInfoDTO lineDetail : lineDetails) { break;
pollution1 = new PowerFlagPollution();
pollution1.setSubName(lineDetail.getSubStationName());
pollution1.setLineName(lineDetail.getLineName());
pollution1.setDevName(lineDetail.getDevName());
pollution1.setManufacturer(lineDetail.getManufacturer());
pollution1.setDevType(lineDetail.getDevType());
pollution1.setLoginTime(lineDetail.getLoginTime());
pollution1.setInterval(lineDetail.getTimeInterval());
pollution1.setPowerFlag(lineDetail.getPowerFlag());
pollution1.setLoadType(lineDetail.getLoadType());
pollution1.setObjName(lineDetail.getObjName());
pollution1.setVHarmonicValue(pollutionMap.containsKey(lineDetail.getLineId())?NumberUtil.round(pollutionMap.get(lineDetail.getLineId()),2).doubleValue():0.0);
linePollutionList.add(pollution1);
}
pollution.setPowerFlagPollutionList(linePollutionList.stream().sorted(Comparator.comparing(PowerFlagPollution::getVHarmonicValue).reversed()).collect(Collectors.toList()));
pollution.setScore(NumberUtil.round(linePollutionList.stream().mapToDouble(PowerFlagPollution::getVHarmonicValue).sum(),2).doubleValue());
info.add(pollution);
} }
}); if (fgIds.containsKey(dto.getIndex())) {
dto.getLineIndexes().addAll(fgIds.get(dto.getIndex()));
}
List<PowerFlagPollution> linePollutionList = new ArrayList<>();
AreaPollution pollution = new AreaPollution();
pollution.setDeptName(dto.getName());
pollution.setDeptId(dto.getIndex());
List<PollutionLineInfoDTO> lineDetails = lineDetailList.stream().filter(x -> dto.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList());
PowerFlagPollution pollution1;
for (PollutionLineInfoDTO lineDetail : lineDetails) {
pollution1 = new PowerFlagPollution();
pollution1.setSubName(lineDetail.getSubStationName());
pollution1.setLineName(lineDetail.getLineName());
pollution1.setDevName(lineDetail.getDevName());
pollution1.setManufacturer(lineDetail.getManufacturer());
pollution1.setDevType(lineDetail.getDevType());
pollution1.setLoginTime(lineDetail.getLoginTime());
pollution1.setInterval(lineDetail.getTimeInterval());
pollution1.setPowerFlag(lineDetail.getPowerFlag());
pollution1.setLoadType(lineDetail.getLoadType());
pollution1.setObjName(lineDetail.getObjName());
pollution1.setVHarmonicValue(pollutionMap.containsKey(lineDetail.getLineId()) ? NumberUtil.round(pollutionMap.get(lineDetail.getLineId()), 2).doubleValue() : 0.0);
linePollutionList.add(pollution1);
}
pollution.setPowerFlagPollutionList(linePollutionList.stream().sorted(Comparator.comparing(PowerFlagPollution::getVHarmonicValue).reversed()).collect(Collectors.toList()));
pollution.setScore(NumberUtil.round(linePollutionList.stream().mapToDouble(PowerFlagPollution::getVHarmonicValue).sum(), 2).doubleValue());
info.add(pollution);
}
} }
return info; return info;
} }