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 {