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 46 }
47 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 128 if (gbStreams.size() > 0) {
129 129 for (GbStream gbStream : gbStreams) {
130 130 // 出现使用相同国标Id的视频流时,使用新流替换旧流,
131   - if (queryKey != null) {
  131 + if (queryKey != null && gbStream.getApp().equals(mediaItem.getApp())) {
132 132 Matcher matcherForStream = pattern.matcher(gbStream.getStream());
133 133 String queryKeyForStream = null;
134 134 if (matcherForStream.find()) { //此处find()每次被调用后,会偏移到下一个匹配
... ... @@ -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 154 gbStreamMapper.update(transform);
  155 + streamPushMapper.del(gbStreamList.get(0).getApp(), gbStreamList.get(0).getStream());
153 156 }else {
154 157 transform.setCreateStamp(System.currentTimeMillis());
155 158 gbStreamMapper.add(transform);
... ...
src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
... ... @@ -33,6 +33,19 @@ public interface GbStreamMapper {
33 33 "mediaServerId=#{mediaServerId}," +
34 34 "status=${status} " +
35 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 49 int update(GbStream gbStream);
37 50  
38 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 772 try {
773 773 if (streamProxyMapper.update(streamProxyItem) > 0) {
774 774 if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
775   - if (gbStreamMapper.update(streamProxyItem) > 0) {
  775 + if (gbStreamMapper.updateByallAndStream(streamProxyItem) > 0) {
776 776 //事务回滚
777 777 dataSourceTransactionManager.rollback(transactionStatus);
778 778 return false;
... ...
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java
... ... @@ -305,6 +305,8 @@ public class PlatformController {
305 305 // 停止发送位置订阅定时任务
306 306 String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_MobilePosition_" + parentPlatform.getServerGBId();
307 307 dynamicTask.stop(key);
  308 + // 删除缓存的订阅信息
  309 + subscribeHolder.removeAllSubscribe(parentPlatform.getServerGBId());
308 310 if (deleteResult) {
309 311 return new ResponseEntity<>("success", HttpStatus.OK);
310 312 } else {
... ... @@ -341,7 +343,6 @@ public class PlatformController {
341 343 * @param platformId 上级平台ID
342 344 * @param query 查询内容
343 345 * @param online 是否在线
344   - * @param choosed 是否已选中
345 346 * @param channelType 通道类型
346 347 * @return
347 348 */
... ...