From 82efce189a442bba5a679a6271245c001f851083 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Wed, 7 Jan 2026 08:50:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B2=E9=9D=963=E5=B1=82=E6=A0=91=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/njcn/common/pojo/dto/SimpleDTO.java | 6 + .../service/impl/TerminalTreeServiceImpl.java | 339 ++++++++++-------- 2 files changed, 198 insertions(+), 147 deletions(-) diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/SimpleDTO.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/SimpleDTO.java index 44962e786..8b134dc94 100644 --- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/SimpleDTO.java +++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/dto/SimpleDTO.java @@ -25,6 +25,12 @@ public class SimpleDTO implements Serializable { @ApiModelProperty(name = "value", value = "数值") private String value; + /** + * 针对云南曲靖特殊处理的五层树标识符 + * 特殊在不显示供电公司,显示(变电站、线路)这两个是部门的名称+母线_监测点的名称 + */ + private String deptName; + private Integer sort; private Integer algoDescribe; diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java index e46776612..ae7a3c7ae 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java @@ -29,6 +29,8 @@ import com.njcn.supervision.pojo.vo.user.UserLedgerVO; import com.njcn.system.api.AreaFeignClient; import com.njcn.system.pojo.enums.StatisticsEnum; import com.njcn.system.pojo.po.Area; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; import com.njcn.web.utils.RequestUtil; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @@ -52,6 +54,8 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { private final LineMapper lineMapper; + private final DeptFeignClient deptFeignClient; + private final LineDetailMapper lineDetailMapper; private final AreaFeignClient areaFeignClient; @@ -84,40 +88,40 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { //处理存在用户的台账 List newLineList = lineMapper.getLineAndLineDetail(); //用户侧测点 - List userLineList = newLineList.stream().filter(it->StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList()); + List userLineList = newLineList.stream().filter(it -> StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList()); //用户侧装置 - List devIds = userLineList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList()); - List devUserList = devList.stream().filter(it->devIds.contains(it.getId())).collect(Collectors.toList()); + List devIds = userLineList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList()); + List devUserList = devList.stream().filter(it -> devIds.contains(it.getId())).collect(Collectors.toList()); //用户侧线路 - List subvUserList = subvList.stream().filter(it->devIds.contains(it.getPid())).collect(Collectors.toList()); + List subvUserList = subvList.stream().filter(it -> devIds.contains(it.getPid())).collect(Collectors.toList()); List subvUserIds = subvUserList.stream().map(TerminalTree::getId).distinct().collect(Collectors.toList()); //电网侧测点 - List otherLineList = newLineList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList()); - List devOtherIds = otherLineList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList()); + List otherLineList = newLineList.stream().filter(it -> StrUtil.isBlank(it.getObjId())).collect(Collectors.toList()); + List devOtherIds = otherLineList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList()); //电网侧装置 - List devOtherList = devList.stream().filter(it->devOtherIds.contains(it.getId())).collect(Collectors.toList()); - List noBindDevList = devList.stream().filter(it->!devOtherIds.contains(it.getId()) && !devIds.contains(it.getId())).collect(Collectors.toList()); + List devOtherList = devList.stream().filter(it -> devOtherIds.contains(it.getId())).collect(Collectors.toList()); + List noBindDevList = devList.stream().filter(it -> !devOtherIds.contains(it.getId()) && !devIds.contains(it.getId())).collect(Collectors.toList()); devOtherList.addAll(noBindDevList); //电网侧线路 - List subvOtherList = subvList.stream().filter(it->devOtherIds.contains(it.getPid())).collect(Collectors.toList()); + List subvOtherList = subvList.stream().filter(it -> devOtherIds.contains(it.getPid())).collect(Collectors.toList()); List otherBusBarIds = subvOtherList.stream().map(TerminalTree::getId).distinct().collect(Collectors.toList()); - List noBindList = subvList.stream().filter(it->!subvUserIds.contains(it.getId()) && !otherBusBarIds.contains(it.getId())).collect(Collectors.toList()); + List noBindList = subvList.stream().filter(it -> !subvUserIds.contains(it.getId()) && !otherBusBarIds.contains(it.getId())).collect(Collectors.toList()); subvOtherList.addAll(noBindList); UserReportParam userReportParam = new UserReportParam(); List userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData(); - userReportPOList = userReportPOList.stream().filter(it->StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList()); - Map> userMap = userReportPOList.stream().collect(Collectors.groupingBy(UserLedgerVO::getStationId)); + userReportPOList = userReportPOList.stream().filter(it -> StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList()); + Map> userMap = userReportPOList.stream().collect(Collectors.groupingBy(UserLedgerVO::getStationId)); subvOtherList.forEach(subv -> subv.setChildren(getChildren(subv, otherLineList))); devOtherList.forEach(dev -> dev.setChildren(getChildren(dev, subvOtherList))); - subList.forEach(sub -> sub.setChildren(specialDealSubChildren(sub, userLineList,devOtherList,subvUserList,devUserList,userMap.get(sub.getId())))); + subList.forEach(sub -> sub.setChildren(specialDealSubChildren(sub, userLineList, devOtherList, subvUserList, devUserList, userMap.get(sub.getId())))); //subList.forEach(sub -> sub.setChildren(getChildren(sub, devList))); gdList.forEach(gd -> gd.setChildren(getChildren(gd, subList))); provinceList.forEach(province -> province.setChildren(getChildren(province, gdList))); @@ -137,15 +141,15 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { } - private List specialDealSubChildren(TerminalTree sub,List lineUserList,List devOtherList,List busBarList,List devAllList,List userReportPOList){ + private List specialDealSubChildren(TerminalTree sub, List lineUserList, List devOtherList, List busBarList, List devAllList, List userReportPOList) { List list = new ArrayList<>(); //电网侧 - List devTree = devOtherList.stream().filter(it->it.getPid().equals(sub.getId())).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(devTree)){ + List devTree = devOtherList.stream().filter(it -> it.getPid().equals(sub.getId())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(devTree)) { list.addAll(devTree); } //非电网侧 - if(CollUtil.isNotEmpty(userReportPOList)) { + if (CollUtil.isNotEmpty(userReportPOList)) { Map userLedgerVOMap = userReportPOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity())); List userLineList = lineUserList.stream().filter(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()].equals(sub.getId())).collect(Collectors.toList()); @@ -190,7 +194,7 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { }); UserLedgerVO userReportPO = userLedgerVOMap.get(objId); - if(Objects.isNull(userReportPO)){ + if (Objects.isNull(userReportPO)) { System.out.println(map); } TerminalTree terminalTree = new TerminalTree(); @@ -209,8 +213,6 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { } - - /** * 5层树排除设备 母线监测点合并 * @@ -226,78 +228,122 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) { // 创建集合 List taiZhang = new ArrayList<>(); - // 获取用户 - UserReportParam userReportParam = new UserReportParam(); - List userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData(); - userReportPOList = userReportPOList.stream().filter(it -> StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList()); - Map userMap = userReportPOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity())); - - // 遍历集合 - for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { - // 创建实体类 - TerminalTree terminalTree = new TerminalTree(); - // 判断监测点索引集合状态 - if (CollectionUtils.isEmpty(generalDeviceDTO.getLineIndexes())) { - continue; - } - // 通过供电公司索引查询省会 - List proList = treeMapper.getProvinceList(generalDeviceDTO.getGdIndexes()); - // 通过供电公司索引查询供电公司信息 - List gdList = treeMapper.getGdList(generalDeviceDTO.getGdIndexes()); - // 通过供电站索引查询供电站信息 - List subList = treeMapper.getSubList(generalDeviceDTO.getSubIndexes()); - // 通过监测点索引查询监测点信息 - List lineList = treeMapper.getLineList(generalDeviceDTO.getLineIndexes()); - - List userLineList = lineList.stream().filter(it->StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList()); - List otherLineList = lineList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList()); - - Map> temMap = new HashMap<>(); - if(CollUtil.isNotEmpty(userLineList)) { - Map> objMap = userLineList.stream().collect(Collectors.groupingBy(TerminalTree::getObjId)); - List temList = new ArrayList<>(); - objMap.forEach((objId, monitorList) -> { - UserLedgerVO userLedgerVO = userMap.get(objId); - TerminalTree tree = new TerminalTree(); - tree.setLevel(LineBaseEnum.USER_LEVEL.getCode()); - tree.setPid(userLedgerVO.getStationId()); - tree.setId(userLedgerVO.getId()); - tree.setChildren(monitorList); - int devSize = (int) monitorList.stream().map(x -> { - // 获取父id字符串,通过 逗号 分割 成一个数组 - String[] pid = x.getPids().split(StrUtil.COMMA); - return pid[LineBaseEnum.DEVICE_LEVEL.getCode()]; - }).distinct().count(); - tree.setName(userLedgerVO.getProjectName()); - //特殊处理,用户层级下面的装置数量临时存到pids字段。 - tree.setPids(String.valueOf(devSize)); - temList.add(tree); - }); - temMap = temList.stream().collect(Collectors.groupingBy(TerminalTree::getPid)); + if (StrUtil.isNotBlank(deviceInfoParam.getStatisticalType().getDeptName())) { + // 遍历集合 + for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { + // 创建实体类 + TerminalTree terminalTree = new TerminalTree(); + terminalTree.setName(generalDeviceDTO.getName()); + terminalTree.setId(generalDeviceDTO.getIndex()); + terminalTree.setLevel(0); + // 处理子部门 + deviceInfoParam.setDeptIndex(generalDeviceDTO.getIndex()); + List generalDeviceDTOsubList = generalDeviceService.getDeviceInfo(deviceInfoParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList())); + if (CollectionUtil.isNotEmpty(generalDeviceDTOsubList)) { + List terminalTreeList = new ArrayList<>(); + for (int i = 0; i < generalDeviceDTOsubList.size(); i++) { + GeneralDeviceDTO deviceDTO = generalDeviceDTOsubList.get(i); + TerminalTree terminalSubTree = new TerminalTree(); + terminalSubTree.setName(deviceDTO.getName()); + terminalSubTree.setId(deviceDTO.getIndex()); + terminalSubTree.setPid(generalDeviceDTO.getIndex()); + terminalSubTree.setLevel(2); + terminalSubTree.setSort(i); + if(CollectionUtil.isNotEmpty(deviceDTO.getLineIndexes())){ + // 处理该部门下的检测点显示 + // 通过监测点索引查询监测点信息 + List lineList = treeMapper.getLineList(deviceDTO.getLineIndexes()); + terminalSubTree.setChildren(lineList); + terminalTreeList.add(terminalSubTree); + } + } + terminalTree.setChildren(terminalTreeList); + } else { + if(CollectionUtil.isNotEmpty(generalDeviceDTO.getLineIndexes())){ + // 处理该部门下的检测点显示 + // 通过监测点索引查询监测点信息 + List lineList = treeMapper.getLineList(generalDeviceDTO.getLineIndexes()); + terminalTree.setChildren(lineList); + } + } + taiZhang.add(terminalTree); } + } else { + // 获取用户 + UserReportParam userReportParam = new UserReportParam(); + List userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData(); + userReportPOList = userReportPOList.stream().filter(it -> StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList()); + Map userMap = userReportPOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity())); + + // 遍历集合 + for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { + // 创建实体类 + TerminalTree terminalTree = new TerminalTree(); + + // 判断监测点索引集合状态 + if (CollectionUtils.isEmpty(generalDeviceDTO.getLineIndexes())) { + continue; + } + + // 通过供电公司索引查询省会 + List proList = treeMapper.getProvinceList(generalDeviceDTO.getGdIndexes()); + // 通过供电公司索引查询供电公司信息 + List gdList = treeMapper.getGdList(generalDeviceDTO.getGdIndexes()); + // 通过供电站索引查询供电站信息 + List subList = treeMapper.getSubList(generalDeviceDTO.getSubIndexes()); + // 通过监测点索引查询监测点信息 + List lineList = treeMapper.getLineList(generalDeviceDTO.getLineIndexes()); + + List userLineList = lineList.stream().filter(it -> StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList()); + List otherLineList = lineList.stream().filter(it -> StrUtil.isBlank(it.getObjId())).collect(Collectors.toList()); + + Map> temMap = new HashMap<>(); + if (CollUtil.isNotEmpty(userLineList)) { + Map> objMap = userLineList.stream().collect(Collectors.groupingBy(TerminalTree::getObjId)); + List temList = new ArrayList<>(); + objMap.forEach((objId, monitorList) -> { + UserLedgerVO userLedgerVO = userMap.get(objId); + TerminalTree tree = new TerminalTree(); + tree.setLevel(LineBaseEnum.USER_LEVEL.getCode()); + tree.setPid(userLedgerVO.getStationId()); + tree.setId(userLedgerVO.getId()); + tree.setChildren(monitorList); + int devSize = (int) monitorList.stream().map(x -> { + // 获取父id字符串,通过 逗号 分割 成一个数组 + String[] pid = x.getPids().split(StrUtil.COMMA); + return pid[LineBaseEnum.DEVICE_LEVEL.getCode()]; + }).distinct().count(); + tree.setName(userLedgerVO.getProjectName()); + //特殊处理,用户层级下面的装置数量临时存到pids字段。 + tree.setPids(String.valueOf(devSize)); + temList.add(tree); + }); + temMap = temList.stream().collect(Collectors.groupingBy(TerminalTree::getPid)); + } - //处理变电站 - dealChildrenData(subList, otherLineList, temMap,true); + //处理变电站 + dealChildrenData(subList, otherLineList, temMap, true); - //监测点前面加序号,后面不需要删除下面两行就行 - //Integer[] arr = {1}; - //subList.forEach(item->item.getChildren().forEach(it->it.setName((arr[0]++ +"_"+it.getName())))); - //处理供电公司 - dealChildrenData(gdList, subList, null,false); + //监测点前面加序号,后面不需要删除下面两行就行 + //Integer[] arr = {1}; + //subList.forEach(item->item.getChildren().forEach(it->it.setName((arr[0]++ +"_"+it.getName())))); + //处理供电公司 + dealChildrenData(gdList, subList, null, false); - if (deviceInfoParam.getStatisticalType().getCode().equalsIgnoreCase(StatisticsEnum.POWER_NETWORK.getCode())) { - terminalTree.setChildren(gdList); - } else { - //还需要额外处理省会 - dealChildrenData(proList, gdList, null,false); - terminalTree.setChildren(proList); + if (deviceInfoParam.getStatisticalType().getCode().equalsIgnoreCase(StatisticsEnum.POWER_NETWORK.getCode())) { + terminalTree.setChildren(gdList); + } else { + //还需要额外处理省会 + dealChildrenData(proList, gdList, null, false); + terminalTree.setChildren(proList); + } + terminalTree.setId(generalDeviceDTO.getIndex()); + terminalTree.setName(generalDeviceDTO.getName()); + terminalTree.setLevel(0); + taiZhang.add(terminalTree); } - terminalTree.setId(generalDeviceDTO.getIndex()); - terminalTree.setName(generalDeviceDTO.getName()); - terminalTree.setLevel(0); - taiZhang.add(terminalTree); } return taiZhang; } else { @@ -312,7 +358,7 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { * @param childrenData * @param isLine */ - private void dealChildrenData(List targetData, List childrenData,Map> userLineMap, boolean isLine) { + private void dealChildrenData(List targetData, List childrenData, Map> userLineMap, boolean isLine) { // 创建一个map集合,用于封装对象 Map> groupLine; if (isLine) { @@ -328,7 +374,7 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { //变电站 targetData.forEach(terminalTree -> { List terminalTrees = new ArrayList<>(); - if(groupLine.containsKey(terminalTree.getId())) { + if (groupLine.containsKey(terminalTree.getId())) { terminalTrees.addAll(groupLine.get(terminalTree.getId()).stream().sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList())); } if (isLine) { @@ -340,13 +386,13 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { }).distinct().count(); int devSize = 0; - if(userLineMap.containsKey(terminalTree.getId())){ + if (userLineMap.containsKey(terminalTree.getId())) { List userList = userLineMap.get(terminalTree.getId()); - devSize= (int) userList.stream().mapToDouble(it->Integer.parseInt(it.getPids())).sum(); + devSize = (int) userList.stream().mapToDouble(it -> Integer.parseInt(it.getPids())).sum(); terminalTrees.addAll(userList); } - int sumDev = size+devSize; - terminalTree.setName(terminalTree.getName() + "(" +sumDev+ "台装置)"); + int sumDev = size + devSize; + terminalTree.setName(terminalTree.getName() + "(" + sumDev + "台装置)"); terminalTree.setChildren(terminalTrees); } else { terminalTree.setChildren(terminalTrees); @@ -392,7 +438,7 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { DeviceInfoParam deviceInfoParam = new DeviceInfoParam(); deviceInfoParam.setDeptIndex(RequestUtil.getDeptIndex()); deviceInfoParam.setServerName(ServerEnum.HARMONIC.getName()); - List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Stream.of(0,1).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList())); + List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Stream.of(0, 1).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList())); for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { if (CollectionUtil.isEmpty(generalDeviceDTO.getLineIndexes())) { @@ -472,89 +518,89 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { List list = lineDetailMapper.selectList(new LambdaQueryWrapper().in(CollUtil.isNotEmpty(lineIds), LineDetail::getId, lineIds)); Map powerFlagMap = list.stream().collect(Collectors.toMap(LineDetail::getId, Function.identity())); for (TerminalTree x : lineList) { - if(powerFlagMap.containsKey(x.getId())){ + if (powerFlagMap.containsKey(x.getId())) { x.setPowerFlag(powerFlagMap.get(x.getId()).getPowerFlag()); x.setPowerSubstationName(powerFlagMap.get(x.getId()).getPowerSubstationName()); x.setObjName(powerFlagMap.get(x.getId()).getObjName()); - }else{ + } else { x.setPowerFlag(LineBaseEnum.POWER_FLAG.getCode()); } } - Map> lineObjNameMap = lineList.stream().filter(x -> StrUtil.isNotBlank(x.getPowerSubstationName())).collect(Collectors.groupingBy(TerminalTree::getPowerSubstationName)); + Map> lineObjNameMap = lineList.stream().filter(x -> StrUtil.isNotBlank(x.getPowerSubstationName())).collect(Collectors.groupingBy(TerminalTree::getPowerSubstationName)); //组织变电站信息 - List subInfoList = new ArrayList<>(); + List subInfoList = new ArrayList<>(); - lineObjNameMap.forEach((key, value)->{ + lineObjNameMap.forEach((key, value) -> { List terminalTrees = Collections.unmodifiableList(collect1); //获取变电信息 - List collect = subList.stream().filter(x -> x.getName().equals(key.replace("±",""))).collect(Collectors.toList()); + List collect = subList.stream().filter(x -> x.getName().equals(key.replace("±", ""))).collect(Collectors.toList()); //电网侧监测点 List powerFlag = value.stream().filter(x -> x.getPowerFlag().equals(LineBaseEnum.POWER_FLAG.getCode())).collect(Collectors.toList()); - if(CollUtil.isEmpty(powerFlag)){ + if (CollUtil.isEmpty(powerFlag)) { //解决变电站下没有监测点显示问题(变电站-》终端-》母线) powerFlag.addAll(collect); } List subChildren = new ArrayList<>(); TerminalTree recursion = getRecursionChildren(powerFlag, terminalTrees); - if(ObjectUtil.isNotNull(recursion)){ + if (ObjectUtil.isNotNull(recursion)) { subChildren.add(recursion); } //非电网侧监测点 List powerFlagNot = value.stream().filter(x -> x.getPowerFlag().equals(LineBaseEnum.POWER_FLAG_NOT.getCode())).collect(Collectors.toList()); List notSubChildren = new ArrayList<>(); - if(CollUtil.isNotEmpty(powerFlagNot)){ + if (CollUtil.isNotEmpty(powerFlagNot)) { Map> objNameMap = powerFlagNot.stream().collect(Collectors.groupingBy(TerminalTree::getObjName)); - objNameMap.forEach((objNameKey,objNameValue)->{ + objNameMap.forEach((objNameKey, objNameValue) -> { TerminalTree recursionChildren = getRecursionChildren(objNameValue, terminalTrees); - if(ObjectUtil.isNotNull(recursionChildren)){ + if (ObjectUtil.isNotNull(recursionChildren)) { recursionChildren.setName(objNameKey); notSubChildren.add(recursionChildren); } }); } - if(CollUtil.isNotEmpty(collect)){ + if (CollUtil.isNotEmpty(collect)) { List valueList = new ArrayList<>(); - TerminalTree sub=new TerminalTree(); + TerminalTree sub = new TerminalTree(); sub.setId(collect.get(0).getId()); sub.setName(collect.get(0).getName()); sub.setPid(collect.get(0).getPid()); sub.setSort(0); sub.setChildren(valueList); - TerminalTree powerTree=new TerminalTree(); + TerminalTree powerTree = new TerminalTree(); powerTree.setName("电网侧"); powerTree.setId(collect.get(0).getId()); powerTree.setChildren(subChildren); valueList.add(powerTree); - TerminalTree notPowerTree=new TerminalTree(); + TerminalTree notPowerTree = new TerminalTree(); notPowerTree.setName("非电网侧"); notPowerTree.setChildren(notSubChildren); valueList.add(notPowerTree); subInfoList.add(sub); - }else{ + } else { //电网侧变电站能否找到 for (TerminalTree child : subChildren) { List valueList = new ArrayList<>(); List exist = subInfoList.stream().filter(x -> x.getId().equals(child.getId())).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(exist)){ + if (CollUtil.isNotEmpty(exist)) { //电网侧 - List children =new ArrayList<>(); + List children = new ArrayList<>(); children.addAll(exist.get(0).getChildren().get(0).getChildren()); children.add(child); exist.get(0).getChildren().get(0).setChildren(children); - }else{ - TerminalTree sub=new TerminalTree(); + } else { + TerminalTree sub = new TerminalTree(); sub.setId(child.getId()); sub.setName(child.getName()); sub.setPid(child.getPid()); sub.setSort(0); - TerminalTree powerTree=new TerminalTree(); + TerminalTree powerTree = new TerminalTree(); powerTree.setName("电网侧"); powerTree.setId(child.getId()); powerTree.setChildren(Arrays.asList(child)); @@ -574,7 +620,7 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { List exist = subInfoList.stream().filter(x -> x.getId().equals(child.getId())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(exist)) { //非电网侧 - List children =new ArrayList<>(); + List children = new ArrayList<>(); children.addAll(exist.get(0).getChildren().get(1).getChildren()); children.add(child); exist.get(0).getChildren().get(1).setChildren(children); @@ -615,7 +661,7 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { for (TerminalTree notSub : collect) { //只显示变电站下有装置的 TerminalTree notSub1 = findParents(collect1, notSub); - if(CollUtil.isNotEmpty(notSub1.getChildren())){ + if (CollUtil.isNotEmpty(notSub1.getChildren())) { List valueList = new ArrayList<>(); TerminalTree sub = new TerminalTree(); @@ -638,7 +684,7 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { subInfoList.add(sub); dw.add(sub); } - } + } gdList.forEach(gd -> gd.setChildren(getChildren(gd, subInfoList))); provinceList.forEach(province -> province.setChildren(getChildren(province, gdList))); @@ -668,28 +714,26 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { List devList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.DEVICE_LEVEL.getCode())).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); List subvList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.SUB_V_LEVEL.getCode())).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); - List linepowerList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode())&&item.getPowerFlag() != 1).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); - List lineNotPowerList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode())&&item.getPowerFlag() == 1).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); + List linepowerList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode()) && item.getPowerFlag() != 1).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); + List lineNotPowerList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode()) && item.getPowerFlag() == 1).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); - - subvList.forEach(subv ->{ - if(CollUtil.isEmpty(subv.getChildren())){ + subvList.forEach(subv -> { + if (CollUtil.isEmpty(subv.getChildren())) { subv.setChildren(getRecursionChildren(subv, linepowerList)); } } - ); + ); subvList.forEach(subv -> { - if(CollUtil.isEmpty(subv.getChildren())){ + if (CollUtil.isEmpty(subv.getChildren())) { subv.setChildren(getRecursionChildren(subv, lineNotPowerList)); } } ); - subvList.stream().filter(x-> ObjUtil.isNull(x.getPowerFlag())).forEach(x->x.setPowerFlag(0)); + subvList.stream().filter(x -> ObjUtil.isNull(x.getPowerFlag())).forEach(x -> x.setPowerFlag(0)); devList.forEach(dev -> dev.setChildren(getRecursionChildren(dev, subvList))); - devList.stream().filter(x-> ObjUtil.isNull(x.getPowerFlag())).forEach(x->x.setPowerFlag(0)); - + devList.stream().filter(x -> ObjUtil.isNull(x.getPowerFlag())).forEach(x -> x.setPowerFlag(0)); subList.forEach(sub -> sub.setChildren(getRecursionChildrenCs(sub, devList))); @@ -709,36 +753,36 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { */ public List getChildren(TerminalTree item, List all) { List collect = all.stream().filter(allItem -> allItem.getPid().equals(item.getId())).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(collect)){ - long sortSize = collect.stream().filter(x->ObjUtil.isNotNull(x.getSort())).filter(x -> x.getSort() == 0).count(); - if(collect.size()-sortSize/collect.size()>50){ - collect.sort(Comparator.comparing(x->x.getName())); + if (CollUtil.isNotEmpty(collect)) { + long sortSize = collect.stream().filter(x -> ObjUtil.isNotNull(x.getSort())).filter(x -> x.getSort() == 0).count(); + if (collect.size() - sortSize / collect.size() > 50) { + collect.sort(Comparator.comparing(x -> x.getName())); } } return collect; } - public List getRecursionChildrenCs(TerminalTree item, List all){ + public List getRecursionChildrenCs(TerminalTree item, List all) { List collect = all.stream().filter(allItem -> allItem.getPid().equals(item.getId())).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); - List list=new ArrayList<>(); - TerminalTree power=new TerminalTree(); + List list = new ArrayList<>(); + TerminalTree power = new TerminalTree(); power.setName("电网侧"); power.setSort(0); power.setChildren(collect.stream().filter(x -> 1 != x.getPowerFlag()).collect(Collectors.toList())); list.add(power); - - TerminalTree notPower=new TerminalTree(); + TerminalTree notPower = new TerminalTree(); notPower.setName("非电网侧"); notPower.setSort(1); notPower.setChildren(collect.stream().filter(x -> 1 == x.getPowerFlag()).collect(Collectors.toList())); list.add(notPower); return list; } - public List getRecursionChildren(TerminalTree item, List all){ + + public List getRecursionChildren(TerminalTree item, List all) { List list = all.stream().filter(allItem -> allItem.getPid().equals(item.getId())).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(list)){ + if (CollUtil.isNotEmpty(list)) { item.setPowerFlag(list.get(0).getPowerFlag()); } return list; @@ -746,31 +790,32 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { /** * 变电站层级增加电网侧和非电网侧电站 + * * @param line 变电站对象 - * @param all 检测对象 + * @param all 检测对象 * @return */ public TerminalTree getRecursionChildren(List line, List all) { - List aa=new ArrayList<>(); + List aa = new ArrayList<>(); for (TerminalTree lineTree : line) { - findParentsRecursive(lineTree, all,aa); + findParentsRecursive(lineTree, all, aa); aa.add(lineTree); } - List distinctList =new ArrayList<>(aa.stream().distinct().collect(Collectors.toList())); + List distinctList = new ArrayList<>(aa.stream().distinct().collect(Collectors.toList())); long count = line.stream().filter(x -> !x.getLevel().equals(LineBaseEnum.LINE_LEVEL.getCode())).count(); - if(count>0){ + if (count > 0) { aa.addAll(all); } List lines = aa.stream().distinct().sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); List collect = distinctList.stream().filter(x -> x.getLevel() == LineBaseEnum.SUB_LEVEL.getCode()).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(collect)){ + if (CollUtil.isNotEmpty(collect)) { TerminalTree terminalTree = BeanUtil.copyProperties(collect.get(0), TerminalTree.class); - return findParents(lines,terminalTree); + return findParents(lines, terminalTree); } return null; } - private static void findParentsRecursive(TerminalTree tree, List all,List newParents) { + private static void findParentsRecursive(TerminalTree tree, List all, List newParents) { if (tree.getLevel() == LineBaseEnum.SUB_LEVEL.getCode()) { return; } @@ -783,12 +828,12 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { } } - private TerminalTree findParents(List all,TerminalTree subTree) { + private TerminalTree findParents(List all, TerminalTree subTree) { List collect = all.stream().filter(allItem -> allItem.getPid().equals(subTree.getId())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(collect)) { collect.forEach(treeMap -> { subTree.setChildren(collect); - findParents( all,treeMap); + findParents(all, treeMap); }); } return subTree;