From 6f2cd3ec08c9b11c20631bd3619e2102ba2c6b8c Mon Sep 17 00:00:00 2001
From: Lawrence <1934378145@qq.com>
Date: 星期一, 11 一月 2021 09:27:04 +0800
Subject: [PATCH] 修改通道在线/离线描述,避免歧义
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 98 ++++++++++++++++++++++++++++++++----------------
1 files changed, 65 insertions(+), 33 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 b976f3b..3ed22b2 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
@@ -10,6 +10,7 @@
import javax.sip.message.Request;
import javax.sip.message.Response;
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
@@ -47,6 +48,8 @@
private SIPCommander cmder;
private IVideoManagerStorager storager;
+
+ private IRedisCatchStorage redisCatchStorage;
private EventPublisher publisher;
@@ -184,10 +187,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);
}
@@ -197,45 +201,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"));
- if (itemDevice.element("Longitute")==null) {
+ if (XmlUtil.getText(itemDevice, "Longitude") == null || XmlUtil.getText(itemDevice, "Longitude") == "") {
deviceChannel.setLongitude(0.00);
} else {
deviceChannel.setLongitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
}
- if (itemDevice.element("Latitute") == null) {
+ if (XmlUtil.getText(itemDevice, "Latitude") == null || XmlUtil.getText(itemDevice, "Latitude") =="") {
deviceChannel.setLatitude(0.00);
} else {
deviceChannel.setLatitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
}
- if (itemDevice.element("PTZType") == null) {
+ if (XmlUtil.getText(itemDevice, "PTZType") == null || XmlUtil.getText(itemDevice, "PTZType") == "") {
deviceChannel.setPTZType(0);
} else {
deviceChannel.setPTZType(Integer.parseInt(XmlUtil.getText(itemDevice, "PTZType")));
}
- // 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")));
deviceChannel.setHasAudio(true); // 榛樿鍚湁闊抽锛屾挱鏀炬椂鍐嶆鏌ユ槸鍚︽湁闊抽鍙婃槸鍚AC
storager.updateChannel(device.getDeviceId(), deviceChannel);
}
@@ -281,7 +297,7 @@
device.setStreamMode("UDP");
}
storager.updateDevice(device);
- cmder.catalogQuery(device);
+ //cmder.catalogQuery(device, null);
// 鍥炲200 OK
responseAck(evt);
if (offLineDetector.isOnline(deviceId)) {
@@ -302,12 +318,16 @@
try {
Element rootElement = getRootElement(evt);
String deviceId = XmlUtil.getText(rootElement, "DeviceID");
- // 鍥炲200 OK
- responseAck(evt);
- if (offLineDetector.isOnline(deviceId)) {
- publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
- } else {
+ // 妫�鏌ヨ澶囨槸鍚﹀瓨鍦紝 涓嶅瓨鍦ㄥ垯涓嶅洖澶�
+ if (storager.exists(deviceId)) {
+ // 鍥炲200 OK
+ responseAck(evt);
+ if (offLineDetector.isOnline(deviceId)) {
+ publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
+ } else {
+ }
}
+
} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
e.printStackTrace();
}
@@ -328,7 +348,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) {
@@ -430,12 +454,13 @@
String NotifyType =XmlUtil.getText(rootElement, "NotifyType");
if (NotifyType.equals("121")){
logger.info("濯掍綋鎾斁瀹屾瘯锛岄�氱煡鍏虫祦");
- StreamInfo streamInfo = storager.queryPlaybackByDevice(deviceId, "*");
+ StreamInfo streamInfo = redisCatchStorage.queryPlaybackByDevice(deviceId, "*");
if (streamInfo != null) {
- storager.stopPlayback(streamInfo);
- cmder.streamByeCmd(streamInfo.getSsrc());
+ redisCatchStorage.stopPlayback(streamInfo);
+ cmder.streamByeCmd(streamInfo.getStreamId());
}
}
+
} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
e.printStackTrace();
}
@@ -486,4 +511,11 @@
this.offLineDetector = offLineDetector;
}
+ public IRedisCatchStorage getRedisCatchStorage() {
+ return redisCatchStorage;
+ }
+
+ public void setRedisCatchStorage(IRedisCatchStorage redisCatchStorage) {
+ this.redisCatchStorage = redisCatchStorage;
+ }
}
--
Gitblit v1.8.0