修改代码

This commit is contained in:
孙小云 2026-01-17 15:36:25 +08:00
parent ac95f0a163
commit 39f423dd28
2 changed files with 36 additions and 1 deletions

View File

@ -1 +1 @@
dddddddda ddddddddddda

View File

@ -1,5 +1,7 @@
package com.ruoyi.device.domain.model.thingsboard; package com.ruoyi.device.domain.model.thingsboard;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.thingsboard.rest.client.RestClient; import org.thingsboard.rest.client.RestClient;
import org.thingsboard.server.common.data.Device; import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageData;
@ -20,12 +22,15 @@ import java.util.stream.Collectors;
*/ */
public class GatewayDeviceIterator implements Iterable<List<DeviceInfo>> { public class GatewayDeviceIterator implements Iterable<List<DeviceInfo>> {
private static final Logger log = LoggerFactory.getLogger(GatewayDeviceIterator.class);
private final RestClient client; private final RestClient client;
private final int pageSize; private final int pageSize;
public GatewayDeviceIterator(RestClient client, int pageSize) { public GatewayDeviceIterator(RestClient client, int pageSize) {
this.client = client; this.client = client;
this.pageSize = pageSize; this.pageSize = pageSize;
log.debug("初始化网关设备迭代器,页大小: {}", pageSize);
} }
@Override @Override
@ -68,12 +73,23 @@ public class GatewayDeviceIterator implements Iterable<List<DeviceInfo>> {
*/ */
private void loadNextBatch() { private void loadNextBatch() {
nextBatch = null; nextBatch = null;
int skippedPages = 0;
int totalDevicesScanned = 0;
log.debug("开始加载下一批网关设备");
// 循环直到找到至少一个网关设备或者没有更多页 // 循环直到找到至少一个网关设备或者没有更多页
while (hasMorePages && (nextBatch == null || nextBatch.isEmpty())) { while (hasMorePages && (nextBatch == null || nextBatch.isEmpty())) {
int currentPageNumber = pageLink.getPage();
// 获取当前页数据 // 获取当前页数据
log.debug("正在获取第 {} 页设备数据,页大小: {}", currentPageNumber, pageSize);
PageData<Device> currentPage = client.getTenantDevices("", pageLink); PageData<Device> currentPage = client.getTenantDevices("", pageLink);
int pageDeviceCount = currentPage.getData().size();
totalDevicesScanned += pageDeviceCount;
log.debug("第 {} 页返回 {} 个设备", currentPageNumber, pageDeviceCount);
// 转换为DeviceInfo列表并过滤出网关设备 // 转换为DeviceInfo列表并过滤出网关设备
nextBatch = currentPage.getData().stream() nextBatch = currentPage.getData().stream()
.filter(device -> { .filter(device -> {
@ -93,13 +109,32 @@ public class GatewayDeviceIterator implements Iterable<List<DeviceInfo>> {
)) ))
.collect(Collectors.toList()); .collect(Collectors.toList());
int gatewayCount = nextBatch != null ? nextBatch.size() : 0;
log.debug("第 {} 页过滤后得到 {} 个网关设备", currentPageNumber, gatewayCount);
// 如果当前页没有网关设备记录跳过
if (gatewayCount == 0) {
skippedPages++;
log.debug("第 {} 页没有网关设备,继续查找下一页", currentPageNumber);
}
// 准备下一页 // 准备下一页
if (currentPage.hasNext()) { if (currentPage.hasNext()) {
pageLink = pageLink.nextPageLink(); pageLink = pageLink.nextPageLink();
} else { } else {
hasMorePages = false; hasMorePages = false;
log.debug("已到达最后一页,总共扫描 {} 个设备,跳过 {} 个空页", totalDevicesScanned, skippedPages);
} }
} }
// 输出最终结果日志
if (nextBatch != null && !nextBatch.isEmpty()) {
log.info("成功加载 {} 个网关设备,共扫描 {} 个设备,跳过 {} 个空页",
nextBatch.size(), totalDevicesScanned, skippedPages);
} else {
log.info("没有找到更多网关设备,共扫描 {} 个设备,跳过 {} 个空页",
totalDevicesScanned, skippedPages);
}
} }
}; };
} }