修改代码

This commit is contained in:
孙小云 2026-01-17 16:57:03 +08:00
parent a64a96ca76
commit b35f7438b1
1 changed files with 2 additions and 46 deletions

View File

@ -119,55 +119,11 @@ public class SynService {
return false; return false;
} }
/**
* 建立设备到网关的映射关系
* 优化策略先识别所有网关设备然后为每个网关查询其子设备
*
* @return 设备ID到网关ID的映射 Map<子设备ID, 网关ID>
*/
private Map<String, String> buildDeviceToGatewayMap() {
Map<String, String> deviceToGatewayMap = new HashMap<>();
try {
// 获取所有设备
Iterable<List<DeviceInfo>> allDevices = iThingsBoardDomain.getAllDevices();
List<DeviceInfo> gatewayDevices = new ArrayList<>();
// 第一步识别所有网关设备
for (List<DeviceInfo> deviceBatch : allDevices) {
for (DeviceInfo deviceInfo : deviceBatch) {
if (deviceInfo.isGateway()) {
gatewayDevices.add(deviceInfo);
}
}
}
log.info("发现 {} 个网关设备", gatewayDevices.size());
// 第二步为每个网关查询其子设备建立映射关系
for (DeviceInfo gateway : gatewayDevices) {
String gatewayId = gateway.getId();
List<String> childDeviceIds = iThingsBoardDomain.getGatewayChildDevices(gatewayId);
for (String childDeviceId : childDeviceIds) {
deviceToGatewayMap.put(childDeviceId, gatewayId);
}
log.debug("网关 {} 有 {} 个子设备", gateway.getName(), childDeviceIds.size());
}
log.info("成功建立设备到网关的映射关系,共 {} 个子设备", deviceToGatewayMap.size());
} catch (Exception e) {
log.error("建立设备到网关映射关系失败: {}", e.getMessage(), e);
}
return deviceToGatewayMap;
}
/** /**
* 定时任务同步基础表数据 * 定时任务同步基础表数据
* 执行时间启动后1分钟开始2分钟执行一次可通过配置文件修改 * 执行时间启动后1分钟开始每10分钟执行一次可通过配置文件修改
* 配置项device.schedule.print-devices.initial-delay 初始延迟时间毫秒 * 配置项device.schedule.print-devices.initial-delay 初始延迟时间毫秒
* device.schedule.print-devices.fixed-delay 执行间隔时间毫秒 * device.schedule.print-devices.fixed-delay 执行间隔时间毫秒
* *
@ -177,7 +133,7 @@ public class SynService {
* 3. 同步非网关的独立设备机场和无人机 * 3. 同步非网关的独立设备机场和无人机
*/ */
@Scheduled(initialDelayString = "${device.schedule.update-devices.initial-delay:60000}", @Scheduled(initialDelayString = "${device.schedule.update-devices.initial-delay:60000}",
fixedDelayString = "${device.schedule.update-devices.fixed-delay:120000}") fixedDelayString = "${device.schedule.update-devices.fixed-delay:600000}")
public void updateDevicesScheduled() { public void updateDevicesScheduled() {
try { try {
log.info("========== 开始执行定时任务:同步基础表数据 =========="); log.info("========== 开始执行定时任务:同步基础表数据 ==========");