From f559e6a39565f17688e44c9d881c7a8217be116b Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 17 十一月 2021 17:01:59 +0800
Subject: [PATCH] 完善目录订阅

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java |   31 +++++++++++++++----------------
 1 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
index de97c12..95e0af2 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
@@ -230,8 +230,6 @@
 			String deviceId = SipUtils.getUserIdFromFromHeader(fromHeader);
 
 			Element rootElement = getRootElement(evt);
-			Element deviceIdElement = rootElement.element("DeviceID");
-			String channelId = deviceIdElement.getText();
 			Device device = storager.queryVideoDevice(deviceId);
 			if (device == null) {
 				return;
@@ -254,22 +252,23 @@
 						continue;
 					}
 					Element eventElement = itemDevice.element("Event");
+					DeviceChannel channel = channelContentHander(itemDevice);
 					switch (eventElement.getText().toUpperCase()) {
 						case "ON" : // 涓婄嚎
-							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾涓婄嚎銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
-							storager.deviceChannelOnline(deviceId, channelId);
+							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾銆恵}銆戜笂绾块�氱煡", device.getDeviceId(), channel.getChannelId());
+							storager.deviceChannelOnline(deviceId, channel.getChannelId());
 							// 鍥炲200 OK
 							responseAck(evt, Response.OK);
 							break;
 						case "OFF" : // 绂荤嚎
-							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾绂荤嚎銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
-							storager.deviceChannelOffline(deviceId, channelId);
+							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾銆恵}銆戠绾块�氱煡", device.getDeviceId(), channel.getChannelId());
+							storager.deviceChannelOffline(deviceId, channel.getChannelId());
 							// 鍥炲200 OK
 							responseAck(evt, Response.OK);
 							break;
 						case "VLOST" : // 瑙嗛涓㈠け
-							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾瑙嗛涓㈠け銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
-							storager.deviceChannelOffline(deviceId, channelId);
+							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾銆恵}銆戣棰戜涪澶遍�氱煡", device.getDeviceId(), channel.getChannelId());
+							storager.deviceChannelOffline(deviceId, channel.getChannelId());
 							// 鍥炲200 OK
 							responseAck(evt, Response.OK);
 							break;
@@ -278,19 +277,17 @@
 							responseAck(evt, Response.OK);
 							break;
 						case "ADD" : // 澧炲姞
-							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑澧炲姞閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
-							DeviceChannel deviceChannel = channelContentHander(itemDevice, channelId);
-							storager.updateChannel(deviceId, deviceChannel);
+							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑澧炲姞閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
+							storager.updateChannel(deviceId, channel);
 							responseAck(evt, Response.OK);
 							break;
 						case "DEL" : // 鍒犻櫎
-							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鍒犻櫎閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
-							storager.delChannel(deviceId, channelId);
+							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鍒犻櫎閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
+							storager.delChannel(deviceId, channel.getChannelId());
 							responseAck(evt, Response.OK);
 							break;
 						case "UPDATE" : // 鏇存柊
-							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鏇存柊閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channelId);
-							DeviceChannel channel = channelContentHander(itemDevice, channelId);
+							logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鏇存柊閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
 							storager.updateChannel(deviceId, channel);
 							responseAck(evt, Response.OK);
 							break;
@@ -316,13 +313,15 @@
 		}
 	}
 
-	public DeviceChannel channelContentHander(Element itemDevice, String channelId){
+	public DeviceChannel channelContentHander(Element itemDevice){
 		Element channdelNameElement = itemDevice.element("Name");
 		String channelName = channdelNameElement != null ? channdelNameElement.getTextTrim().toString() : "";
 		Element statusElement = itemDevice.element("Status");
 		String status = statusElement != null ? statusElement.getTextTrim().toString() : "ON";
 		DeviceChannel deviceChannel = new DeviceChannel();
 		deviceChannel.setName(channelName);
+		Element channdelIdElement = itemDevice.element("DeviceID");
+		String channelId = channdelIdElement != null ? channdelIdElement.getTextTrim().toString() : "";
 		deviceChannel.setChannelId(channelId);
 		// ONLINE OFFLINE HIKVISION DS-7716N-E4 NVR鐨勫吋瀹规�у鐞�
 		if (status.equals("ON") || status.equals("On") || status.equals("ONLINE")) {

--
Gitblit v1.8.0