mrjackwang
2022-08-06 28df05e261c0d63050d0bd938b7a6a2c2938b8e9
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
@@ -92,39 +92,36 @@
   @Override
   public void process(RequestEvent evt) {
      try {
         taskQueue.offer(new HandlerCatchData(evt, null, null));
         responseAck(evt, Response.OK);
         if (!taskQueueHandlerRun) {
            taskQueueHandlerRun = true;
            taskExecutor.execute(()-> {
                     while (!taskQueue.isEmpty()) {
                        try {
                           HandlerCatchData take = taskQueue.poll();
                           Element rootElement = getRootElement(take.getEvt());
                           String cmd = XmlUtil.getText(rootElement, "CmdType");
               while (!taskQueue.isEmpty()) {
                  try {
                     HandlerCatchData take = taskQueue.poll();
                     Element rootElement = getRootElement(take.getEvt());
                     String cmd = XmlUtil.getText(rootElement, "CmdType");
                           if (CmdType.CATALOG.equals(cmd)) {
                              logger.info("接收到Catalog通知");
                              processNotifyCatalogList(take.getEvt());
                           } else if (CmdType.ALARM.equals(cmd)) {
                              logger.info("接收到Alarm通知");
                              processNotifyAlarm(take.getEvt());
                           } else if (CmdType.MOBILE_POSITION.equals(cmd)) {
                              logger.info("接收到MobilePosition通知");
                              processNotifyMobilePosition(take.getEvt());
                           } else {
                              logger.info("接收到消息:" + cmd);
                           }
                        } catch (DocumentException e) {
                           throw new RuntimeException(e);
                        }
                     if (CmdType.CATALOG.equals(cmd)) {
                        logger.info("接收到Catalog通知");
                        processNotifyCatalogList(take.getEvt());
                     } else if (CmdType.ALARM.equals(cmd)) {
                        logger.info("接收到Alarm通知");
                        processNotifyAlarm(take.getEvt());
                     } else if (CmdType.MOBILE_POSITION.equals(cmd)) {
                        logger.info("接收到MobilePosition通知");
                        processNotifyMobilePosition(take.getEvt());
                     } else {
                        logger.info("接收到消息:" + cmd);
                     }
                  taskQueueHandlerRun = false;
                  });
                  } catch (DocumentException e) {
                     throw new RuntimeException(e);
                  }
               }
            taskQueueHandlerRun = false;
            });
         }
      } catch (SipException | InvalidArgumentException | ParseException e) {
         e.printStackTrace();
      }
@@ -174,7 +171,7 @@
         } else {
            mobilePosition.setAltitude(0.0);
         }
         logger.info("[收到 移动位置订阅]:{}/{}->{}.{}", mobilePosition.getDeviceId(), mobilePosition.getChannelId(),
         logger.info("[收到移动位置订阅通知]:{}/{}->{}.{}", mobilePosition.getDeviceId(), mobilePosition.getChannelId(),
               mobilePosition.getLongitude(), mobilePosition.getLatitude());
         mobilePosition.setReportSource("Mobile Position");
@@ -318,7 +315,7 @@
         Device device = redisCatchStorage.getDevice(deviceId);
         if (device == null || device.getOnline() == 0) {
            logger.warn("[收到 目录订阅]:{}, 但是设备已经离线", (device != null ? device.getDeviceId():"" ));
            logger.warn("[收到目录订阅]:{}, 但是设备已经离线", (device != null ? device.getDeviceId():"" ));
            return;
         }
         Element rootElement = getRootElement(evt, device.getCharset());
@@ -339,14 +336,14 @@
               Element eventElement = itemDevice.element("Event");
               String event;
               if (eventElement == null) {
                  logger.warn("[收到 目录订阅]:{}, 但是Event为空, 设为默认值 ADD", (device != null ? device.getDeviceId():"" ));
                  logger.warn("[收到目录订阅]:{}, 但是Event为空, 设为默认值 ADD", (device != null ? device.getDeviceId():"" ));
                  event = CatalogEvent.ADD;
               }else {
                  event = eventElement.getText().toUpperCase();
               }
               DeviceChannel channel = XmlUtil.channelContentHander(itemDevice, device, event);
               channel.setDeviceId(device.getDeviceId());
               logger.info("[收到 目录订阅]:{}/{}", device.getDeviceId(), channel.getChannelId());
               logger.info("[收到目录订阅]:{}/{}", device.getDeviceId(), channel.getChannelId());
               switch (event) {
                  case CatalogEvent.ON:
                     // 上线