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/storager/impl/VideoManagerStoragerImpl.java |   31 +++++++++++++++++++++++++++++--
 1 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
index b7454a8..f1a9f9a 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -110,6 +110,7 @@
 	 */
 	@Override
 	public synchronized boolean create(Device device) {
+		redisCatchStorage.updateDevice(device);
 		return deviceMapper.add(device) > 0;
 	}
 
@@ -128,10 +129,13 @@
 		Device deviceByDeviceId = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
 		if (deviceByDeviceId == null) {
 			device.setCreateTime(now);
+			redisCatchStorage.updateDevice(device);
 			return deviceMapper.add(device) > 0;
 		}else {
+			redisCatchStorage.updateDevice(device);
 			return deviceMapper.update(device) > 0;
 		}
+
 
 	}
 
@@ -185,11 +189,32 @@
 					}
 				}
 			}
+			int limitCount = 300;
 			if (addChannels.size() > 0) {
-				deviceChannelMapper.batchAdd(addChannels);
+				if (addChannels.size() > limitCount) {
+					for (int i = 0; i < addChannels.size(); i += limitCount) {
+						int toIndex = i + limitCount;
+						if (i + limitCount > addChannels.size()) {
+							toIndex = addChannels.size();
+						}
+						deviceChannelMapper.batchAdd(addChannels.subList(i, toIndex));
+					}
+				}else {
+					deviceChannelMapper.batchAdd(addChannels);
+				}
 			}
 			if (updateChannels.size() > 0) {
-				deviceChannelMapper.batchUpdate(updateChannels);
+				if (updateChannels.size() > limitCount) {
+					for (int i = 0; i < updateChannels.size(); i += limitCount) {
+						int toIndex = i + limitCount;
+						if (i + limitCount > updateChannels.size()) {
+							toIndex = updateChannels.size();
+						}
+						deviceChannelMapper.batchAdd(updateChannels.subList(i, toIndex));
+					}
+				}else {
+					deviceChannelMapper.batchUpdate(updateChannels);
+				}
 			}
 		}
 	}
@@ -322,6 +347,7 @@
 		}
 		device.setOnline(1);
 		logger.info("鏇存柊璁惧鍦ㄧ嚎: " + deviceId);
+		redisCatchStorage.updateDevice(device);
 		return deviceMapper.update(device) > 0;
 	}
 
@@ -337,6 +363,7 @@
 		Device device = deviceMapper.getDeviceByDeviceId(deviceId);
 		if (device == null) return false;
 		device.setOnline(0);
+		redisCatchStorage.updateDevice(device);
 		return deviceMapper.update(device) > 0;
 	}
 

--
Gitblit v1.8.0