辽宁稳态指标超标明细等页面丰富查询条件;
This commit is contained in:
@@ -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 = "电压等级")
|
||||
|
||||
@@ -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<RStatIntegrityDMa
|
||||
private final GeneralDeviceService deviceService;
|
||||
private final LineService lineService;
|
||||
private final UserLedgerService userLedgerService;
|
||||
private final CommLineClient commLineClient;
|
||||
|
||||
@Override
|
||||
public Float getTotalIntegrityByLineIds(LineBaseQueryParam param) {
|
||||
@@ -146,6 +150,9 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
||||
@Override
|
||||
public DeviceOnlineRate getData(DeviceInfoParam.BusinessParam param) {
|
||||
DeviceOnlineRate rate = new DeviceOnlineRate();
|
||||
//BusinessParam的searchvalue只匹配监测点名称现在要匹配电站,监测点,监测点对象名称,所以穿空再添加过滤逻辑
|
||||
String tempSearchValue=param.getSearchValue();
|
||||
param.setSearchValue("");
|
||||
//获取终端台账类信息
|
||||
List<GeneralDeviceDTO> deviceInfo = deviceService.getDeviceInfo(param, null, Collections.singletonList(1));
|
||||
if (CollUtil.isNotEmpty(deviceInfo)) {
|
||||
@@ -154,14 +161,55 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
||||
.stream()
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
rate.setTotalNum(lineIds.size());
|
||||
//获取所有监测点的数据完整性
|
||||
List<RStatIntegrityVO> lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(lineIds, param.getSearchBeginTime(), param.getSearchEndTime());
|
||||
//获取所有监测点信息信息
|
||||
List<LineDetailVO.Detail> LineInfoByIds = lineService.getLineDetailByIds(lineIds);
|
||||
List<String> 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<LineALLInfoDTO> 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<String> finalFilterLineList = filterLineList;
|
||||
//根据过滤后监测点过滤
|
||||
deviceInfo= deviceInfo.stream()
|
||||
.filter(dto -> {
|
||||
List<String> original = dto.getLineIndexes();
|
||||
if (original == null || original.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
// 计算交集
|
||||
List<String> 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<RStatIntegrityVO> lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(filterLineList, param.getSearchBeginTime(), param.getSearchEndTime());
|
||||
//获取所有监测点信息信息
|
||||
List<LineDetailVO.Detail> 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<DeviceOnlineRate.CitDetail> citDetailList = new ArrayList<>();
|
||||
DeviceOnlineRate.CitDetail citDetail;
|
||||
DeviceOnlineRate.LineDetail detail;
|
||||
@@ -174,12 +222,13 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
||||
Map<String, BigDecimal> onlineRateByDevMap = citDevOnRate.stream()
|
||||
.collect(Collectors.toMap(RStatIntegrityVO::getLineIndex, RStatIntegrityVO::getIntegrityRate));
|
||||
citDetail = new DeviceOnlineRate.CitDetail();
|
||||
List<LineDetailVO.Detail> 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<DeviceOnlineRate.LineDetail> detailList = new ArrayList<>();
|
||||
List<LineDetailVO.Detail> 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());
|
||||
|
||||
@@ -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<LineMapper, Line> 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());
|
||||
|
||||
@@ -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<OverAreaLimitVO> getAreaData(OverAreaVO param) {
|
||||
Page<OverAreaLimitVO> 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<String> filterLineList = new ArrayList<>();
|
||||
|
||||
if(CollectionUtil.isNotEmpty(lineList)){
|
||||
//根据searchvalue过滤
|
||||
String searchvalue=param.getSearchValue();
|
||||
List<LineALLInfoDTO> 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<MonitorOverLimitVO> pageRecords = page.getRecords();
|
||||
if (CollectionUtils.isEmpty(pageRecords)) {
|
||||
|
||||
Reference in New Issue
Block a user