From bc0319b3f338412aa18f73bd749057e9ea3a7125 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 13 十二月 2021 17:20:23 +0800
Subject: [PATCH] 将device信息写入redis以提高sip处理速度

---
 src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java |   43 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
index 63596b2..ecbddc4 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushServiceImpl.java
@@ -188,10 +188,23 @@
                     streamInfoPushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());
                 }
             }
-            Collection<StreamPushItem> offlinePushItems = pushItemMap.values();
+            List<StreamPushItem> offlinePushItems = new ArrayList<>(pushItemMap.values());
             if (offlinePushItems.size() > 0) {
                 String type = "PUSH";
-                streamPushMapper.delAll(new ArrayList<>(offlinePushItems));
+                int runLimit = 300;
+                if (offlinePushItems.size() > runLimit) {
+                    for (int i = 0; i < offlinePushItems.size(); i += runLimit) {
+                        int toIndex = i + runLimit;
+                        if (i + runLimit > offlinePushItems.size()) {
+                            toIndex = offlinePushItems.size();
+                        }
+                        List<StreamPushItem> streamPushItemsSub = offlinePushItems.subList(i, toIndex);
+                        streamPushMapper.delAll(streamPushItemsSub);
+                    }
+                }else {
+                    streamPushMapper.delAll(offlinePushItems);
+                }
+
             }
             Collection<StreamInfo> offlineStreamInfoItems = streamInfoPushItemMap.values();
             if (offlineStreamInfoItems.size() > 0) {
@@ -242,4 +255,30 @@
     public void clean() {
 
     }
+
+    @Override
+    public boolean saveToRandomGB() {
+        List<StreamPushItem> streamPushItems = streamPushMapper.selectAll();
+        long gbId = 100001;
+        for (StreamPushItem streamPushItem : streamPushItems) {
+            streamPushItem.setStreamType("push");
+            streamPushItem.setStatus(true);
+            streamPushItem.setGbId("34020000004111" + gbId);
+            gbId ++;
+        }
+        int  limitCount = 30;
+
+        if (streamPushItems.size() > limitCount) {
+            for (int i = 0; i < streamPushItems.size(); i += limitCount) {
+                int toIndex = i + limitCount;
+                if (i + limitCount > streamPushItems.size()) {
+                    toIndex = streamPushItems.size();
+                }
+                gbStreamMapper.batchAdd(streamPushItems.subList(i, toIndex));
+            }
+        }else {
+            gbStreamMapper.batchAdd(streamPushItems);
+        }
+        return true;
+    }
 }

--
Gitblit v1.8.0