diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineALLInfoDTO.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineALLInfoDTO.java index 03b0c64f5..f09e09c87 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineALLInfoDTO.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineALLInfoDTO.java @@ -41,6 +41,11 @@ public class LineALLInfoDTO { private Integer num; @ApiModelProperty(name = "objName",value = "监测点对象名称") private String objName; + @ApiModelProperty(name = "objName",value = "电网侧监测点对象名称Id") + private String objId; + @ApiModelProperty(name = "objName",value = "电网侧监测点对象名称") + private String objName2; + @ApiModelProperty(name = "loadType",value = "监测对象类型") private String loadType; @ApiModelProperty(name = "voltageLevel",value = "电压等级") diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RStatIntegrityDServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RStatIntegrityDServiceImpl.java index 7eef6aff8..ef4231e0a 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RStatIntegrityDServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/RStatIntegrityDServiceImpl.java @@ -2,12 +2,15 @@ package com.njcn.device.pq.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.device.biz.commApi.CommLineClient; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.common.service.GeneralDeviceService; import com.njcn.device.line.mapper.LineDetailMapper; import com.njcn.device.line.mapper.LineMapper; @@ -66,6 +69,7 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl deviceInfo = deviceService.getDeviceInfo(param, null, Collections.singletonList(1)); if (CollUtil.isNotEmpty(deviceInfo)) { @@ -154,14 +161,55 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(lineIds, param.getSearchBeginTime(), param.getSearchEndTime()); - //获取所有监测点信息信息 - List LineInfoByIds = lineService.getLineDetailByIds(lineIds); + List filterLineList = new ArrayList<>(); - rate.setBelowNum(CollUtil.isNotEmpty(lineIntegrityRateInfo) ? calculateIntegrityRate(lineIntegrityRateInfo, 90, lineIds.size()) : lineIds.size()); - rate.setTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, lineIds).doubleValue()>100.0?BigDecimal.valueOf(100.0) : calculateIntegrityRate(lineIntegrityRateInfo, lineIds)); + if(CollectionUtil.isNotEmpty(lineIds)){ + //根据searchvalue过滤 + List data = commLineClient.getLineAllDetailList(lineIds).getData(); + filterLineList= data.stream() + .filter(dto -> { + LineALLInfoDTO.LineLineDTO lineDTO = dto.getLineLineDTO(); + String linename = lineDTO != null ? lineDTO.getLinename() : null; + String objName2 = lineDTO != null ? lineDTO.getObjName2() : null; + + LineALLInfoDTO.LineSubStationDTO subStationDTO = dto.getLineSubStationDTO(); + String subStationName = subStationDTO != null ? subStationDTO.getSubStationName() : null; + + // 大小写敏感的模糊匹配(相当于 MySQL 的 LIKE '%keyword%') + return (linename != null && linename.contains(tempSearchValue)) + || (objName2 != null && objName2.contains(tempSearchValue)) + || (subStationName != null && subStationName.contains(tempSearchValue)); + }).map(dto -> dto.getLineLineDTO() != null ? dto.getLineLineDTO().getLineId() : null) + + .collect(Collectors.toList()); + } + rate.setTotalNum(filterLineList.size()); + List finalFilterLineList = filterLineList; + //根据过滤后监测点过滤 + deviceInfo= deviceInfo.stream() + .filter(dto -> { + List original = dto.getLineIndexes(); + if (original == null || original.isEmpty()) { + return false; + } + // 计算交集 + List intersection = original.stream() + .filter(finalFilterLineList::contains) + .collect(Collectors.toList()); + if (intersection.isEmpty()) { + return false; + } + // 更新当前 DTO 的 lineIndexes 为交集 + dto.setLineIndexes(intersection); + return true; + }) + .collect(Collectors.toList()); //获取所有监测点的数据完整性 + List lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(filterLineList, param.getSearchBeginTime(), param.getSearchEndTime()); + //获取所有监测点信息信息 + List LineInfoByIds = lineService.getLineDetailByIds(filterLineList); + + rate.setBelowNum(CollUtil.isNotEmpty(lineIntegrityRateInfo) ? calculateIntegrityRate(lineIntegrityRateInfo, 90, filterLineList.size()) : lineIds.size()); + rate.setTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, filterLineList).doubleValue()>100.0?BigDecimal.valueOf(100.0) : calculateIntegrityRate(lineIntegrityRateInfo, lineIds)); List citDetailList = new ArrayList<>(); DeviceOnlineRate.CitDetail citDetail; DeviceOnlineRate.LineDetail detail; @@ -174,12 +222,13 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl onlineRateByDevMap = citDevOnRate.stream() .collect(Collectors.toMap(RStatIntegrityVO::getLineIndex, RStatIntegrityVO::getIntegrityRate)); citDetail = new DeviceOnlineRate.CitDetail(); + List lineDetail = LineInfoByIds.stream().filter(x -> dto.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList()); + citDetail.setCitName(dto.getName()); citDetail.setCitTotalNum(dto.getLineIndexes().size()); citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate) ? calculateIntegrityRate(citDevOnRate, 90, dto.getLineIndexes().size()) : dto.getLineIndexes().size()); citDetail.setCitTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, dto.getLineIndexes()).doubleValue()>100.0?BigDecimal.valueOf(100.0):calculateIntegrityRate(lineIntegrityRateInfo, dto.getLineIndexes())); List detailList = new ArrayList<>(); - List lineDetail = LineInfoByIds.stream().filter(x -> dto.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList()); for (LineDetailVO.Detail line : lineDetail) { detail = new DeviceOnlineRate.LineDetail(); detail.setCit(line.getDeptName()); diff --git a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/service/impl/LineServiceImpl.java b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/service/impl/LineServiceImpl.java index d0bbd0084..707a700bb 100644 --- a/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/service/impl/LineServiceImpl.java +++ b/pqs-device/pq-device/pq-device-com/src/main/java/com/njcn/device/line/service/impl/LineServiceImpl.java @@ -45,6 +45,7 @@ import com.njcn.influx.imapper.PqsCommunicateMapper; import com.njcn.influx.pojo.po.PqsCommunicate; import com.njcn.influx.query.InfluxQueryWrapper; import com.njcn.supervision.pojo.vo.user.NewUserReportVO; +import com.njcn.supervision.pojo.vo.user.UserReportVO; import com.njcn.system.api.AreaFeignClient; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataTypeEnum; @@ -616,6 +617,11 @@ public class LineServiceImpl extends ServiceImpl implements Li lineLineDTO.setLinename(lineName); lineLineDTO.setNum(lineDetail.getNum()); lineLineDTO.setObjName(lineDetail.getObjName()); + lineLineDTO.setObjId(lineDetail.getObjId()); + if(StringUtils.isNotEmpty(lineDetail.getObjId())){ + UserReportVO userReportVO = userLedgerService.getUserReportById(lineDetail.getObjId()); + lineLineDTO.setObjName2(userReportVO.getProjectName()); + } lineLineDTO.setLoadType(dicDataFeignClient.getDicDataById(lineDetail.getLoadType()).getData().getName()); //电压使用母线电压 lineLineDTO.setVoltageLevel(dicDataFeignClient.getDicDataById(voltage.getScale()).getData().getName()); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/AnalyzeServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/AnalyzeServiceImpl.java index db90a344a..f03d0dcf2 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/AnalyzeServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/AnalyzeServiceImpl.java @@ -11,6 +11,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; import com.njcn.common.config.GeneralInfo; +import com.njcn.device.biz.commApi.CommLineClient; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.api.UserLedgerFeignClient; @@ -48,6 +50,7 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import java.io.File; import java.math.BigDecimal; @@ -83,7 +86,7 @@ public class AnalyzeServiceImpl implements IAnalyzeService { private final EventDetailFeignClient eventDetailFeignClient; private final DicDataFeignClient dicDataFeignClient; private final UserLedgerFeignClient userLedgerFeignClient; - + private final CommLineClient commLineClient; @Override public Page getAreaData(OverAreaVO param) { Page page = new Page<>(); @@ -301,8 +304,31 @@ public class AnalyzeServiceImpl implements IAnalyzeService { lineList.addAll(item.getLineIndexes()); }); } - if (CollectionUtil.isNotEmpty(lineList)) { - page = targetMapper.getSumLimitTargetPage(page, lineList, DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())), + List filterLineList = new ArrayList<>(); + + if(CollectionUtil.isNotEmpty(lineList)){ + //根据searchvalue过滤 + String searchvalue=param.getSearchValue(); + List data = commLineClient.getLineAllDetailList(lineList).getData(); + filterLineList= data.stream() + .filter(dto -> { + LineALLInfoDTO.LineLineDTO lineDTO = dto.getLineLineDTO(); + String linename = lineDTO != null ? lineDTO.getLinename() : null; + String objName2 = lineDTO != null ? lineDTO.getObjName2() : null; + + LineALLInfoDTO.LineSubStationDTO subStationDTO = dto.getLineSubStationDTO(); + String subStationName = subStationDTO != null ? subStationDTO.getSubStationName() : null; + + // 大小写敏感的模糊匹配(相当于 MySQL 的 LIKE '%keyword%') + return (linename != null && linename.contains(searchvalue)) + || (objName2 != null && objName2.contains(searchvalue)) + || (subStationName != null && subStationName.contains(searchvalue)); + }).map(dto -> dto.getLineLineDTO() != null ? dto.getLineLineDTO().getLineId() : null) + + .collect(Collectors.toList()); + } + if (CollectionUtil.isNotEmpty(filterLineList)) { + page = targetMapper.getSumLimitTargetPage(page, filterLineList, DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())), DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))); List pageRecords = page.getRecords(); if (CollectionUtils.isEmpty(pageRecords)) {