From b69d0498aa061cbce5531427a76d113686ec1aae Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Tue, 1 Apr 2025 15:02:15 +0800 Subject: [PATCH 1/3] 11 --- .../org/dromara/sample/component/GlobalScheduleService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java b/dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java index bb00778..00026f3 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java @@ -42,7 +42,6 @@ public class GlobalScheduleService { @Scheduled(initialDelay = 10, fixedRate = 30, timeUnit = TimeUnit.SECONDS) private void deviceStatusListen() { int start = RedisConst.DEVICE_ONLINE_PREFIX.length(); - redisOpsUtils.getAllKeys(RedisConst.DEVICE_ONLINE_PREFIX + "*").forEach(key -> { long expire = redisOpsUtils.getExpire(key); if (expire <= 30) { @@ -50,6 +49,9 @@ public class GlobalScheduleService { if (null == device) { return; } + if(device.getWorkspaceId().isEmpty()){ + return; + } if (DeviceDomainEnum.DRONE == device.getDomain()) { deviceService.subDeviceOffline(key.substring(start)); } else { From 063031eb4bfefcd9a4bcb58efab0204f3e887c86 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 2 Apr 2025 10:34:04 +0800 Subject: [PATCH 2/3] 11 --- .../manage/service/impl/SDKDeviceService.java | 27 ++++++++++++++----- .../src/main/resources/logback-plus.xml | 10 +++---- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index 49765c0..d38e684 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -1,5 +1,6 @@ package org.dromara.sample.manage.service.impl; +import cn.hutool.core.util.ObjectUtil; import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.device.api.AbstractDeviceService; import org.dromara.common.sdk.cloudapi.psdk.PsdkUiResource; @@ -67,6 +68,12 @@ public class SDKDeviceService extends AbstractDeviceService { Optional deviceOpt = deviceRedisService.getDeviceOnline(deviceSn); Optional gatewayOpt = deviceRedisService.getDeviceOnline(request.getFrom()); + if(deviceOpt.isEmpty() || ObjectUtil.isNull(deviceOpt.get().getWorkspaceId())){ + return null; + } + if(gatewayOpt.isEmpty() || ObjectUtil.isNull(gatewayOpt.get().getWorkspaceId())){ + return null; + } GatewayManager gatewayManager = SDKManager.registerDevice(request.getFrom(), deviceSn, request.getData().getDomain(), request.getData().getType(), request.getData().getSubType(), request.getData().getThingVersion(), updateTopoSubDevice.getThingVersion()); @@ -109,18 +116,27 @@ public class SDKDeviceService extends AbstractDeviceService { @Override public TopicStatusResponse updateTopoOffline(TopicStatusRequest request, MessageHeaders headers) { + + GatewayManager gatewayManager = SDKManager.registerDevice(request.getFrom(), null, request.getData().getDomain(), request.getData().getType(), request.getData().getSubType(), request.getData().getThingVersion(), null); + Optional deviceOpt = deviceRedisService.getDeviceOnline(request.getFrom()); + if(deviceOpt.isEmpty()){ + return null; + } + if(ObjectUtil.isNull(deviceOpt.get().getWorkspaceId())){ + return null; + } deviceService.gatewayOnlineSubscribeTopic(gatewayManager); // Only the remote controller is logged in and the aircraft is not connected. - Optional deviceOpt = deviceRedisService.getDeviceOnline(request.getFrom()); + if (deviceOpt.isEmpty()) { // When connecting for the first time DeviceDTO gatewayDevice = deviceGatewayConvertToDevice(request.getFrom(), request.getData()); Optional gatewayDeviceOpt = onlineSaveDevice(gatewayDevice, null, null); if (gatewayDeviceOpt.isEmpty()) { - return null; + return new TopicStatusResponse().setData(MqttReply.success()); } deviceService.pushDeviceOnlineTopo(gatewayDeviceOpt.get().getWorkspaceId(), request.getFrom(), null); return new TopicStatusResponse().setData(MqttReply.success()); @@ -142,15 +158,14 @@ public class SDKDeviceService extends AbstractDeviceService { if (deviceOpt.isEmpty() || !StringUtils.hasText(deviceOpt.get().getWorkspaceId())) { deviceOpt = deviceService.getDeviceBySn(from); if (deviceOpt.isEmpty()) { - log.error("请重新启动无人机。"); + return; + } + if(!StringUtils.hasText(deviceOpt.get().getWorkspaceId())){ return; } } DeviceDTO device = deviceOpt.get(); - if (!StringUtils.hasText(device.getWorkspaceId())) { - log.error("请先绑好码头。"); - } if (StringUtils.hasText(device.getChildDeviceSn())) { deviceService.getDeviceBySn(device.getChildDeviceSn()).ifPresent(device::setChildren); } diff --git a/dk-modules/sample/src/main/resources/logback-plus.xml b/dk-modules/sample/src/main/resources/logback-plus.xml index a2fd413..5f53936 100644 --- a/dk-modules/sample/src/main/resources/logback-plus.xml +++ b/dk-modules/sample/src/main/resources/logback-plus.xml @@ -12,10 +12,10 @@ ${console.log.pattern} utf-8 - - - - + + + ERROR + @@ -26,7 +26,7 @@ - + From d08909b2eef9dc5b190e3f9a109fc39178727c44 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 2 Apr 2025 11:20:46 +0800 Subject: [PATCH 3/3] 11 --- .../sample/component/GlobalScheduleService.java | 7 +------ .../manage/service/impl/SDKDeviceService.java | 15 +-------------- .../service/impl/SDKOrganizationService.java | 3 --- 3 files changed, 2 insertions(+), 23 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java b/dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java index 00026f3..ee527a7 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/component/GlobalScheduleService.java @@ -42,16 +42,11 @@ public class GlobalScheduleService { @Scheduled(initialDelay = 10, fixedRate = 30, timeUnit = TimeUnit.SECONDS) private void deviceStatusListen() { int start = RedisConst.DEVICE_ONLINE_PREFIX.length(); + redisOpsUtils.getAllKeys(RedisConst.DEVICE_ONLINE_PREFIX + "*").forEach(key -> { long expire = redisOpsUtils.getExpire(key); if (expire <= 30) { DeviceDTO device = (DeviceDTO) redisOpsUtils.get(key); - if (null == device) { - return; - } - if(device.getWorkspaceId().isEmpty()){ - return; - } if (DeviceDomainEnum.DRONE == device.getDomain()) { deviceService.subDeviceOffline(key.substring(start)); } else { diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index d38e684..25a6fae 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -68,12 +68,6 @@ public class SDKDeviceService extends AbstractDeviceService { Optional deviceOpt = deviceRedisService.getDeviceOnline(deviceSn); Optional gatewayOpt = deviceRedisService.getDeviceOnline(request.getFrom()); - if(deviceOpt.isEmpty() || ObjectUtil.isNull(deviceOpt.get().getWorkspaceId())){ - return null; - } - if(gatewayOpt.isEmpty() || ObjectUtil.isNull(gatewayOpt.get().getWorkspaceId())){ - return null; - } GatewayManager gatewayManager = SDKManager.registerDevice(request.getFrom(), deviceSn, request.getData().getDomain(), request.getData().getType(), request.getData().getSubType(), request.getData().getThingVersion(), updateTopoSubDevice.getThingVersion()); @@ -121,16 +115,9 @@ public class SDKDeviceService extends AbstractDeviceService { GatewayManager gatewayManager = SDKManager.registerDevice(request.getFrom(), null, request.getData().getDomain(), request.getData().getType(), request.getData().getSubType(), request.getData().getThingVersion(), null); - Optional deviceOpt = deviceRedisService.getDeviceOnline(request.getFrom()); - if(deviceOpt.isEmpty()){ - return null; - } - if(ObjectUtil.isNull(deviceOpt.get().getWorkspaceId())){ - return null; - } deviceService.gatewayOnlineSubscribeTopic(gatewayManager); // Only the remote controller is logged in and the aircraft is not connected. - + Optional deviceOpt = deviceRedisService.getDeviceOnline(request.getFrom()); if (deviceOpt.isEmpty()) { // When connecting for the first time DeviceDTO gatewayDevice = deviceGatewayConvertToDevice(request.getFrom(), request.getData()); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKOrganizationService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKOrganizationService.java index 51c33dc..19ea60b 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKOrganizationService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKOrganizationService.java @@ -61,9 +61,6 @@ public class SDKOrganizationService extends AbstractOrganizationService { @Override public TopicRequestsResponse> airportOrganizationGet(TopicRequestsRequest request, MessageHeaders headers) { AirportOrganizationGetRequest organizationGet = request.getData(); - if (!StringUtils.hasText(organizationGet.getDeviceBindingCode())) { - return new TopicRequestsResponse().setData(MqttReply.error(CommonErrorEnum.ILLEGAL_ARGUMENT)); - } Optional workspace = workspaceService.getWorkspaceNameByBindCode(organizationGet.getDeviceBindingCode()); if (workspace.isEmpty()) {