From d883de7f9a13f14ca68727e6548b9e89535f7614 Mon Sep 17 00:00:00 2001
From: quangz <quangz@bluewisdom.com.cn>
Date: 星期六, 02 四月 2022 08:06:30 +0800
Subject: [PATCH] 修复ConcurrentModificationException

---
 src/main/java/com/genersoft/iot/vmp/gb28181/task/GPSSubscribeTask.java |   41 ++++++++++++++++++++---------------------
 1 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/GPSSubscribeTask.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/GPSSubscribeTask.java
index fc3d027..a2716e3 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/task/GPSSubscribeTask.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/GPSSubscribeTask.java
@@ -1,12 +1,14 @@
 package com.genersoft.iot.vmp.gb28181.task;
 
+import com.alibaba.fastjson.JSON;
 import com.genersoft.iot.vmp.gb28181.bean.GbStream;
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.bean.SubscribeHolder;
 import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
 import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
-import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
 
 import java.text.SimpleDateFormat;
 import java.util.List;
@@ -14,29 +16,31 @@
 public class GPSSubscribeTask implements Runnable{
 
     private IRedisCatchStorage redisCatchStorage;
-    private IVideoManagerStorager storager;
+    private IVideoManagerStorage storager;
     private ISIPCommanderForPlatform sipCommanderForPlatform;
+    private SubscribeHolder subscribeHolder;
     private String platformId;
     private String sn;
     private String key;
 
     private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
-    public GPSSubscribeTask(IRedisCatchStorage redisCatchStorage, ISIPCommanderForPlatform sipCommanderForPlatform, IVideoManagerStorager storager, String platformId, String sn, String key) {
+    public GPSSubscribeTask(IRedisCatchStorage redisCatchStorage, ISIPCommanderForPlatform sipCommanderForPlatform, IVideoManagerStorage storager, String platformId, String sn, String key, SubscribeHolder subscribeInfo) {
         this.redisCatchStorage = redisCatchStorage;
         this.storager = storager;
         this.platformId = platformId;
         this.sn = sn;
         this.key = key;
         this.sipCommanderForPlatform = sipCommanderForPlatform;
+        this.subscribeHolder = subscribeInfo;
     }
 
     @Override
     public void run() {
 
-        SubscribeInfo subscribe = redisCatchStorage.getSubscribe(key);
+        SubscribeInfo subscribe = subscribeHolder.getMobilePositionSubscribe(platformId);
+
         if (subscribe != null) {
-            System.out.println("鍙戦�丟PS娑堟伅");
             ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId);
             if (parentPlatform == null || parentPlatform.isStatus()) {
                 // TODO 鏆傛椂鍙鐞嗚棰戞祦鐨勫洖澶�,鍚庣画澧炲姞瀵瑰浗鏍囪澶囩殑鏀寔
@@ -45,26 +49,21 @@
                     for (GbStream gbStream : gbStreams) {
                         String gbId = gbStream.getGbId();
                         GPSMsgInfo gpsMsgInfo = redisCatchStorage.getGpsMsgInfo(gbId);
-                        if (gbStream.isStatus()) {
-                            if (gpsMsgInfo != null) {
-                                // 鍙戦�丟PS娑堟伅
-                                sipCommanderForPlatform.sendMobilePosition(parentPlatform, gpsMsgInfo, subscribe);
-                            }else {
-                                // 娌℃湁鍦╮edis鎵惧埌鏂扮殑娑堟伅灏变娇鐢ㄦ暟鎹簱鐨勬秷鎭�
-                                gpsMsgInfo = new GPSMsgInfo();
-                                gpsMsgInfo.setId(gbId);
-                                gpsMsgInfo.setLat(gbStream.getLongitude());
-                                gpsMsgInfo.setLng(gbStream.getLongitude());
-                                // 鍙戦�丟PS娑堟伅
-                                sipCommanderForPlatform.sendMobilePosition(parentPlatform, gpsMsgInfo, subscribe);
-                            }
+                        if (gpsMsgInfo != null) {
+                            // 鍙戦�丟PS娑堟伅
+                            sipCommanderForPlatform.sendNotifyMobilePosition(parentPlatform, gpsMsgInfo, subscribe);
+                        }else {
+                            // 娌℃湁鍦╮edis鎵惧埌鏂扮殑娑堟伅灏变娇鐢ㄦ暟鎹簱鐨勬秷鎭�
+                            gpsMsgInfo = new GPSMsgInfo();
+                            gpsMsgInfo.setId(gbId);
+                            gpsMsgInfo.setLat(gbStream.getLongitude());
+                            gpsMsgInfo.setLng(gbStream.getLongitude());
+                            // 鍙戦�丟PS娑堟伅
+                            sipCommanderForPlatform.sendNotifyMobilePosition(parentPlatform, gpsMsgInfo, subscribe);
                         }
-
                     }
                 }
             }
         }
-
-
     }
 }

--
Gitblit v1.8.0