Commit e752dbd1a7fdfbb2063c59470b41a8e5dd546c3d
1 parent
66aac452
修复推流关联平台的bug again
Showing
5 changed files
with
30 additions
and
8 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java
| @@ -46,4 +46,9 @@ public class SubscribeHolder { | @@ -46,4 +46,9 @@ public class SubscribeHolder { | ||
| 46 | } | 46 | } |
| 47 | return platforms; | 47 | return platforms; |
| 48 | } | 48 | } |
| 49 | + | ||
| 50 | + public void removeAllSubscribe(String platformId) { | ||
| 51 | + mobilePositionMap.remove(platformId); | ||
| 52 | + catalogMap.remove(platformId); | ||
| 53 | + } | ||
| 49 | } | 54 | } |
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
| @@ -128,7 +128,7 @@ public class ZLMMediaListManager { | @@ -128,7 +128,7 @@ public class ZLMMediaListManager { | ||
| 128 | if (gbStreams.size() > 0) { | 128 | if (gbStreams.size() > 0) { |
| 129 | for (GbStream gbStream : gbStreams) { | 129 | for (GbStream gbStream : gbStreams) { |
| 130 | // 出现使用相同国标Id的视频流时,使用新流替换旧流, | 130 | // 出现使用相同国标Id的视频流时,使用新流替换旧流, |
| 131 | - if (queryKey != null) { | 131 | + if (queryKey != null && gbStream.getApp().equals(mediaItem.getApp())) { |
| 132 | Matcher matcherForStream = pattern.matcher(gbStream.getStream()); | 132 | Matcher matcherForStream = pattern.matcher(gbStream.getStream()); |
| 133 | String queryKeyForStream = null; | 133 | String queryKeyForStream = null; |
| 134 | if (matcherForStream.find()) { //此处find()每次被调用后,会偏移到下一个匹配 | 134 | if (matcherForStream.find()) { //此处find()每次被调用后,会偏移到下一个匹配 |
| @@ -144,12 +144,15 @@ public class ZLMMediaListManager { | @@ -144,12 +144,15 @@ public class ZLMMediaListManager { | ||
| 144 | } | 144 | } |
| 145 | } | 145 | } |
| 146 | } | 146 | } |
| 147 | - StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(transform.getApp(), transform.getStream()); | ||
| 148 | - if (streamProxyItem != null) { | ||
| 149 | - transform.setGbStreamId(streamProxyItem.getGbStreamId()); | ||
| 150 | - transform.setPlatformId(streamProxyItem.getPlatformId()); | ||
| 151 | - transform.setCatalogId(streamProxyItem.getCatalogId()); | 147 | + // StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(transform.getApp(), transform.getStream()); |
| 148 | + List<GbStream> gbStreamList = gbStreamMapper.selectByGBId(transform.getGbId()); | ||
| 149 | + if (gbStreamList != null && gbStreamList.size() == 1) { | ||
| 150 | + transform.setGbStreamId(gbStreamList.get(0).getGbStreamId()); | ||
| 151 | + transform.setPlatformId(gbStreamList.get(0).getPlatformId()); | ||
| 152 | + transform.setCatalogId(gbStreamList.get(0).getCatalogId()); | ||
| 153 | + transform.setGbId(gbStreamList.get(0).getGbId()); | ||
| 152 | gbStreamMapper.update(transform); | 154 | gbStreamMapper.update(transform); |
| 155 | + streamPushMapper.del(gbStreamList.get(0).getApp(), gbStreamList.get(0).getStream()); | ||
| 153 | }else { | 156 | }else { |
| 154 | transform.setCreateStamp(System.currentTimeMillis()); | 157 | transform.setCreateStamp(System.currentTimeMillis()); |
| 155 | gbStreamMapper.add(transform); | 158 | gbStreamMapper.add(transform); |
src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
| @@ -33,6 +33,19 @@ public interface GbStreamMapper { | @@ -33,6 +33,19 @@ public interface GbStreamMapper { | ||
| 33 | "mediaServerId=#{mediaServerId}," + | 33 | "mediaServerId=#{mediaServerId}," + |
| 34 | "status=${status} " + | 34 | "status=${status} " + |
| 35 | "WHERE app=#{app} AND stream=#{stream}") | 35 | "WHERE app=#{app} AND stream=#{stream}") |
| 36 | + int updateByallAndStream(GbStream gbStream); | ||
| 37 | + | ||
| 38 | + @Update("UPDATE gb_stream " + | ||
| 39 | + "SET app=#{app}," + | ||
| 40 | + "stream=#{stream}," + | ||
| 41 | + "gbId=#{gbId}," + | ||
| 42 | + "name=#{name}," + | ||
| 43 | + "streamType=#{streamType}," + | ||
| 44 | + "longitude=#{longitude}, " + | ||
| 45 | + "latitude=#{latitude}," + | ||
| 46 | + "mediaServerId=#{mediaServerId}," + | ||
| 47 | + "status=${status} " + | ||
| 48 | + "WHERE gbStreamId=#{gbStreamId}") | ||
| 36 | int update(GbStream gbStream); | 49 | int update(GbStream gbStream); |
| 37 | 50 | ||
| 38 | @Delete("DELETE FROM gb_stream WHERE app=#{app} AND stream=#{stream}") | 51 | @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 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { | @@ -772,7 +772,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager { | ||
| 772 | try { | 772 | try { |
| 773 | if (streamProxyMapper.update(streamProxyItem) > 0) { | 773 | if (streamProxyMapper.update(streamProxyItem) > 0) { |
| 774 | if (!StringUtils.isEmpty(streamProxyItem.getGbId())) { | 774 | if (!StringUtils.isEmpty(streamProxyItem.getGbId())) { |
| 775 | - if (gbStreamMapper.update(streamProxyItem) > 0) { | 775 | + if (gbStreamMapper.updateByallAndStream(streamProxyItem) > 0) { |
| 776 | //事务回滚 | 776 | //事务回滚 |
| 777 | dataSourceTransactionManager.rollback(transactionStatus); | 777 | dataSourceTransactionManager.rollback(transactionStatus); |
| 778 | return false; | 778 | return false; |
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
| @@ -305,6 +305,8 @@ public class PlatformController { | @@ -305,6 +305,8 @@ public class PlatformController { | ||
| 305 | // 停止发送位置订阅定时任务 | 305 | // 停止发送位置订阅定时任务 |
| 306 | String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_MobilePosition_" + parentPlatform.getServerGBId(); | 306 | String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_MobilePosition_" + parentPlatform.getServerGBId(); |
| 307 | dynamicTask.stop(key); | 307 | dynamicTask.stop(key); |
| 308 | + // 删除缓存的订阅信息 | ||
| 309 | + subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId()); | ||
| 308 | if (deleteResult) { | 310 | if (deleteResult) { |
| 309 | return new ResponseEntity<>("success", HttpStatus.OK); | 311 | return new ResponseEntity<>("success", HttpStatus.OK); |
| 310 | } else { | 312 | } else { |
| @@ -341,7 +343,6 @@ public class PlatformController { | @@ -341,7 +343,6 @@ public class PlatformController { | ||
| 341 | * @param platformId 上级平台ID | 343 | * @param platformId 上级平台ID |
| 342 | * @param query 查询内容 | 344 | * @param query 查询内容 |
| 343 | * @param online 是否在线 | 345 | * @param online 是否在线 |
| 344 | - * @param choosed 是否已选中 | ||
| 345 | * @param channelType 通道类型 | 346 | * @param channelType 通道类型 |
| 346 | * @return | 347 | * @return |
| 347 | */ | 348 | */ |