From aca8842a1830d10c51f4ed98b23e77f9f0addbc5 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Sat, 29 Nov 2025 11:30:02 +0800
Subject: [PATCH] 2025-11-29 zwy 处理OSD消息空指针异常
---
ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java | 23 ++++++++++++++---------
1 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java
index b9c7713..45bca6f 100644
--- a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceServiceImpl.java
@@ -1,10 +1,7 @@
package com.ard.sample.manage.service.impl;
import com.alibaba.fastjson2.JSONObject;
-import com.ard.common.annotation.DataScope;
-import com.ard.common.annotation.DataScopePlus;
import com.ard.system.authorize.service.AuthorizeService;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -36,7 +33,6 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -503,10 +499,10 @@
@Override
@ServiceActivator(inputChannel = ChannelName.INBOUND_OSD)
public void handleOSD(Message<?> message) {
- String topic = message.getHeaders().get(MqttHeaders.RECEIVED_TOPIC).toString();
- byte[] payload = (byte[]) message.getPayload();
- CommonTopicReceiver receiver;
try {
+ String topic = message.getHeaders().get(MqttHeaders.RECEIVED_TOPIC).toString();
+ byte[] payload = (byte[]) message.getPayload();
+ CommonTopicReceiver receiver;
String from = topic.substring((THING_MODEL_PRE + PRODUCT).length(),
topic.indexOf(OSD_SUF));
@@ -544,7 +540,12 @@
tsaService.handleOSD(receiver, device, webSessions, wsMessage);
- } catch (IOException e) {
+ } catch (NullPointerException e) {
+ log.error("处理OSD消息NPE,headers={}, payload={}",
+ message.getHeaders(), message.getPayload(), e); // 打印完整栈
+ }
+ catch (IOException e) {
+ log.error("处理OSD消息的IO异常:{}",e.getMessage(), e);
e.printStackTrace();
}
}
@@ -616,6 +617,7 @@
// 验证授权数量
validateAuthorization(devicesList.size(), 1);
} catch (Exception e) {
+ log.error("保存设备时验证授权异常,请联系管理员!错误信息:" + e.getMessage());
return Optional.empty();
}
// 调用验证方法
@@ -877,6 +879,9 @@
BindDeviceReceiver dock = null;
BindDeviceReceiver drone = null;
for (BindDeviceReceiver device : devices) {
+ if(device.getDeviceModelKey().isEmpty()){
+ continue;
+ }
int val = Integer.parseInt(device.getDeviceModelKey().split("-")[0]);
if (val == DeviceDomainEnum.DOCK.getVal()) {
dock = device;
@@ -1247,7 +1252,7 @@
.sn(device.getDeviceSn())
.deviceCallsign(device.getNickname())
.isDeviceBindOrganization(device.getBoundStatus())
- .organizationId(device.getDeptId().toString())
+ .organizationId(String.valueOf(device.getDeptId()))
.organizationName(device.getWorkspaceName())
.build();
}
--
Gitblit v1.9.3