From a42dda2bd3cc1cf8c20cc61e7ad9211eadecbaf3 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 24 二月 2022 16:55:06 +0800
Subject: [PATCH] 规范数据库,添加必要约束,优化通道批量导入功能

---
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java |   71 +++++++++++++++++++++++++----------
 1 files changed, 51 insertions(+), 20 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 1de1650..1d04c82 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
@@ -13,6 +13,8 @@
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 import com.genersoft.iot.vmp.storager.dao.*;
+import com.genersoft.iot.vmp.utils.node.ForestNodeMerger;
+import com.genersoft.iot.vmp.vmanager.bean.DeviceChannelTree;
 import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -172,7 +174,7 @@
 		List<DeviceChannel> updateChannels = new ArrayList<>();
 		HashMap<String, DeviceChannel> channelsInStore = new HashMap<>();
 		if (channels != null && channels.size() > 0) {
-			List<DeviceChannel> channelList = deviceChannelMapper.queryChannelsByDeviceId(deviceId);
+			List<DeviceChannel> channelList = deviceChannelMapper.queryChannels(deviceId, null, null, null, null);
 			if (channelList.size() == 0) {
 				for (DeviceChannel channel : channels) {
 					channel.setDeviceId(deviceId);
@@ -237,6 +239,7 @@
 		// 鏁版嵁鍘婚噸
 		List<DeviceChannel> channels = new ArrayList<>();
 		StringBuilder stringBuilder = new StringBuilder();
+		Map<String, Integer> subContMap = new HashMap<>();
 		if (deviceChannelList.size() > 1) {
 			// 鏁版嵁鍘婚噸
 			Set<String> gbIdSet = new HashSet<>();
@@ -244,10 +247,26 @@
 				if (!gbIdSet.contains(deviceChannel.getChannelId())) {
 					gbIdSet.add(deviceChannel.getChannelId());
 					channels.add(deviceChannel);
+					if (!StringUtils.isEmpty(deviceChannel.getParentId())) {
+						if (subContMap.get(deviceChannel.getParentId()) == null) {
+							subContMap.put(deviceChannel.getParentId(), 1);
+						}else {
+							Integer count = subContMap.get(deviceChannel.getParentId());
+							subContMap.put(deviceChannel.getParentId(), count++);
+						}
+					}
 				}else {
 					stringBuilder.append(deviceChannel.getChannelId() + ",");
 				}
 			}
+			if (channels.size() > 0) {
+				for (DeviceChannel channel : channels) {
+					if (subContMap.get(channel.getChannelId()) != null){
+						channel.setSubCount(subContMap.get(channel.getChannelId()));
+					}
+				}
+			}
+
 		}else {
 			channels = deviceChannelList;
 		}
@@ -326,6 +345,11 @@
 	@Override
 	public List<DeviceChannel> queryChannelsByDeviceIdWithStartAndLimit(String deviceId, String query, Boolean hasSubChannel, Boolean online, int start, int limit) {
 		return deviceChannelMapper.queryChannelsByDeviceIdWithStartAndLimit(deviceId, null, query, hasSubChannel, online, start, limit);
+	}
+
+	@Override
+	public List<DeviceChannelTree> tree(String deviceId) {
+		return ForestNodeMerger.merge(deviceChannelMapper.tree(deviceId));
 	}
 
 	@Override
@@ -568,16 +592,16 @@
 
 	@Override
 	public PageInfo<ChannelReduce> queryAllChannelList(int page, int count, String query, Boolean online,
-													   Boolean channelType, String platformId, Boolean inPlatform) {
+													   Boolean channelType, String platformId, String catalogId) {
 		PageHelper.startPage(page, count);
-		List<ChannelReduce> all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, platformId, inPlatform);
+		List<ChannelReduce> all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, platformId, catalogId);
 		return new PageInfo<>(all);
 	}
 
 	@Override
 	public List<ChannelReduce> queryChannelListInParentPlatform(String platformId) {
 
-		return deviceChannelMapper.queryChannelListInAll(null, null, null, platformId, true);
+		return deviceChannelMapper.queryChannelListInAll(null, null, null, platformId, platformId);
 	}
 
 	@Override
@@ -681,9 +705,18 @@
 		streamProxyItem.setCreateTime(now);
 		streamProxyItem.setCreateStamp(System.currentTimeMillis());
 		try {
-			if (gbStreamMapper.add(streamProxyItem)<0 || streamProxyMapper.add(streamProxyItem) < 0) {
+			if (streamProxyMapper.add(streamProxyItem) > 0) {
+				if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
+					if (gbStreamMapper.add(streamProxyItem) > 0) {
+						//浜嬪姟鍥炴粴
+						dataSourceTransactionManager.rollback(transactionStatus);
+						return false;
+					}
+				}
+			}else {
 				//浜嬪姟鍥炴粴
 				dataSourceTransactionManager.rollback(transactionStatus);
+				return false;
 			}
 			result = true;
 			dataSourceTransactionManager.commit(transactionStatus);     //鎵嬪姩鎻愪氦
@@ -707,10 +740,20 @@
 		boolean result = false;
 		streamProxyItem.setStreamType("proxy");
 		try {
-			if (gbStreamMapper.update(streamProxyItem)<0 || streamProxyMapper.update(streamProxyItem) < 0) {
+			if (streamProxyMapper.update(streamProxyItem) > 0) {
+				if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
+					if (gbStreamMapper.update(streamProxyItem) > 0) {
+						//浜嬪姟鍥炴粴
+						dataSourceTransactionManager.rollback(transactionStatus);
+						return false;
+					}
+				}
+			} else {
 				//浜嬪姟鍥炴粴
 				dataSourceTransactionManager.rollback(transactionStatus);
+				return false;
 			}
+
 			dataSourceTransactionManager.commit(transactionStatus);     //鎵嬪姩鎻愪氦
 			result = true;
 		}catch (Exception e) {
@@ -848,20 +891,8 @@
 	}
 
 	@Override
-	public void updateMediaServer(MediaServerItem mediaServerItem) {
-		String now = this.format.format(System.currentTimeMillis());
-		mediaServerItem.setUpdateTime(now);
-		if (mediaServerMapper.queryOne(mediaServerItem.getId()) != null) {
-			mediaServerMapper.update(mediaServerItem);
-		}else {
-			mediaServerItem.setCreateTime(now);
-			mediaServerMapper.add(mediaServerItem);
-		}
-	}
-
-	@Override
-	public List<StreamProxyItem> getStreamProxyListForEnableInMediaServer(String id, boolean enable) {
-		return streamProxyMapper.selectForEnableInMediaServer(id, enable);
+	public List<StreamProxyItem> getStreamProxyListForEnableInMediaServer(String id, boolean enable, boolean status) {
+		return streamProxyMapper.selectForEnableInMediaServer(id, enable, status);
 	}
 
 

--
Gitblit v1.8.0