From 1026257b2548b7e02856d116495e38063185eab2 Mon Sep 17 00:00:00 2001 From: xuyang <748613696@qq.com> Date: Tue, 28 Nov 2023 14:08:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LineIntegrityDataServiceImpl.java | 67 ++++++++++++++++++- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineIntegrityDataServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineIntegrityDataServiceImpl.java index 566a5a8cb..7c64b37ca 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineIntegrityDataServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineIntegrityDataServiceImpl.java @@ -154,9 +154,9 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl item.getIntegrityData() != 3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159); + Double temValue = lineList.stream().filter(item -> item.getIntegrityData() != 3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159); LineIntegrityDataVO temp = lineList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO()); lineIntegrityDataVO.setAlgoDescribe(temp.getAlgoDescribe()); lineIntegrityDataVO.setId(generalDeviceDTO.getIndex()); @@ -424,6 +424,13 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl targetData, List childrenData, boolean isLine, int level) { + // 创建一个map集合,用于封装对象 + Map> groupLine; + if (isLine) { + // 通过stream流分组 + groupLine = childrenData.stream().collect(Collectors.groupingBy(lineAdministrationTree -> { + // 获取父id字符串,通过 逗号 分割 成一个数组 + String[] pid = lineAdministrationTree.getPids().split(","); + // 判断集合索引为3的元素 + return pid[LineBaseEnum.SUB_LEVEL.getCode()]; + })); + } else { + groupLine = childrenData.stream().collect(Collectors.groupingBy(LineIntegrityDataVO::getPid)); + } + targetData = targetData.stream().peek(lineAdministrationTree -> { + List data = new ArrayList<>(); + List childList = new ArrayList<>(); + Set pids = groupLine.keySet(); + for (String pid : pids) { + if (lineAdministrationTree.getId().equals(pid)) { + List lineIntegrityDataVOList = groupLine.get(pid); + lineAdministrationTree.setChildren(lineIntegrityDataVOList); + if (Objects.equals(level,2)){ + for (LineIntegrityDataVO item : lineIntegrityDataVOList) { + childList.addAll(item.getChildren()); + } + if (CollectionUtil.isNotEmpty(childList)){ + data = childList.stream().map(LineIntegrityDataVO::getIntegrityData).collect(Collectors.toList()); + } + } else if (Objects.equals(level,3)){ + data = lineIntegrityDataVOList.stream().map(LineIntegrityDataVO::getIntegrityData).collect(Collectors.toList()); + } + LineIntegrityDataVO temp = lineIntegrityDataVOList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO()); + lineAdministrationTree.setAlgoDescribe(temp.getAlgoDescribe()); + } + } + //父级完整性匹配 + if (CollectionUtil.isNotEmpty(data)){ + double avg = data.stream().collect(Collectors.averagingDouble(x -> x)); + lineAdministrationTree.setIntegrityData(DataStatisticsUtil.dataLimits(avg)); + } else { + lineAdministrationTree.setIntegrityData(3.14159); + } + }).collect(Collectors.toList()); + } + }