From 9d19f6b9d6b361d8b93671a553973289b40d9d33 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 22 一月 2021 09:52:11 +0800
Subject: [PATCH] Merge pull request #46 from lawrencehj/wvp-28181-2.0

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java |   58 ++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 44 insertions(+), 14 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 1860ec7..22ed34a 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
@@ -15,6 +15,8 @@
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommanderFroPlatform;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
+import gov.nist.javax.sip.address.AddressImpl;
+import gov.nist.javax.sip.address.SipUri;
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.Element;
@@ -162,12 +164,19 @@
 	private void processMessageCatalogList(RequestEvent evt) {
 		try {
 			Element rootElement = getRootElement(evt);
+			String name = rootElement.getName();
 			Element deviceIdElement = rootElement.element("DeviceID");
 			String deviceId = deviceIdElement.getText();
 			Element deviceListElement = rootElement.element("DeviceList");
-			if (deviceListElement == null) { // 瀛樺湪DeviceList鍒欎负鍝嶅簲 catalog锛� 涓嶅瓨鍦―eviceList鍒欎负鏌ヨ璇锋眰
-				// TODO 鍚庣画灏嗕唬鐮佹媶鍒�
-				ParentPlatform parentPlatform = storager.queryParentPlatById(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.queryParentPlatById(platformId);
 				if (parentPlatform == null) {
 					response404Ack(evt);
 					return;
@@ -177,9 +186,8 @@
 
 					Element snElement = rootElement.element("SN");
 					String sn = snElement.getText();
-					FromHeader fromHeader = (FromHeader)evt.getRequest().getHeader(FromHeader.NAME);
 					// 鍑嗗鍥炲閫氶亾淇℃伅
-					List<ChannelReduce> channelReduces = storager.queryChannelListInParentPlatform(parentPlatform.getDeviceGBId());
+					List<ChannelReduce> channelReduces = storager.queryChannelListInParentPlatform(parentPlatform.getServerGBId());
 					if (channelReduces.size() >0 ) {
 						for (ChannelReduce channelReduce : channelReduces) {
 							DeviceChannel deviceChannel = storager.queryChannel(channelReduce.getDeviceId(), channelReduce.getChannelId());
@@ -316,19 +324,41 @@
 				// storager.queryChannel(deviceId)
 				return;
 			}
-			device.setName(XmlUtil.getText(rootElement, "DeviceName"));
-			device.setManufacturer(XmlUtil.getText(rootElement, "Manufacturer"));
-			device.setModel(XmlUtil.getText(rootElement, "Model"));
-			device.setFirmware(XmlUtil.getText(rootElement, "Firmware"));
-			if (StringUtils.isEmpty(device.getStreamMode())) {
-				device.setStreamMode("UDP");
+
+			DeviceAlarm deviceAlarm = new DeviceAlarm();
+			deviceAlarm.setDeviceId(deviceId);
+			deviceAlarm.setAlarmPriority(XmlUtil.getText(rootElement, "AlarmPriority"));
+			deviceAlarm.setAlarmMethod(XmlUtil.getText(rootElement, "AlarmMethod"));
+			deviceAlarm.setAlarmTime(XmlUtil.getText(rootElement, "AlarmTime"));
+			if (XmlUtil.getText(rootElement, "AlarmDescription") == null) {
+				deviceAlarm.setAlarmDescription("");
+			} else {
+				deviceAlarm.setAlarmDescription(XmlUtil.getText(rootElement, "AlarmDescription"));
 			}
-			storager.updateDevice(device);
+			if (XmlUtil.getText(rootElement, "Longitude") == null || XmlUtil.getText(rootElement, "Longitude") == "") {
+				deviceAlarm.setLongitude(0.00);
+			} else {
+				deviceAlarm.setLongitude(Double.parseDouble(XmlUtil.getText(rootElement, "Longitude")));
+			}
+			if (XmlUtil.getText(rootElement, "Latitude") == null || XmlUtil.getText(rootElement, "Latitude") =="") {
+				deviceAlarm.setLatitude(0.00);
+			} else {
+				deviceAlarm.setLatitude(Double.parseDouble(XmlUtil.getText(rootElement, "Latitude")));
+			}
+
+			// device.setName(XmlUtil.getText(rootElement, "DeviceName"));
+			// device.setManufacturer(XmlUtil.getText(rootElement, "Manufacturer"));
+			// device.setModel(XmlUtil.getText(rootElement, "Model"));
+			// device.setFirmware(XmlUtil.getText(rootElement, "Firmware"));
+			// if (StringUtils.isEmpty(device.getStreamMode())) {
+			// 	device.setStreamMode("UDP");
+			// }
+			// storager.updateDevice(device);
 			//cmder.catalogQuery(device, null);
 			// 鍥炲200 OK
 			responseAck(evt);
 			if (offLineDetector.isOnline(deviceId)) {
-				publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
+				publisher.deviceAlarmEventPublish(deviceAlarm);
 			}
 		} catch (DocumentException | SipException | InvalidArgumentException | ParseException e) {
 			// } catch (DocumentException e) {
@@ -497,7 +527,7 @@
 	}
 
 	/***
-	 * 鍥炲200 OK
+	 * 鍥炲404
 	 * @param evt
 	 * @throws SipException
 	 * @throws InvalidArgumentException

--
Gitblit v1.8.0