diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java index dc5b251f9..a81920bba 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java @@ -72,7 +72,11 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setServerName("harmonic-boot"); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - List lineList = this.getLineList(list,param.getIsUpToGrid(),null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + List lineList = lineMap.values().stream() + .flatMap(List::stream) + .distinct() + .collect(Collectors.toList()); if (CollUtil.isNotEmpty(lineList)) { List comasses = new ArrayList<>(); //获取监测点详细信息 @@ -120,7 +124,11 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setServerName("harmonic-boot"); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - List lineList = this.getLineList(list, param.getIsUpToGrid(),null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + List lineList = lineMap.values().stream() + .flatMap(List::stream) + .distinct() + .collect(Collectors.toList()); if (CollUtil.isNotEmpty(lineList)){ //获取监测点详细信息 List lineDetailList = lineFeignClient.getLineDetail(lineList).getData(); @@ -157,7 +165,11 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setServerName("harmonic-boot"); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - List lineList = this.getLineList(list, param.getIsUpToGrid(),null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + List lineList = lineMap.values().stream() + .flatMap(List::stream) + .distinct() + .collect(Collectors.toList()); if (CollUtil.isNotEmpty(lineList)){ //获取监测点详细信息 List lineDetailList = lineFeignClient.getLineDetail(lineList).getData(); @@ -209,19 +221,22 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setServerName("harmonic-boot"); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - List lineList = this.getLineList(list, param.getIsUpToGrid(),null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + List lineList = lineMap.values().stream() + .flatMap(List::stream) + .distinct() + .collect(Collectors.toList()); if (CollUtil.isNotEmpty(lineList)) { //获取监测点所有指标数据 List limitRateList = rStatLimitRateDMapper.getAssessTargetRate(lineList,param.getStartTime(),param.getEndTime()); //获取部门 List deptList = deptFeignClient.getDepSonDetailByDeptId(param.getDeptIndex()).getData(); - Map deptLineMap = list.stream().collect(Collectors.toMap(DeptGetChildrenMoreDTO::getUnitId, Function.identity())); deptList.forEach(item->{ - if (deptLineMap.containsKey(item.getId())) { + if (lineMap.containsKey(item.getId())) { EvaluationVo.Children children = new EvaluationVo.Children(); children.setDeptId(item.getId()); children.setDeptName(item.getName()); - List ll = deptLineMap.get(item.getId()).getLineBaseList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + List ll = lineMap.get(item.getId()); if (CollUtil.isNotEmpty(limitRateList)) { List l1 = limitRateList.stream().filter(it->ll.contains(it.getLineId())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(l1)){ @@ -254,7 +269,11 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setServerName("harmonic-boot"); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - List line = this.getLineList(list,param.getIsUpToGrid(),param.getVoltageLevel()); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), param.getVoltageLevel()); + List lineList = lineMap.values().stream() + .flatMap(List::stream) + .distinct() + .collect(Collectors.toList()); //获取数据 EvaluationLevelVo vo1 = new EvaluationLevelVo(); vo1.setTargetName(DicDataEnum.FREQUENCY_DEV.getName()); @@ -266,11 +285,11 @@ public class GridServiceImpl implements IGridService { vo4.setTargetName(DicDataEnum.phase_Voltage.getName()); EvaluationLevelVo vo5 = new EvaluationLevelVo(); vo5.setTargetName(DicDataEnum.FLICKER.getName()); - if (CollUtil.isNotEmpty(line)) { - List list1 = getList1(line,param.getStartTime(),param.getEndTime()); - List list2 = getList2(line,param.getStartTime(),param.getEndTime()); - List list3 = getList3(line,param.getStartTime(),param.getEndTime()); - List list4 = getList4(line,param.getStartTime(),param.getEndTime()); + if (CollUtil.isNotEmpty(lineList)) { + List list1 = getList1(lineList,param.getStartTime(),param.getEndTime()); + List list2 = getList2(lineList,param.getStartTime(),param.getEndTime()); + List list3 = getList3(lineList,param.getStartTime(),param.getEndTime()); + List list4 = getList4(lineList,param.getStartTime(),param.getEndTime()); if (CollUtil.isNotEmpty(list1)) { List d = list1.stream().map(o->o.getFreqDev().doubleValue()).collect(Collectors.toList()); double avg = d.stream().collect(Collectors.averagingDouble(x->x)); @@ -314,7 +333,11 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setServerName("harmonic-boot"); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - List line = this.getLineList(list, param.getIsUpToGrid(),null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + List lineList = lineMap.values().stream() + .flatMap(List::stream) + .distinct() + .collect(Collectors.toList()); //按月获取时间集合 LocalDate currentDate = LocalDate.now(); // 获取当前年份 @@ -328,7 +351,7 @@ public class GridServiceImpl implements IGridService { vo.setTime(month.toString()); vo.setTargetList(Arrays.asList(DicDataEnum.FREQUENCY_DEV.getName(),DicDataEnum.VOLTAGE_DEV.getName(),DicDataEnum.THD_V.getName(),DicDataEnum.phase_Voltage.getName(),DicDataEnum.FLICKER.getName())); //获取监测点越限集合 - List overLimitList = rStatLimitRateDMapper.getAssessTargetRate(line,firstDayOfMonth,lastDayOfMonth); + List overLimitList = rStatLimitRateDMapper.getAssessTargetRate(lineList,firstDayOfMonth,lastDayOfMonth); if (CollUtil.isNotEmpty(overLimitList)) { long freqDev = overLimitList.stream().filter(obj -> obj.getFreqDevOvertime() > 0).count(); long vDev = overLimitList.stream().filter(obj -> obj.getVoltageDevOvertime() > 0).count(); @@ -354,20 +377,23 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setServerName("harmonic-boot"); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - List line = this.getLineList(list, param.getIsUpToGrid(),null); - if (CollUtil.isNotEmpty(line)) { + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + List lineList = lineMap.values().stream() + .flatMap(List::stream) + .distinct() + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(lineList)) { //获取监测点越限集合 - List overLimitList = rStatLimitTargetDMapper.getSumTarget(line,param.getStartTime(),param.getEndTime()); + List overLimitList = rStatLimitTargetDMapper.getSumTarget(lineList,param.getStartTime(),param.getEndTime()); //获取部门 List deptList = deptFeignClient.getDepSonDetailByDeptId(param.getDeptIndex()).getData(); - Map deptLineMap = list.stream().collect(Collectors.toMap(DeptGetChildrenMoreDTO::getUnitId, Function.identity())); deptList.forEach(item->{ - if (deptLineMap.containsKey(item.getId())) { + if (lineMap.containsKey(item.getId())) { EvaluationLevelVo.EvaluationDetail detail = new EvaluationLevelVo.EvaluationDetail(); detail.setDeptId(item.getId()); detail.setDeptName(item.getName()); - if (CollUtil.isNotEmpty(deptLineMap.get(item.getId()).getLineBaseList())) { - List ll = deptLineMap.get(item.getId()).getLineBaseList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(lineMap.get(item.getId()))) { + List ll = lineMap.get(item.getId()); detail.setOnlineNum(ll.size()); //筛选当前部门下监测点的超标数据 List list2 = overLimitList.stream().filter(it->ll.contains(it.getLineId())).collect(Collectors.toList()); @@ -439,11 +465,15 @@ public class GridServiceImpl implements IGridService { deptGetLineParam.setServerName("harmonic-boot"); List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); //获取监测点集合 - List line = this.getLineList(list, param.getIsUpToGrid(),null); + Map> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null); + List lineList = lineMap.values().stream() + .flatMap(List::stream) + .distinct() + .collect(Collectors.toList()); //获取基础台账信息 - List baseLineInfos = generalDeviceInfoClient.getBaseLineInfo(line).getData(); + List baseLineInfos = generalDeviceInfoClient.getBaseLineInfo(lineList).getData(); //获取越限详情 - List overLimitList = rStatLimitRateDMapper.getAssessTargetRate(line,param.getStartTime(),param.getEndTime()); + List overLimitList = rStatLimitRateDMapper.getAssessTargetRate(lineList,param.getStartTime(),param.getEndTime()); Map map = overLimitList.stream().collect(Collectors.toMap(RStatLimitRateDPO::getLineId,Function.identity())); baseLineInfos.forEach(item->{ EvaluationLevelVo.QualifiedDetail qualifiedDetail = new EvaluationLevelVo.QualifiedDetail(); @@ -715,25 +745,28 @@ public class GridServiceImpl implements IGridService { * @param type * @return */ - public List getLineList(List list, Integer type, String voltage) { - // 默认不过滤 - Predicate uploadFilter = item -> true; - if (Objects.equals(type, 1)) { - uploadFilter = item -> Objects.equals(item.getIsUpToGrid(), 1); - } + public Map> getLineMap(List list, Integer type, String voltage) { + Map> map = new HashMap<>(); + list.forEach(it->{ + // 默认不过滤 + Predicate uploadFilter = item -> true; + if (Objects.equals(type, 1)) { + uploadFilter = item -> Objects.equals(item.getIsUpToGrid(), 1); + } - Predicate voltageFilter = item -> true; - if (!Objects.isNull(voltage) && !Objects.equals(voltage,"")) { - voltageFilter = item -> Objects.equals(item.getVoltageLevel(), voltage); - } - // 组合两个过滤条件 - Predicate combinedFilter = uploadFilter.and(voltageFilter); - return list.stream() - .flatMap(item -> item.getLineBaseList().stream()) - .filter(combinedFilter) - .map(LineDevGetDTO::getPointId) - .distinct() - .collect(Collectors.toList()); + Predicate voltageFilter = item -> true; + if (!Objects.isNull(voltage) && !Objects.equals(voltage,"")) { + voltageFilter = item -> Objects.equals(item.getVoltageLevel(), voltage); + } + // 组合两个过滤条件 + Predicate combinedFilter = uploadFilter.and(voltageFilter); + map.put(it.getUnitId(),it.getLineBaseList().stream() + .filter(combinedFilter) + .map(LineDevGetDTO::getPointId) + .distinct() + .collect(Collectors.toList())); + }); + return map; } /**