From bdc0f83e29281bb46c5fe7a6eb6562f7f0e616af Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 14 二月 2023 15:12:53 +0800
Subject: [PATCH] 启动时清理无效的设备缓存数据,避免设备无法注册

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

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
index 451c589..2ffec09 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/SipRunner.java
@@ -69,6 +69,26 @@
         // 閲嶇疆cseq璁℃暟
         redisCatchStorage.resetAllCSEQ();
         // 娓呯悊redis
+        // 娓呯悊鏁版嵁搴撲笉瀛樺湪浣嗘槸redis涓瓨鍦ㄧ殑鏁版嵁
+        List<Device> devicesInDb = deviceService.getAll();
+        if (devicesInDb.size() == 0) {
+            redisCatchStorage.removeAllDevice();
+        }else {
+            List<Device> devicesInRedis = redisCatchStorage.getAllDevices();
+            if (devicesInRedis.size() > 0) {
+                Map<String, Device> deviceMapInDb = new HashMap<>();
+                devicesInDb.parallelStream().forEach(device -> {
+                    deviceMapInDb.put(device.getDeviceId(), device);
+                });
+                devicesInRedis.parallelStream().forEach(device -> {
+                    if (deviceMapInDb.get(device.getDeviceId()) == null) {
+                        redisCatchStorage.removeDevice(device.getDeviceId());
+                    }
+                });
+            }
+        }
+
+
         // 鏌ユ壘鍥芥爣鎺ㄦ祦
         List<SendRtpItem> sendRtpItems = redisCatchStorage.queryAllSendRTPServer();
         if (sendRtpItems.size() > 0) {

--
Gitblit v1.8.0