From c08855a3b5a932524e8400b3da9722d0f7bc4b4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Sat, 17 Jan 2026 15:49:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/impl/ThingsBoardDomainImpl.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/ruoyi/device/domain/impl/ThingsBoardDomainImpl.java b/src/main/java/com/ruoyi/device/domain/impl/ThingsBoardDomainImpl.java index 85ec8c9..51fbd3a 100644 --- a/src/main/java/com/ruoyi/device/domain/impl/ThingsBoardDomainImpl.java +++ b/src/main/java/com/ruoyi/device/domain/impl/ThingsBoardDomainImpl.java @@ -17,6 +17,10 @@ import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.kv.AttributeKvEntry; import org.thingsboard.server.common.data.kv.TsKvEntry; import org.thingsboard.server.common.data.relation.EntityRelation; +import org.thingsboard.server.common.data.relation.EntityRelationInfo; +import org.thingsboard.server.common.data.relation.EntityRelationsQuery; +import org.thingsboard.server.common.data.relation.EntitySearchDirection; +import org.thingsboard.server.common.data.relation.RelationsSearchParameters; import org.thingsboard.server.common.data.relation.RelationTypeGroup; import java.util.ArrayList; @@ -243,21 +247,30 @@ public class ThingsBoardDomainImpl implements IThingsBoardDomain { try { DeviceId gatewayId = new DeviceId(UUID.fromString(gatewayDeviceId)); - // 查询从网关出发的 "Contains" 关系(网关 -> 子设备) - List relations = client.findByFrom( - gatewayId, - EntityRelation.CONTAINS_TYPE, - RelationTypeGroup.COMMON + // 构建查询参数:从网关出发查询子设备 + // direction = FROM 表示从 rootId 出发的关系(网关 -> 子设备) + RelationsSearchParameters parameters = new RelationsSearchParameters( + gatewayId, // rootId: 网关设备ID + EntitySearchDirection.FROM, // direction: 从网关出发 + 1, // maxLevel: 查询深度为1(直接子设备) + RelationTypeGroup.COMMON, // relationTypeGroup: COMMON + false // fetchLastLevelOnly: false ); - if (relations == null || relations.isEmpty()) { + EntityRelationsQuery query = new EntityRelationsQuery(); + query.setParameters(parameters); + + // 调用 findInfoByQuery 查询关系信息 + List relationInfos = client.findInfoByQuery(query); + + if (relationInfos == null || relationInfos.isEmpty()) { log.debug("网关 {} 没有子设备", gatewayDeviceId); return childDeviceIds; } // 提取所有子设备的ID - for (EntityRelation relation : relations) { - EntityId childEntityId = relation.getTo(); + for (EntityRelationInfo relationInfo : relationInfos) { + EntityId childEntityId = relationInfo.getTo(); String childDeviceId = childEntityId.getId().toString(); childDeviceIds.add(childDeviceId); }