From 14699711028f0d157eddfb0432e26ab91f1b4493 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 22 十一月 2022 15:02:25 +0800 Subject: [PATCH] 支持配置设备上线时自动更新查询通道,修复通道刷新进度展示 --- src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java | 167 ++++++------------------------------------------------- 1 files changed, 20 insertions(+), 147 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 8465d80..377b20f 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 @@ -1,12 +1,11 @@ package com.genersoft.iot.vmp.storager.impl; -import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.conf.SipConfig; +import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.gb28181.bean.*; 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.media.zlm.dto.StreamPushItem; import com.genersoft.iot.vmp.service.IGbStreamService; import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; @@ -26,7 +25,7 @@ import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; +import org.springframework.util.ObjectUtils; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -83,6 +82,9 @@ private GbStreamMapper gbStreamMapper; @Autowired + private UserSetting userSetting; + + @Autowired private PlatformCatalogMapper catalogMapper; @Autowired @@ -110,11 +112,11 @@ if (CollectionUtils.isEmpty(deviceChannelList)) { return false; } - List<DeviceChannel> allChannelInPlay = deviceChannelMapper.getAllChannelInPlay(); - Map<String,DeviceChannel> allChannelMapInPlay = new ConcurrentHashMap<>(); - if (allChannelInPlay.size() > 0) { - for (DeviceChannel deviceChannel : allChannelInPlay) { - allChannelMapInPlay.put(deviceChannel.getChannelId(), deviceChannel); + List<DeviceChannel> allChannels = deviceChannelMapper.queryAllChannels(deviceId); + Map<String,DeviceChannel> allChannelMap = new ConcurrentHashMap<>(); + if (allChannels.size() > 0) { + for (DeviceChannel deviceChannel : allChannels) { + allChannelMap.put(deviceChannel.getChannelId(), deviceChannel); } } TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); @@ -122,17 +124,18 @@ List<DeviceChannel> channels = new ArrayList<>(); StringBuilder stringBuilder = new StringBuilder(); Map<String, Integer> subContMap = new HashMap<>(); - if (deviceChannelList.size() > 1) { + if (deviceChannelList.size() > 0) { // 鏁版嵁鍘婚噸 Set<String> gbIdSet = new HashSet<>(); for (DeviceChannel deviceChannel : deviceChannelList) { if (!gbIdSet.contains(deviceChannel.getChannelId())) { gbIdSet.add(deviceChannel.getChannelId()); - if (allChannelMapInPlay.containsKey(deviceChannel.getChannelId())) { - deviceChannel.setStreamId(allChannelMapInPlay.get(deviceChannel.getChannelId()).getStreamId()); + if (allChannelMap.containsKey(deviceChannel.getChannelId())) { + deviceChannel.setStreamId(allChannelMap.get(deviceChannel.getChannelId()).getStreamId()); + deviceChannel.setHasAudio(allChannelMap.get(deviceChannel.getChannelId()).isHasAudio()); } channels.add(deviceChannel); - if (!StringUtils.isEmpty(deviceChannel.getParentId())) { + if (!ObjectUtils.isEmpty(deviceChannel.getParentId())) { if (subContMap.get(deviceChannel.getParentId()) == null) { subContMap.put(deviceChannel.getParentId(), 1); }else { @@ -152,8 +155,6 @@ } } - }else { - channels = deviceChannelList; } if (stringBuilder.length() > 0) { logger.info("[鐩綍鏌ヨ]鏀跺埌鐨勬暟鎹瓨鍦ㄩ噸澶嶏細 {}" , stringBuilder); @@ -296,79 +297,6 @@ } /** - * 鍒犻櫎璁惧 - * - * @param deviceId 璁惧ID - * @return true锛氬垹闄ゆ垚鍔� false锛氬垹闄ゅけ璐� - */ - @Override - public boolean delete(String deviceId) { - TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition); - boolean result = false; - try { - platformChannelMapper.delChannelForDeviceId(deviceId); - deviceChannelMapper.cleanChannelsByDeviceId(deviceId); - if ( deviceMapper.del(deviceId) < 0 ) { - //浜嬪姟鍥炴粴 - dataSourceTransactionManager.rollback(transactionStatus); - } - result = true; - dataSourceTransactionManager.commit(transactionStatus); //鎵嬪姩鎻愪氦 - }catch (Exception e) { - dataSourceTransactionManager.rollback(transactionStatus); - } - return result; - } - - /** - * 鏇存柊璁惧鍦ㄧ嚎 - * - * @param deviceId 璁惧ID - * @return true锛氭洿鏂版垚鍔� false锛氭洿鏂板け璐� - */ - @Override - public synchronized boolean online(String deviceId) { - Device device = deviceMapper.getDeviceByDeviceId(deviceId); - if (device == null) { - return false; - } - device.setOnline(1); - logger.info("鏇存柊璁惧鍦ㄧ嚎: " + deviceId); - redisCatchStorage.updateDevice(device); - return deviceMapper.update(device) > 0; - } - - /** - * 鏇存柊璁惧绂荤嚎 - * - * @param deviceId 璁惧ID - * @return true锛氭洿鏂版垚鍔� false锛氭洿鏂板け璐� - */ - @Override - public synchronized boolean outline(String deviceId) { - logger.info("鏇存柊璁惧绂荤嚎: " + deviceId); - Device device = deviceMapper.getDeviceByDeviceId(deviceId); - if (device == null) { - return false; - } - device.setOnline(0); - redisCatchStorage.updateDevice(device); - return deviceMapper.update(device) > 0; - } - - /** - * 鏇存柊鎵�鏈夎澶囩绾� - * - * @return true锛氭洿鏂版垚鍔� false锛氭洿鏂板け璐� - */ - @Override - public synchronized boolean outlineForAll() { - logger.info("鏇存柊鎵�鏈夎澶囩绾�"); - int result = deviceMapper.outlineForAll(); - return result > 0; - } - - /** * 娓呯┖閫氶亾 * @param deviceId */ @@ -454,13 +382,6 @@ // 鍒犻櫎鍏宠仈鐨勯�氶亾 platformChannelMapper.cleanChannelForGB(parentPlatform.getServerGBId()); return result > 0; - } - - @Override - public PageInfo<ParentPlatform> queryParentPlatformList(int page, int count) { - PageHelper.startPage(page, count); - List<ParentPlatform> all = platformMapper.getParentPlatformList(); - return new PageInfo<>(all); } @Override @@ -621,7 +542,7 @@ */ @Override public List<DeviceChannel> queryGbStreamListInPlatform(String platformId) { - return gbStreamMapper.queryGbStreamListInPlatform(platformId); + return gbStreamMapper.queryGbStreamListInPlatform(platformId, userSetting.isUsePushingAsStatus()); } /** @@ -636,44 +557,8 @@ } @Override - public void updateMediaList(List<StreamPushItem> streamPushItems) { - if (streamPushItems == null || streamPushItems.size() == 0) { - return; - } - logger.info("updateMediaList: " + streamPushItems.size()); - streamPushMapper.addAll(streamPushItems); - // TODO 寰呬紭鍖� - for (int i = 0; i < streamPushItems.size(); i++) { - int onlineResult = mediaOnline(streamPushItems.get(i).getApp(), streamPushItems.get(i).getStream()); - if (onlineResult > 0) { - // 鍙戦�佷笂绾块�氱煡 - eventPublisher.catalogEventPublishForStream(null, streamPushItems.get(i), CatalogEvent.ON); - } - } - } - - - - @Override - public void updateMedia(StreamPushItem streamPushItem) { - streamPushMapper.del(streamPushItem.getApp(), streamPushItem.getStream()); - streamPushMapper.add(streamPushItem); - mediaOffline(streamPushItem.getApp(), streamPushItem.getStream()); - } - - @Override public int removeMedia(String app, String stream) { return streamPushMapper.del(app, stream); - } - - @Override - public StreamPushItem getMedia(String app, String stream) { - return streamPushMapper.selectOne(app, stream); - } - - @Override - public void clearMediaList() { - streamPushMapper.clear(); } @Override @@ -683,7 +568,7 @@ if ("proxy".equals(gbStream.getStreamType())) { result = streamProxyMapper.updateStatus(app, stream, false); }else { - result = streamPushMapper.updateStatus(app, stream, false); + result = streamPushMapper.updatePushStatus(app, stream, false); } return result; } @@ -695,7 +580,7 @@ if ("proxy".equals(gbStream.getStreamType())) { result = streamProxyMapper.updateStatus(app, stream, true); }else { - result = streamPushMapper.updateStatus(app, stream, true); + result = streamPushMapper.updatePushStatus(app, stream, true); } return result; } @@ -738,13 +623,13 @@ return 0; } if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)) { - if (platformCatalog.getPlatformId().equals(platformCatalog.getParentId())) { + if (platform.getDeviceGBId().equals(platformCatalog.getParentId())) { // 绗竴灞傝妭鐐� platformCatalog.setBusinessGroupId(platformCatalog.getId()); platformCatalog.setParentId(platform.getDeviceGBId()); }else { // 鑾峰彇椤跺眰鐨� - PlatformCatalog topCatalog = getTopCatalog(platformCatalog.getParentId(), platformCatalog.getPlatformId()); + PlatformCatalog topCatalog = getTopCatalog(platformCatalog.getParentId(), platform.getDeviceGBId()); platformCatalog.setBusinessGroupId(topCatalog.getId()); } } @@ -873,18 +758,6 @@ return gbStreamMapper.updateStreamGPS(gpsMsgInfos); } - private List<DeviceChannel> getDeviceChannelListByChannelReduceList(List<ChannelReduce> channelReduces, String catalogId) { - List<DeviceChannel> deviceChannelList = new ArrayList<>(); - if (channelReduces.size() > 0){ - for (ChannelReduce channelReduce : channelReduces) { - DeviceChannel deviceChannel = queryChannel(channelReduce.getDeviceId(), channelReduce.getChannelId()); - deviceChannel.setParental(1); - deviceChannel.setParentId(catalogId); - deviceChannelList.add(deviceChannel); - } - } - return deviceChannelList; - } private DeviceChannel getDeviceChannelByCatalog(PlatformCatalog catalog) { ParentPlatform platform = platformMapper.getParentPlatByServerGBId(catalog.getPlatformId()); -- Gitblit v1.8.0