648540858
2021-11-17 80bfd9ce026e67dd2eb86c519b5b1b70e3cc7d12
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")) {