From a1398a56cc3587f08c28032a5c00f4c71b48e4f7 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 02 十二月 2021 09:33:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wvp-28181-2.0' into wvp-28181-2.0
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java | 221 +++++++++++++++++++++++++++++++++----------------------
1 files changed, 133 insertions(+), 88 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 88bf45a..faa3924 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
@@ -8,7 +8,8 @@
import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver;
import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
-import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorAbstract;
+import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
+import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
@@ -20,6 +21,7 @@
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
@@ -33,12 +35,10 @@
import java.util.Iterator;
/**
- * @description: Notify璇锋眰澶勭悊鍣�
- * @author: lawrencehj
- * @date: 2021骞�1鏈�27鏃�
+ * SIP鍛戒护绫诲瀷锛� NOTIFY璇锋眰
*/
@Component
-public class NotifyRequestProcessor extends SIPRequestProcessorAbstract {
+public class NotifyRequestProcessor extends SIPRequestProcessorParent implements InitializingBean, ISIPRequestProcessor {
private final static Logger logger = LoggerFactory.getLogger(NotifyRequestProcessor.class);
@@ -228,8 +228,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;
@@ -251,87 +249,51 @@
if (channelDeviceElement == null) {
continue;
}
- String channelDeviceId = channelDeviceElement.getTextTrim();
- 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);
- deviceChannel.setChannelId(channelDeviceId);
- // 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") || status.equals("OFFLINE")) {
- deviceChannel.setStatus(0);
+ Element eventElement = itemDevice.element("Event");
+ DeviceChannel channel = channelContentHander(itemDevice);
+ switch (eventElement.getText().toUpperCase()) {
+ case "ON" : // 涓婄嚎
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾銆恵}銆戜笂绾块�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.deviceChannelOnline(deviceId, channel.getChannelId());
+ // 鍥炲200 OK
+ responseAck(evt, Response.OK);
+ break;
+ case "OFF" : // 绂荤嚎
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾銆恵}銆戠绾块�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.deviceChannelOffline(deviceId, channel.getChannelId());
+ // 鍥炲200 OK
+ responseAck(evt, Response.OK);
+ break;
+ case "VLOST" : // 瑙嗛涓㈠け
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑閫氶亾銆恵}銆戣棰戜涪澶遍�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.deviceChannelOffline(deviceId, channel.getChannelId());
+ // 鍥炲200 OK
+ responseAck(evt, Response.OK);
+ break;
+ case "DEFECT" : // 鏁呴殰
+ // 鍥炲200 OK
+ responseAck(evt, Response.OK);
+ break;
+ case "ADD" : // 澧炲姞
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑澧炲姞閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.updateChannel(deviceId, channel);
+ responseAck(evt, Response.OK);
+ break;
+ case "DEL" : // 鍒犻櫎
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鍒犻櫎閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.delChannel(deviceId, channel.getChannelId());
+ responseAck(evt, Response.OK);
+ break;
+ case "UPDATE" : // 鏇存柊
+ logger.info("鏀跺埌鏉ヨ嚜璁惧銆恵}銆戠殑鏇存柊閫氶亾銆恵}銆戦�氱煡", device.getDeviceId(), channel.getChannelId());
+ storager.updateChannel(deviceId, channel);
+ responseAck(evt, Response.OK);
+ break;
+ default:
+ responseAck(evt, Response.BAD_REQUEST, "event not found");
+
}
- deviceChannel.setManufacture(XmlUtil.getText(itemDevice, "Manufacturer"));
- deviceChannel.setModel(XmlUtil.getText(itemDevice, "Model"));
- deviceChannel.setOwner(XmlUtil.getText(itemDevice, "Owner"));
- deviceChannel.setCivilCode(XmlUtil.getText(itemDevice, "CivilCode"));
- deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
- deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
- 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"));
- 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"));
- 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"));
- 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 (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Longitude"))) {
- deviceChannel.setLongitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
- } else {
- deviceChannel.setLongitude(0.00);
- }
- if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Latitude"))) {
- deviceChannel.setLatitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
- } else {
- deviceChannel.setLatitude(0.00);
- }
- 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);
}
// RequestMessage msg = new RequestMessage();
@@ -339,8 +301,7 @@
// msg.setType(DeferredResultHolder.CALLBACK_CMD_CATALOG);
// msg.setData(device);
// deferredResultHolder.invokeResult(msg);
- // 鍥炲200 OK
- responseAck(evt, Response.OK);
+
if (offLineDetector.isOnline(deviceId)) {
publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE);
}
@@ -350,6 +311,90 @@
}
}
+ 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")) {
+ deviceChannel.setStatus(1);
+ }
+ if (status.equals("OFF") || status.equals("Off") || status.equals("OFFLINE")) {
+ deviceChannel.setStatus(0);
+ }
+
+ deviceChannel.setManufacture(XmlUtil.getText(itemDevice, "Manufacturer"));
+ deviceChannel.setModel(XmlUtil.getText(itemDevice, "Model"));
+ deviceChannel.setOwner(XmlUtil.getText(itemDevice, "Owner"));
+ deviceChannel.setCivilCode(XmlUtil.getText(itemDevice, "CivilCode"));
+ deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
+ deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
+ 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"));
+ 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"));
+ 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"));
+ 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 (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Longitude"))) {
+ deviceChannel.setLongitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
+ } else {
+ deviceChannel.setLongitude(0.00);
+ }
+ if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Latitude"))) {
+ deviceChannel.setLatitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
+ } else {
+ deviceChannel.setLatitude(0.00);
+ }
+ 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
+ return deviceChannel;
+ }
--
Gitblit v1.8.0