Commit e752dbd1a7fdfbb2063c59470b41a8e5dd546c3d

Authored by 648540858
1 parent 66aac452

修复推流关联平台的bug again

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 */