From c33bf822cce59667be80ba0bb45499498501d161 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 04 十一月 2021 15:56:24 +0800
Subject: [PATCH] 修复级联的通道查询以及设备信息查询

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java |   30 ++++++++++++------------------
 1 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
index 285ccd3..ae01a70 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -492,11 +492,8 @@
 			String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
 			// 鏌ヨ璁惧鏄惁瀛樺湪
 			Device device = storager.queryVideoDevice(deviceId);
-			if (device == null) {
-				logger.warn("澶勭悊DeviceInfo璁惧淇℃伅Message鏃舵湭鎵惧埌璁惧淇℃伅");
-				response404Ack(evt);
-				return;
-			}
+			ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(deviceId);
+
 			Element rootElement = getRootElement(evt);
 			String requestName = rootElement.getName();
 			Element deviceIdElement = rootElement.element("DeviceID");
@@ -508,20 +505,20 @@
 			if (requestName.equals("Query")) {
 				logger.info("鎺ユ敹鍒癉eviceInfo鏌ヨ娑堟伅");
 				FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
-				String platformId = ((SipUri) fromHeader.getAddress().getURI()).getUser();
-					if (platformId == null) {
+				if (parentPlatform == null) {
 					response404Ack(evt);
 					return;
 				} else {
 					// 鍥炲200 OK
 					responseAck(evt);
 					String sn = rootElement.element("SN").getText();
-					ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
 					cmderFroPlatform.deviceInfoResponse(parentPlatform, sn, fromHeader.getTag());
 				}
 			} else {
 				logger.debug("鎺ユ敹鍒癉eviceInfo搴旂瓟娑堟伅");
 				if (device == null) {
+					logger.warn("澶勭悊DeviceInfo璁惧淇℃伅Message鏃舵湭鎵惧埌璁惧淇℃伅");
+					response404Ack(evt);
 					return;
 				}
 
@@ -561,11 +558,8 @@
 			String deviceId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
 			// 鏌ヨ璁惧鏄惁瀛樺湪
 			Device device = storager.queryVideoDevice(deviceId);
-			if (device == null) {
-				logger.warn("澶勭悊DeviceInfo璁惧淇℃伅Message鏃舵湭鎵惧埌璁惧淇℃伅");
-				response404Ack(evt);
-				return;
-			}
+			ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(deviceId);
+
 
 			Element rootElement = getRootElement(evt);
 			String name = rootElement.getName();
@@ -574,13 +568,8 @@
 			Element deviceListElement = rootElement.element("DeviceList");
 			String key = DeferredResultHolder.CALLBACK_CMD_CATALOG + deviceId;
 			FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
-			AddressImpl address = (AddressImpl) fromHeader.getAddress();
-			SipUri uri = (SipUri) address.getURI();
-			String platformId = uri.getUser();
-			// if (deviceListElement == null) { // 瀛樺湪DeviceList鍒欎负鍝嶅簲 catalog锛� 涓嶅瓨鍦―eviceList鍒欎负鏌ヨ璇锋眰
 			if (name.equalsIgnoreCase("Query")) { // 鍖哄垎鏄疪esponse鈥斺�旀煡璇㈠搷搴旓紝杩樻槸Query鈥斺�旀煡璇㈣姹�
 				// TODO 鍚庣画灏嗕唬鐮佹媶鍒�
-				ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
 				if (parentPlatform == null) {
 					response404Ack(evt);
 					return;
@@ -634,6 +623,11 @@
 
 
 			} else {
+				if (device == null) {
+					logger.warn("鏀跺埌catalog璁惧鐩綍鍒楄〃璇锋眰鏃舵湭鎵惧埌璁惧淇℃伅");
+					response404Ack(evt);
+					return;
+				}
 				deviceListElement = getRootElement(evt, device.getCharset()).element("DeviceList");
 				Iterator<Element> deviceListIterator = deviceListElement.elementIterator();
 				if (deviceListIterator != null) {

--
Gitblit v1.8.0