From 66eda32ab97d6e94e9f274d6faa4df586c452dfb Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期日, 25 六月 2023 10:18:29 +0800
Subject: [PATCH] 优化端口预占用

---
 src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java |   67 ++++++++++++++++++++++++---------
 1 files changed, 49 insertions(+), 18 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 f5151f8..2ffb4bc 100644
--- 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,7 +6,6 @@
 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;
@@ -14,6 +13,7 @@
 import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo;
 import com.genersoft.iot.vmp.utils.DateUtil;
 import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
+import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.slf4j.Logger;
@@ -90,12 +90,6 @@
 	@Autowired
     private PlatformGbStreamMapper platformGbStreamMapper;
 
-	@Autowired
-    private IGbStreamService gbStreamService;
-
-	@Autowired
-    private ParentPlatformMapper parentPlatformMapper;
-
 	/**
 	 * 鏍规嵁璁惧ID鍒ゆ柇璁惧鏄惁瀛樺湪
 	 *
@@ -133,6 +127,15 @@
 					if (allChannelMap.containsKey(deviceChannel.getChannelId())) {
 						deviceChannel.setStreamId(allChannelMap.get(deviceChannel.getChannelId()).getStreamId());
 						deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).isHasAudio());
+						if (allChannelMap.get(deviceChannel.getChannelId()).getStatus() !=deviceChannel.getStatus()){
+							List<String> strings = platformChannelMapper.queryParentPlatformByChannelId(deviceChannel.getChannelId());
+							if (!CollectionUtils.isEmpty(strings)){
+								strings.forEach(platformId->{
+									eventPublisher.catalogEventPublish(platformId, deviceChannel, deviceChannel.getStatus()==1?CatalogEvent.ON:CatalogEvent.OFF);
+								});
+							}
+
+						}
 					}
 					channels.add(deviceChannel);
 					if (!ObjectUtils.isEmpty(deviceChannel.getParentId())) {
@@ -174,10 +177,10 @@
 						if (i + limitCount > channels.size()) {
 							toIndex = channels.size();
 						}
-						result = result || deviceChannelMapper.batchAdd(channels.subList(i, toIndex)) < 0;
+						result = result || deviceChannelMapper.batchAddOrUpdate(channels.subList(i, toIndex)) < 0;
 					}
 				}else {
-					result = result || deviceChannelMapper.batchAdd(channels) < 0;
+					result = result || deviceChannelMapper.batchAddOrUpdate(channels) < 0;
 				}
 			}
 			if (result) {
@@ -187,7 +190,7 @@
 			dataSourceTransactionManager.commit(transactionStatus);     //鎵嬪姩鎻愪氦
 			return true;
 		}catch (Exception e) {
-			e.printStackTrace();
+			logger.error("鏈鐞嗙殑寮傚父 ", e);
 			dataSourceTransactionManager.rollback(transactionStatus);
 			return false;
 		}
@@ -224,8 +227,10 @@
 					if (allChannelMap.containsKey(deviceChannel.getChannelId())) {
 						deviceChannel.setStreamId(allChannelMap.get(deviceChannel.getChannelId()).getStreamId());
 						deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).isHasAudio());
+						deviceChannel.setUpdateTime(DateUtil.getNow());
 						updateChannels.add(deviceChannel);
 					}else {
+						deviceChannel.setCreateTime(DateUtil.getNow());
 						addChannels.add(deviceChannel);
 					}
 					if (!ObjectUtils.isEmpty(deviceChannel.getParentId())) {
@@ -273,10 +278,10 @@
 						if (i + limitCount > addChannels.size()) {
 							toIndex = addChannels.size();
 						}
-						result = result || deviceChannelMapper.batchAdd(addChannels.subList(i, toIndex)) < 0;
+						result = result || deviceChannelMapper.batchAddOrUpdate(addChannels.subList(i, toIndex)) < 0;
 					}
 				}else {
-					result = result || deviceChannelMapper.batchAdd(addChannels) < 0;
+					result = result || deviceChannelMapper.batchAddOrUpdate(addChannels) < 0;
 				}
 			}
 			if (updateChannels.size() > 0) {
@@ -301,7 +306,7 @@
 			}
 			return true;
 		}catch (Exception e) {
-			e.printStackTrace();
+			logger.error("鏈鐞嗙殑寮傚父 ", e);
 			dataSourceTransactionManager.rollback(transactionStatus);
 			return false;
 		}
@@ -355,14 +360,19 @@
 	}
 
 	@Override
-	public List<DeviceChannel> queryChannelsByDeviceIdWithStartAndLimit(String deviceId, String query, Boolean hasSubChannel, Boolean online, int start, int limit,List<String> channelIds) {
-		return deviceChannelMapper.queryChannelsByDeviceIdWithStartAndLimit(deviceId, null, query, hasSubChannel, online, start, limit,channelIds);
+	public List<DeviceChannelExtend> queryChannelsByDeviceIdWithStartAndLimit(String deviceId, List<String> channelIds, String query, Boolean hasSubChannel, Boolean online, int start, int limit) {
+		return deviceChannelMapper.queryChannelsByDeviceIdWithStartAndLimit(deviceId, channelIds, null, query, hasSubChannel, online, start, limit);
 	}
 
 
 	@Override
 	public List<DeviceChannel> queryChannelsByDeviceId(String deviceId,Boolean online,List<String> channelIds) {
 		return deviceChannelMapper.queryChannels(deviceId, null,null, null, online,channelIds);
+	}
+
+	@Override
+	public List<DeviceChannelExtend> queryChannelsByDeviceId(String deviceId, List<String> channelIds, Boolean online) {
+		return deviceChannelMapper.queryChannelsWithDeviceInfo(deviceId, null,null, null, online,channelIds);
 	}
 
 	@Override
@@ -424,9 +434,6 @@
 	 */
 	@Override
 	public synchronized boolean insertMobilePosition(MobilePosition mobilePosition) {
-		if (mobilePosition.getDeviceId().equals(mobilePosition.getChannelId())) {
-			mobilePosition.setChannelId(null);
-		}
 		return deviceMobilePositionMapper.insertNewPosition(mobilePosition) > 0;
 	}
 
@@ -508,6 +515,16 @@
 	}
 
 	@Override
+	public List<ParentPlatform> queryEnablePlatformListWithAsMessageChannel() {
+		return platformMapper.queryEnablePlatformListWithAsMessageChannel();
+	}
+
+	@Override
+	public List<Device> queryDeviceWithAsMessageChannel() {
+		return deviceMapper.queryDeviceWithAsMessageChannel();
+	}
+
+	@Override
 	public void outlineForAllParentPlatform() {
 		platformMapper.outlineForAllParentPlatform();
 	}
@@ -584,6 +601,20 @@
 
 	}
 
+	@Override
+	public Device queryDeviceInfoByPlatformIdAndChannelId(String platformId, String channelId) {
+		List<Device> devices = platformChannelMapper.queryDeviceInfoByPlatformIdAndChannelId(platformId, channelId);
+		if (devices.size() > 1) {
+			// 鍑虹幇闀垮害澶т簬0鐨勬椂鍊欒偗瀹氭槸鍥芥爣閫氶亾鐨処D閲嶅浜�
+			logger.warn("鍥芥爣ID瀛樺湪閲嶅锛歿}", channelId);
+		}
+		if (devices.size() == 0) {
+			return null;
+		}else {
+			return devices.get(0);
+		}
+	}
+
 	/**
 	 * 鏌ヨ鏈�鏂扮Щ鍔ㄤ綅缃�
 	 * @param deviceId

--
Gitblit v1.8.0