From 82adc0cb23f3ee47322e78889cdaba57e9309000 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 21 三月 2023 15:55:24 +0800
Subject: [PATCH] 完善语音对讲级联

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java |   35 +++++++++++++----------------------
 1 files changed, 13 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
index 82cd552..40d1dcc 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
@@ -1,6 +1,6 @@
 package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.cmd;
 
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.genersoft.iot.vmp.conf.UserSetting;
 import com.genersoft.iot.vmp.gb28181.bean.*;
 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
@@ -11,6 +11,7 @@
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
 import com.genersoft.iot.vmp.utils.DateUtil;
+import gov.nist.javax.sip.message.SIPRequest;
 import org.dom4j.DocumentException;
 import org.dom4j.Element;
 import org.slf4j.Logger;
@@ -21,7 +22,6 @@
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
-import org.springframework.util.StringUtils;
 
 import javax.sip.InvalidArgumentException;
 import javax.sip.RequestEvent;
@@ -56,8 +56,6 @@
     @Autowired
     private IDeviceChannelService deviceChannelService;
 
-    private boolean taskQueueHandlerRun = false;
-
     private ConcurrentLinkedQueue<SipMsgInfo> taskQueue = new ConcurrentLinkedQueue<>();
 
     @Qualifier("taskExecutor")
@@ -72,21 +70,22 @@
     @Override
     public void handForDevice(RequestEvent evt, Device device, Element rootElement) {
 
+        boolean isEmpty = taskQueue.isEmpty();
         taskQueue.offer(new SipMsgInfo(evt, device, rootElement));
-        if (!taskQueueHandlerRun) {
-            taskQueueHandlerRun = true;
+        // 鍥炲200 OK
+        try {
+            responseAck((SIPRequest) evt.getRequest(), Response.OK);
+        } catch (SipException | InvalidArgumentException | ParseException e) {
+            logger.error("[鍛戒护鍙戦�佸け璐 绉诲姩浣嶇疆閫氱煡鍥炲: {}", e.getMessage());
+        }
+        if (isEmpty) {
             taskExecutor.execute(() -> {
                 while (!taskQueue.isEmpty()) {
                     SipMsgInfo sipMsgInfo = taskQueue.poll();
                     try {
                         Element rootElementAfterCharset = getRootElement(sipMsgInfo.getEvt(), sipMsgInfo.getDevice().getCharset());
                         if (rootElementAfterCharset == null) {
-                            try {
-                                logger.warn("[ 绉诲姩璁惧浣嶇疆鏁版嵁閫氱煡 ] content cannot be null, {}", sipMsgInfo.getEvt().getRequest());
-                                responseAck(getServerTransaction(sipMsgInfo.getEvt()), Response.BAD_REQUEST);
-                            } catch (SipException | InvalidArgumentException | ParseException e) {
-                                logger.error("[鍛戒护鍙戦�佸け璐 绉诲姩璁惧浣嶇疆鏁版嵁閫氱煡 鍐呭涓虹┖: {}", e.getMessage());
-                            }
+                            logger.warn("[绉诲姩浣嶇疆閫氱煡] {}澶勭悊澶辫触锛屾湭璇嗗埆鍒颁俊鎭綋", device.getDeviceId());
                             continue;
                         }
                         MobilePosition mobilePosition = new MobilePosition();
@@ -136,12 +135,6 @@
                             storager.insertMobilePosition(mobilePosition);
                         }
                         storager.updateChannelPosition(deviceChannel);
-                        //鍥炲 200 OK
-                        try {
-                            responseAck(getServerTransaction(sipMsgInfo.getEvt()), Response.OK);
-                        } catch (SipException | InvalidArgumentException | ParseException e) {
-                            logger.error("[鍛戒护鍙戦�佸け璐 绉诲姩璁惧浣嶇疆鏁版嵁鍥炲200: {}", e.getMessage());
-                        }
 
                         // 鍙戦�乺edis娑堟伅銆� 閫氱煡浣嶇疆淇℃伅鐨勫彉鍖�
                         JSONObject jsonObject = new JSONObject();
@@ -157,14 +150,12 @@
 
                     } catch (DocumentException e) {
                         e.printStackTrace();
+                    } catch (Exception e) {
+                        logger.warn("[绉诲姩浣嶇疆閫氱煡] 鍙戠幇鏈鐞嗙殑寮傚父, {}\r\n{}",e.getMessage(), evt.getRequest());
                     }
-
                 }
-                taskQueueHandlerRun = false;
             });
         }
-
-
     }
 
     @Override

--
Gitblit v1.8.0