From b0aafc8d330fddebb974c6a62737619d072a0f96 Mon Sep 17 00:00:00 2001 From: zch Date: Thu, 17 Oct 2024 15:52:03 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20=E7=9C=8B=E6=9D=BF=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=A3=80=E6=B5=8B=E9=9D=A2=E6=9D=BF=EF=BC=8C=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E7=88=B6=E8=8A=82=E7=82=B9=E6=98=BE=E7=A4=BA=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=AE=BE=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 看板设备检测面板,点击监控单元父节点,显示子孙节点(监控单元)下的所有设备 - 新增递归方法获取监控单元的所有子孙节点 - 将子孙节点的设备信息合并到查询结果中 - 注意:数据库样本较少,性能和有效性待进一步验证 --- .../service/impl/HwDeviceServiceImpl.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java index 82bf466..ec3105a 100644 --- a/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java +++ b/ruoyi-modules/hw-business/src/main/java/com/ruoyi/business/service/impl/HwDeviceServiceImpl.java @@ -433,6 +433,26 @@ public class HwDeviceServiceImpl implements IHwDeviceService { String databaseName = TdEngineConstants.getDatabaseName(); List hwDevices = hwDeviceMapper.selectHwDeviceListByMonitor(queryHwDevice); + +/* 获取该监控单元节点下的所有子孙节点的设备 */ + //获取所有监控单元 + List hwMonitorUnits = hwMonitorUnitMapper.selectHwMonitorUnitList(new HwMonitorUnit()); + Long targetNodeId = queryHwDevice.getMonitorUnitId();//目标节点,即父节点ID + //TODO(zangch,2024.10.16):在hwDevices拼接子孙节点的设备列表,数据库样本少未完全验证性能和有效性 + //调用递归方法 + List descendants = getAllHwMonitorUnits(hwMonitorUnits,targetNodeId); + // 遍历所有监控单元 + for (HwMonitorUnit hwMonitorUnit : descendants){ + // 创建设备对象 + HwDevice hwMonitorUnitDevice = new HwDevice(); + // 设置监控单元ID + hwMonitorUnitDevice.setMonitorUnitId(hwMonitorUnit.getMonitorUnitId()); + // 根据监控单元ID查询设备列表 + List hwDevicesByMonitor = hwDeviceMapper.selectHwDeviceListByMonitor(hwMonitorUnitDevice); + // 将查询到的设备列表添加到总列表中 + hwDevices.addAll(hwDevicesByMonitor); + } + if (hwDevices.size()>0){ hwDevices.forEach(hwDevice -> { Long deviceId = hwDevice.getDeviceId(); @@ -548,6 +568,26 @@ public class HwDeviceServiceImpl implements IHwDeviceService { return devicesMap; } + //TODO(zangch,2024.10.16):递归获取所有子孙节点,数据库数据太少没办法验证是否完全有效 +/* 根据节点ID获取所有子孙节点*/ + private List getAllHwMonitorUnits(List hwMonitorUnits,Long nodeId){ + // 创建一个空的列表,用于存储所有子节点 + List hwMonitorUnitList = new ArrayList<>(); + // 遍历所有节点 + for(HwMonitorUnit node :hwMonitorUnits){ + // 如果当前节点的父节点ID等于传入的节点ID + if (node.getParentId().equals(nodeId)){ + // 当前节点是直接子节点,加入结果集并继续寻找其子孙节点 + hwMonitorUnitList.add(node); + // 递归调用方法,获取当前节点的所有子孙节点 + hwMonitorUnitList.addAll(getAllHwMonitorUnits(hwMonitorUnits, node.getMonitorUnitId())); + } + } + // 返回所有子节点 + return hwMonitorUnitList; + } + + /** * 查询设备信息列表,join监控单元、设备模型等表 *