Browse Source

修复推流关联平台的bug again

pull/403/head
648540858 3 years ago
parent
commit
e752dbd1a7
  1. 5
      src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java
  2. 15
      src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java
  3. 13
      src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java
  4. 2
      src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
  5. 3
      src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java

5
src/main/java/com/genersoft/iot/vmp/gb28181/bean/SubscribeHolder.java

@ -46,4 +46,9 @@ public class SubscribeHolder {
}
return platforms;
}
public void removeAllSubscribe(String platformId) {
mobilePositionMap.remove(platformId);
catalogMap.remove(platformId);
}
}

15
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaListManager.java

@ -128,7 +128,7 @@ public class ZLMMediaListManager {
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 @@ public class ZLMMediaListManager {
}
}
}
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);

13
src/main/java/com/genersoft/iot/vmp/storager/dao/GbStreamMapper.java

@ -33,6 +33,19 @@ public interface GbStreamMapper {
"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}")

2
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java

@ -772,7 +772,7 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
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;

3
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/platform/PlatformController.java

@ -305,6 +305,8 @@ public class PlatformController {
// 停止发送位置订阅定时任务
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 @@ public class PlatformController {
* @param platformId 上级平台ID
* @param query 查询内容
* @param online 是否在线
* @param choosed 是否已选中
* @param channelType 通道类型
* @return
*/

Loading…
Cancel
Save