src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java
@@ -46,4 +46,9 @@ } return platforms; } public void removeAllSubscribe(String platformId) { mobilePositionMap.remove(platformId); catalogMap.remove(platformId); } } src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
@@ -128,7 +128,7 @@ if (gbStreams.size() > 0) { for (GbStream gbStream : gbStreams) { // 出现使用相同国标Id的视频流时,使用新流替换旧流, if (queryKey != null) { if (queryKey != null && gbStream.getApp().equals(mediaItem.getApp())) { Matcher matcherForStream = pattern.matcher(gbStream.getStream()); String queryKeyForStream = null; if (matcherForStream.find()) { //此处find()每次被调用后,会偏移到下一个匹配 @@ -144,12 +144,15 @@ } } } StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(transform.getApp(), transform.getStream()); if (streamProxyItem != null) { transform.setGbStreamId(streamProxyItem.getGbStreamId()); transform.setPlatformId(streamProxyItem.getPlatformId()); transform.setCatalogId(streamProxyItem.getCatalogId()); // StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(transform.getApp(), transform.getStream()); List<GbStream> gbStreamList = gbStreamMapper.selectByGBId(transform.getGbId()); if (gbStreamList != null && gbStreamList.size() == 1) { transform.setGbStreamId(gbStreamList.get(0).getGbStreamId()); transform.setPlatformId(gbStreamList.get(0).getPlatformId()); transform.setCatalogId(gbStreamList.get(0).getCatalogId()); transform.setGbId(gbStreamList.get(0).getGbId()); gbStreamMapper.update(transform); streamPushMapper.del(gbStreamList.get(0).getApp(), gbStreamList.get(0).getStream()); }else { transform.setCreateStamp(System.currentTimeMillis()); gbStreamMapper.add(transform); src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
@@ -33,6 +33,19 @@ "mediaServerId=#{mediaServerId}," + "status=${status} " + "WHERE app=#{app} AND stream=#{stream}") int updateByallAndStream(GbStream gbStream); @Update("UPDATE gb_stream " + "SET app=#{app}," + "stream=#{stream}," + "gbId=#{gbId}," + "name=#{name}," + "streamType=#{streamType}," + "longitude=#{longitude}, " + "latitude=#{latitude}," + "mediaServerId=#{mediaServerId}," + "status=${status} " + "WHERE gbStreamId=#{gbStreamId}") int update(GbStream gbStream); @Delete("DELETE FROM gb_stream WHERE app=#{app} AND stream=#{stream}") src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -772,7 +772,7 @@ try { if (streamProxyMapper.update(streamProxyItem) > 0) { if (!StringUtils.isEmpty(streamProxyItem.getGbId())) { if (gbStreamMapper.update(streamProxyItem) > 0) { if (gbStreamMapper.updateByallAndStream(streamProxyItem) > 0) { //事务回滚 dataSourceTransactionManager.rollback(transactionStatus); return false; src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
@@ -305,6 +305,8 @@ // 停止发送位置订阅定时任务 String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_MobilePosition_" + parentPlatform.getServerGBId(); dynamicTask.stop(key); // 删除缓存的订阅信息 subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId()); if (deleteResult) { return new ResponseEntity<>("success", HttpStatus.OK); } else { @@ -341,7 +343,6 @@ * @param platformId 上级平台ID * @param query 查询内容 * @param online 是否在线 * @param choosed 是否已选中 * @param channelType 通道类型 * @return */