From f396f5f29e1378d23e67061697f8852639bf42c6 Mon Sep 17 00:00:00 2001
From: lin <648540858@qq.com>
Date: Tue, 13 Jan 2026 17:15:29 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E5=A4=87=E7=8A=B6?=
=?UTF-8?q?=E6=80=81=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cmd/ISIPCommanderForPlatform.java | 2 +-
.../cmd/impl/SIPCommanderForPlatform.java | 21 ++++++++++++-------
.../impl/SubscribeRequestProcessor.java | 7 ++-----
.../cmd/DeviceStatusQueryMessageHandler.java | 8 ++++++-
4 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java
index c94a072f0..70efe78be 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java
@@ -82,7 +82,7 @@ public interface ISIPCommanderForPlatform {
* @param fromTag
* @return
*/
- void deviceStatusResponse(Platform parentPlatform, String channelId, String sn, String fromTag, boolean status) throws SipException, InvalidArgumentException, ParseException;
+ void deviceStatusResponse(Platform parentPlatform, String channelId, String sn, String fromTag, Boolean status) throws SipException, InvalidArgumentException, ParseException;
/**
* 向上级回复移动位置订阅消息
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderForPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderForPlatform.java
index 0cf5c782c..c51646a3c 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderForPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderForPlatform.java
@@ -329,22 +329,29 @@ public class SIPCommanderForPlatform implements ISIPCommanderForPlatform {
* @return
*/
@Override
- public void deviceStatusResponse(Platform parentPlatform, String channelId, String sn, String fromTag, boolean status) throws SipException, InvalidArgumentException, ParseException {
+ public void deviceStatusResponse(Platform parentPlatform, String channelId, String sn, String fromTag, Boolean status) throws SipException, InvalidArgumentException, ParseException {
if (parentPlatform == null) {
return ;
}
- String statusStr = (status)?"ONLINE":"OFFLINE";
+ String statusStr = null;
+ if (status != null) {
+ statusStr = (status)?"ONLINE":"OFFLINE";
+ }
String characterSet = parentPlatform.getCharacterSet();
StringBuffer deviceStatusXml = new StringBuffer(600);
deviceStatusXml.append("\r\n")
.append("\r\n")
.append("DeviceStatus\r\n")
.append("" +sn + "\r\n")
- .append("" + channelId + "\r\n")
- .append("OK\r\n")
- .append(""+statusStr+"\r\n")
- .append("OK\r\n")
- .append("\r\n");
+ .append("" + channelId + "\r\n");
+ if (statusStr == null) {
+ deviceStatusXml.append("ERROR\r\n");
+ }else {
+ deviceStatusXml.append("OK\r\n")
+ .append(""+statusStr+"\r\n")
+ .append("OK\r\n");
+ }
+ deviceStatusXml.append("\r\n");
CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
index 12d84b7d2..4fa9d7b09 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
@@ -86,14 +86,14 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme
} else if (CmdType.CATALOG.equals(cmd)) {
processNotifyCatalogList(request, rootElement);
} else {
- log.info("接收到消息:" + cmd);
+ log.info("接收到消息:{}", cmd);
Response response = getMessageFactory().createResponse(200, request);
if (response != null) {
ExpiresHeader expireHeader = getHeaderFactory().createExpiresHeader(30);
response.setExpires(expireHeader);
}
- log.info("response : " + response);
+ log.info("response : {}", response);
sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response);
}
} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
@@ -126,9 +126,6 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme
.append("").append(deviceId).append("\r\n")
.append("OK\r\n")
.append("\r\n");
-
-
-
try {
int expires = request.getExpires().getExpires();
SIPResponse response = responseXmlAck(request, resultXml.toString(), platform, expires);
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java
index bbef28b88..b20596d61 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/query/cmd/DeviceStatusQueryMessageHandler.java
@@ -73,7 +73,13 @@ public class DeviceStatusQueryMessageHandler extends SIPRequestProcessorParent i
}
CommonGBChannel channel= channelService.queryOneWithPlatform(platform.getId(), channelId);
if (channel ==null){
- log.error("[平台没有该通道的使用权限]:platformId"+platform.getServerGBId()+" deviceID:"+channelId);
+ log.error("[平台没有该通道的使用权限]:platformId: {} deviceID:{}", platform.getServerGBId(), channelId);
+ // 上级平台查询本平台状态
+ try {
+ cmderFroPlatform.deviceStatusResponse(platform, channelId, sn, fromHeader.getTag(), null);
+ } catch (SipException | InvalidArgumentException | ParseException e) {
+ log.error("[命令发送失败] 国标级联 DeviceStatus查询回复: {}", e.getMessage());
+ }
return;
}
try {