From 2673fbb0bf7af6405c544cc8a56f17d03018c59a Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 12 十月 2023 17:08:59 +0800
Subject: [PATCH] Merge branch 'wvp-28181-2.0' into main-dev

---
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java |   55 +++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 41 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
index d3922f7..ea4d590 100755
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
@@ -6,6 +6,7 @@
 import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
 import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
 import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
+import com.genersoft.iot.vmp.service.IGbStreamService;
 import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
@@ -16,6 +17,7 @@
 import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sun.org.apache.xml.internal.resolver.Catalog;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -71,6 +73,9 @@
 
 	@Autowired
     private PlatformChannelMapper platformChannelMapper;
+
+	@Autowired
+	private PlatformCatalogMapper platformCatalogMapper;
 
 	@Autowired
     private StreamProxyMapper streamProxyMapper;
@@ -159,7 +164,7 @@
 				}
 			}
 		}
-		if (channels.size() > 0) {
+		if (!channels.isEmpty()) {
 			for (DeviceChannel channel : channels) {
 				if (subContMap.get(channel.getChannelId()) != null){
 					Integer count = subContMap.get(channel.getChannelId());
@@ -180,19 +185,7 @@
 		}
 		try {
 			int limitCount = 50;
-			int cleanChannelsResult = 0;
-			if (channels.size() > limitCount) {
-				for (int i = 0; i < channels.size(); i += limitCount) {
-					int toIndex = i + limitCount;
-					if (i + limitCount > channels.size()) {
-						toIndex = channels.size();
-					}
-					cleanChannelsResult += this.deviceChannelMapper.cleanChannelsNotInList(deviceId, channels.subList(i, toIndex));
-				}
-			} else {
-				cleanChannelsResult = this.deviceChannelMapper.cleanChannelsNotInList(deviceId, channels);
-			}
-			boolean result = cleanChannelsResult < 0;
+			boolean result = false;
 			if (!result && addChannels.size() > 0) {
 				if (addChannels.size() > limitCount) {
 					for (int i = 0; i < addChannels.size(); i += limitCount) {
@@ -903,9 +896,43 @@
 			eventPublisher.catalogEventPublish(platformId, deviceChannelList, CatalogEvent.DEL);
 		}
 		int delChannelresult = platformChannelMapper.delByCatalogId(platformId, id);
+		// 鏌ョ湅鏄惁瀛樺湪瀛愮洰褰曪紝濡傛灉瀛樺湪涓�骞跺垹闄�
+		List<String> allChildCatalog = getAllChildCatalog(id, platformId);
+		if (!allChildCatalog.isEmpty()) {
+			int limitCount = 50;
+			if (allChildCatalog.size() > limitCount) {
+				for (int i = 0; i < allChildCatalog.size(); i += limitCount) {
+					int toIndex = i + limitCount;
+					if (i + limitCount > allChildCatalog.size()) {
+						toIndex = allChildCatalog.size();
+					}
+					delChannelresult += platformCatalogMapper.deleteAll(platformId, allChildCatalog.subList(i, toIndex));
+				}
+			}else {
+				delChannelresult += platformCatalogMapper.deleteAll(platformId, allChildCatalog);
+			}
+		}
 		return delresult + delChannelresult + delStreamresult;
 	}
 
+	private List<String> getAllChildCatalog(String id, String platformId) {
+		List<String> catalogList = platformCatalogMapper.queryCatalogFromParent(id, platformId);
+		List<String> catalogListChild = new ArrayList<>();
+		if (catalogList != null && !catalogList.isEmpty()) {
+			for (String childId : catalogList) {
+				List<String> allChildCatalog = getAllChildCatalog(childId, platformId);
+				if (allChildCatalog != null && !allChildCatalog.isEmpty()) {
+					catalogListChild.addAll(allChildCatalog);
+				}
+
+			}
+		}
+		if (!catalogListChild.isEmpty()) {
+			catalogList.addAll(catalogListChild);
+		}
+		return catalogList;
+	}
+
 
 	@Override
 	public int updateCatalog(PlatformCatalog platformCatalog) {

--
Gitblit v1.8.0