From 44d216100b45c3337c593ee82ee68e7e0f35d24b Mon Sep 17 00:00:00 2001
From: Lawrence <1934378145@qq.com>
Date: 星期三, 16 十二月 2020 20:29:19 +0800
Subject: [PATCH] 与master分支同步

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java |  111 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 89 insertions(+), 22 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 ee142d7..c987f5e 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
@@ -34,7 +34,7 @@
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 import com.genersoft.iot.vmp.utils.redis.RedisUtil;
 import org.springframework.util.StringUtils;
-
+import com.genersoft.iot.vmp.common.StreamInfo;
 /**
  * @Description:MESSAGE璇锋眰澶勭悊鍣�
  * @author: swwheihei
@@ -64,6 +64,7 @@
 	private static final String MESSAGE_DEVICE_INFO = "DeviceInfo";
 	private static final String MESSAGE_ALARM = "Alarm";
 	private static final String MESSAGE_RECORD_INFO = "RecordInfo";
+	private static final String MESSAGE_MEDIA_STATUS = "MediaStatus";
 	// private static final String MESSAGE_BROADCAST = "Broadcast";
 	// private static final String MESSAGE_DEVICE_STATUS = "DeviceStatus";
 	// private static final String MESSAGE_MOBILE_POSITION = "MobilePosition";
@@ -98,6 +99,11 @@
 			} else if (MESSAGE_RECORD_INFO.equals(cmd)) {
 				logger.info("鎺ユ敹鍒癛ecordInfo娑堟伅");
 				processMessageRecordInfo(evt);
+			}else if (MESSAGE_MEDIA_STATUS.equals(cmd)) {
+				logger.info("鎺ユ敹鍒癕ediaStatus娑堟伅");
+				processMessageMediaStatus(evt);
+			} else {
+				logger.info("鎺ユ敹鍒版秷鎭細" + cmd);
 			}
 		} catch (DocumentException e) {
 			e.printStackTrace();
@@ -178,10 +184,11 @@
 					DeviceChannel deviceChannel = new DeviceChannel();
 					deviceChannel.setName(channelName);
 					deviceChannel.setChannelId(channelDeviceId);
-					if (status.equals("ON") || status.equals("On")) {
+					// ONLINE OFFLINE  HIKVISION DS-7716N-E4 NVR鐨勫吋瀹规�у鐞�
+					if (status.equals("ON") || status.equals("On") || status.equals("ONLINE")) {
 						deviceChannel.setStatus(1);
 					}
-					if (status.equals("OFF") || status.equals("Off")) {
+					if (status.equals("OFF") || status.equals("Off") || status.equals("OFFLINE")) {
 						deviceChannel.setStatus(0);
 					}
 
@@ -191,30 +198,57 @@
 					deviceChannel.setCivilCode(XmlUtil.getText(itemDevice, "CivilCode"));
 					deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
 					deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
-					deviceChannel.setParental(itemDevice.element("Parental") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "Parental")));
+					if (XmlUtil.getText(itemDevice, "Parental") == null || XmlUtil.getText(itemDevice, "Parental") == "") {
+						deviceChannel.setParental(0);
+					} else {
+						deviceChannel.setParental(Integer.parseInt(XmlUtil.getText(itemDevice, "Parental")));
+					} 
 					deviceChannel.setParentId(XmlUtil.getText(itemDevice, "ParentID"));
-					deviceChannel.setSafetyWay(itemDevice.element("SafetyWay") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "SafetyWay")));
-					deviceChannel.setRegisterWay(itemDevice.element("RegisterWay") == null ? 1
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "RegisterWay")));
+					if (XmlUtil.getText(itemDevice, "SafetyWay") == null || XmlUtil.getText(itemDevice, "SafetyWay")== "") {
+						deviceChannel.setSafetyWay(0);
+					} else {
+						deviceChannel.setSafetyWay(Integer.parseInt(XmlUtil.getText(itemDevice, "SafetyWay")));
+					}
+					if (XmlUtil.getText(itemDevice, "RegisterWay") == null || XmlUtil.getText(itemDevice, "RegisterWay") =="") {
+						deviceChannel.setRegisterWay(1);
+					} else {
+						deviceChannel.setRegisterWay(Integer.parseInt(XmlUtil.getText(itemDevice, "RegisterWay")));
+					}
 					deviceChannel.setCertNum(XmlUtil.getText(itemDevice, "CertNum"));
-					deviceChannel.setCertifiable(itemDevice.element("Certifiable") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "Certifiable")));
-					deviceChannel.setErrCode(itemDevice.element("ErrCode") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "ErrCode")));
+					if (XmlUtil.getText(itemDevice, "Certifiable") == null || XmlUtil.getText(itemDevice, "Certifiable") == "") {
+						deviceChannel.setCertifiable(0);
+					} else {
+						deviceChannel.setCertifiable(Integer.parseInt(XmlUtil.getText(itemDevice, "Certifiable")));
+					}
+					if (XmlUtil.getText(itemDevice, "ErrCode") == null || XmlUtil.getText(itemDevice, "ErrCode") == "") {
+						deviceChannel.setErrCode(0);
+					} else {
+						deviceChannel.setErrCode(Integer.parseInt(XmlUtil.getText(itemDevice, "ErrCode")));
+					}
 					deviceChannel.setEndTime(XmlUtil.getText(itemDevice, "EndTime"));
 					deviceChannel.setSecrecy(XmlUtil.getText(itemDevice, "Secrecy"));
 					deviceChannel.setIpAddress(XmlUtil.getText(itemDevice, "IPAddress"));
-					deviceChannel.setPort(itemDevice.element("Port") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "Port")));
+					if (XmlUtil.getText(itemDevice, "Port") == null || XmlUtil.getText(itemDevice, "Port") =="") {
+						deviceChannel.setPort(0);
+					} else {
+						deviceChannel.setPort(Integer.parseInt(XmlUtil.getText(itemDevice, "Port")));
+					}
 					deviceChannel.setPassword(XmlUtil.getText(itemDevice, "Password"));
-					deviceChannel.setLongitude(itemDevice.element("Longitude") == null ? 0.00
-							: Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
-					deviceChannel.setLatitude(itemDevice.element("Latitude") == null ? 0.00
-							: Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
-					deviceChannel.setPTZType(itemDevice.element("PTZType") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "PTZType")));
+					if (XmlUtil.getText(itemDevice, "Longitude") == null || XmlUtil.getText(itemDevice, "Longitude") == "") {
+						deviceChannel.setLongitude(0.00);
+					} else {
+						deviceChannel.setLongitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
+					}
+					if (XmlUtil.getText(itemDevice, "Latitude") == null || XmlUtil.getText(itemDevice, "Latitude") =="") {
+						deviceChannel.setLatitude(0.00);
+					} else {
+						deviceChannel.setLatitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
+					}
+					if (XmlUtil.getText(itemDevice, "PTZType") == null || XmlUtil.getText(itemDevice, "PTZType") == "") {
+						deviceChannel.setPTZType(0);
+					} else {
+						deviceChannel.setPTZType(Integer.parseInt(XmlUtil.getText(itemDevice, "PTZType")));
+					}
 					deviceChannel.setHasAudio(true); // 榛樿鍚湁闊抽锛屾挱鏀炬椂鍐嶆鏌ユ槸鍚︽湁闊抽鍙婃槸鍚AC
 					storager.updateChannel(device.getDeviceId(), deviceChannel);
 				}
@@ -307,7 +341,11 @@
 			String deviceId = deviceIdElement.getText().toString();
 			recordInfo.setDeviceId(deviceId);
 			recordInfo.setName(XmlUtil.getText(rootElement, "Name"));
-			recordInfo.setSumNum(Integer.parseInt(XmlUtil.getText(rootElement, "SumNum")));
+			if (XmlUtil.getText(rootElement, "SumNum")== null || XmlUtil.getText(rootElement, "SumNum") =="") {
+				recordInfo.setSumNum(0);
+			} else {
+				recordInfo.setSumNum(Integer.parseInt(XmlUtil.getText(rootElement, "SumNum")));
+			}
 			String sn = XmlUtil.getText(rootElement, "SN");
 			Element recordListElement = rootElement.element("RecordList");
 			if (recordListElement == null || recordInfo.getSumNum() == 0) {
@@ -399,6 +437,35 @@
 		}
 	}
 
+
+	private void processMessageMediaStatus(RequestEvent evt){
+		try {
+			// 鍥炲200 OK
+			responseAck(evt);
+			Element rootElement = getRootElement(evt);
+			String deviceId = XmlUtil.getText(rootElement, "DeviceID");
+			String NotifyType =XmlUtil.getText(rootElement, "NotifyType");
+			if (NotifyType.equals("121")){
+				logger.info("濯掍綋鎾斁瀹屾瘯锛岄�氱煡鍏虫祦");
+				StreamInfo streamInfo = storager.queryPlaybackByDevice(deviceId, "*");
+				if (streamInfo != null) {
+					storager.stopPlayback(streamInfo);
+					cmder.streamByeCmd(streamInfo.getSsrc());
+				}
+			}
+		} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
+			e.printStackTrace();
+		}
+	}
+
+
+	/***
+	 * 鍥炲200 OK
+	 * @param evt
+	 * @throws SipException
+	 * @throws InvalidArgumentException
+	 * @throws ParseException
+	 */
 	private void responseAck(RequestEvent evt) throws SipException, InvalidArgumentException, ParseException {
 		Response response = getMessageFactory().createResponse(Response.OK, evt.getRequest());
 		getServerTransaction(evt).sendResponse(response);

--
Gitblit v1.8.0