From e8090bc84c04d929c750338df26aa2bf86e1efc8 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期三, 19 一月 2022 10:23:52 +0800 Subject: [PATCH] 修复bug与目录订阅添加最小值60 --- web_src/src/components/dialog/deviceEdit.vue | 6 +- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java | 5 ++ src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java | 13 ++---- src/main/java/com/genersoft/iot/vmp/service/bean/CatalogSubscribeTask.java | 16 +------- src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java | 3 + src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java | 17 ++++++++ src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java | 7 ++- 7 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java index 9c3f694..a3523fd 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java @@ -62,6 +62,7 @@ if (!parentPlatform.isStatus())return; String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_Catalog_" + event.getPlatformId(); subscribe = redisCatchStorage.getSubscribe(key); + if (subscribe == null) return; }else { // 鑾峰彇鎵�鐢ㄨ闃� List<String> platforms = redisCatchStorage.getAllSubscribePlatform(); @@ -107,9 +108,10 @@ List<ParentPlatform> parentPlatforms = parentPlatformMap.get(gbId); if (parentPlatforms != null && parentPlatforms.size() > 0) { for (ParentPlatform platform : parentPlatforms) { - logger.info("[Catalog浜嬩欢: {}]骞冲彴锛歿}锛屽奖鍝嶉�氶亾{}", event.getType(), platform.getServerGBId(), gbId); String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_Catalog_" + platform.getServerGBId(); SubscribeInfo subscribeInfo = redisCatchStorage.getSubscribe(key); + if (subscribeInfo == null) continue; + logger.info("[Catalog浜嬩欢: {}]骞冲彴锛歿}锛屽奖鍝嶉�氶亾{}", event.getType(), platform.getServerGBId(), gbId); List<DeviceChannel> deviceChannelList = new ArrayList<>(); DeviceChannel deviceChannel = new DeviceChannel(); deviceChannel.setChannelId(gbId); @@ -146,9 +148,10 @@ List<ParentPlatform> parentPlatforms = parentPlatformMap.get(gbId); if (parentPlatforms != null && parentPlatforms.size() > 0) { for (ParentPlatform platform : parentPlatforms) { - logger.info("[Catalog浜嬩欢: {}]骞冲彴锛歿}锛屽奖鍝嶉�氶亾{}", event.getType(), platform.getServerGBId(), gbId); String key = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_Catalog_" + platform.getServerGBId(); SubscribeInfo subscribeInfo = redisCatchStorage.getSubscribe(key); + if (subscribeInfo == null) continue; + logger.info("[Catalog浜嬩欢: {}]骞冲彴锛歿}锛屽奖鍝嶉�氶亾{}", event.getType(), platform.getServerGBId(), gbId); List<DeviceChannel> deviceChannelList = new ArrayList<>(); DeviceChannel deviceChannel = storager.queryChannelInParentPlatform(platform.getServerGBId(), gbId); deviceChannelList.add(deviceChannel); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java index 285a817..cb4cbd7 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java @@ -1498,7 +1498,10 @@ CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() : udpSipProvider.getNewCallId(); - Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), "z9hG4bK-viaPos-" + tm, "fromTagPos" + tm, null, device.getSubscribeCycleForCatalog(), "Catalog" , callIdHeader); + // 鏈夋晥鏃堕棿榛樿涓�60绉掍互涓� + Request request = headerProvider.createSubscribeRequest(device, cmdXml.toString(), "z9hG4bK-viaPos-" + tm, + "fromTagPos" + tm, null, device.getSubscribeCycleForCatalog() + 60, "Catalog" , + callIdHeader); transmitRequest(device, request, errorEvent, okEvent); return true; diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java index 4216bb8..e15853d 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java @@ -370,10 +370,7 @@ @Override public boolean sendNotifyForCatalogAddOrUpdate(String type, ParentPlatform parentPlatform, List<DeviceChannel> deviceChannels, SubscribeInfo subscribeInfo) { - if (parentPlatform == null) { - return false; - } - if (deviceChannels == null || deviceChannels.size() == 0) { + if (parentPlatform == null || deviceChannels == null || deviceChannels.size() == 0 || subscribeInfo == null) { return false; } for (DeviceChannel channel : deviceChannels) { @@ -431,10 +428,10 @@ @Override public boolean sendNotifyForCatalogOther(String type, ParentPlatform parentPlatform, List<DeviceChannel> deviceChannels, SubscribeInfo subscribeInfo) { - if (parentPlatform == null) { - return false; - } - if (deviceChannels == null || deviceChannels.size() == 0) { + if (parentPlatform == null + || deviceChannels == null + || deviceChannels.size() == 0 + || subscribeInfo == null) { return false; } diff --git a/src/main/java/com/genersoft/iot/vmp/service/bean/CatalogSubscribeTask.java b/src/main/java/com/genersoft/iot/vmp/service/bean/CatalogSubscribeTask.java index cfaef71..cb027c8 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/bean/CatalogSubscribeTask.java +++ b/src/main/java/com/genersoft/iot/vmp/service/bean/CatalogSubscribeTask.java @@ -26,20 +26,8 @@ ResponseEvent event = (ResponseEvent) eventResult.event; Element rootElement = null; if (event.getResponse().getRawContent() != null) { - try { - rootElement = XmlUtil.getRootElement(event.getResponse().getRawContent(), "gb2312"); - } catch (DocumentException e) { - e.printStackTrace(); - } - Element resultElement = rootElement.element("Result"); - String result = resultElement.getText(); - if (result.toUpperCase().equals("OK")){ - // 鎴愬姛 - logger.info("[鐩綍璁㈤槄]鎴愬姛锛� {}", device.getDeviceId()); - }else { - // 澶辫触 - logger.info("[鐩綍璁㈤槄]澶辫触锛� {}-{}", device.getDeviceId(), result); - } + // 鎴愬姛 + logger.info("[鐩綍璁㈤槄]鎴愬姛锛� {}", device.getDeviceId()); }else { // 鎴愬姛 logger.info("[鐩綍璁㈤槄]鎴愬姛锛� {}", device.getDeviceId()); diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java index d440e4d..a68f5e9 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamPushUploadFileHandler.java @@ -5,15 +5,20 @@ import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem; import com.genersoft.iot.vmp.service.IStreamPushService; import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto; +import org.springframework.util.StringUtils; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPushExcelDto> { private IStreamPushService pushService; private String defaultMediaServerId; private List<StreamPushItem> streamPushItems = new ArrayList<>(); + private Set<String> streamPushStreamSet = new HashSet<>(); + private Set<String> streamPushGBSet = new HashSet<>(); public StreamPushUploadFileHandler(IStreamPushService pushService, String defaultMediaServerId) { this.pushService = pushService; @@ -22,6 +27,14 @@ @Override public void invoke(StreamPushExcelDto streamPushExcelDto, AnalysisContext analysisContext) { + if (StringUtils.isEmpty(streamPushExcelDto.getApp()) + || StringUtils.isEmpty(streamPushExcelDto.getStream()) + || StringUtils.isEmpty(streamPushExcelDto.getGbId())) { + return; + } + if (streamPushGBSet.contains(streamPushExcelDto.getGbId()) || streamPushStreamSet.contains(streamPushExcelDto.getApp() + streamPushExcelDto.getStream())) { + return; + } StreamPushItem streamPushItem = new StreamPushItem(); streamPushItem.setApp(streamPushExcelDto.getApp()); streamPushItem.setStream(streamPushExcelDto.getStream()); @@ -35,6 +48,8 @@ streamPushItem.setOriginTypeStr("rtsp_push"); streamPushItem.setTotalReaderCount("0"); streamPushItems.add(streamPushItem); + streamPushGBSet.add(streamPushExcelDto.getGbId()); + streamPushStreamSet.add(streamPushExcelDto.getApp()+streamPushExcelDto.getStream()); if (streamPushItems.size() > 300) { pushService.batchAdd(streamPushItems); // 瀛樺偍瀹屾垚娓呯悊 list @@ -46,5 +61,7 @@ public void doAfterAllAnalysed(AnalysisContext analysisContext) { // 杩欓噷涔熻淇濆瓨鏁版嵁锛岀‘淇濇渶鍚庨仐鐣欑殑鏁版嵁涔熷瓨鍌ㄥ埌鏁版嵁搴� pushService.batchAdd(streamPushItems); + streamPushGBSet.clear(); + streamPushStreamSet.clear(); } } diff --git a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java index bc8b61b..d83094e 100644 --- a/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java +++ b/src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java @@ -316,7 +316,8 @@ if (!StringUtils.isEmpty(device.getCharset())) deviceInStore.setCharset(device.getCharset()); if (!StringUtils.isEmpty(device.getMediaServerId())) deviceInStore.setMediaServerId(device.getMediaServerId()); - if (deviceInStore.getSubscribeCycleForCatalog() <=0 && device.getSubscribeCycleForCatalog() > 0) { + if ((deviceInStore.getSubscribeCycleForCatalog() <=0 && device.getSubscribeCycleForCatalog() > 0) + || deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) { deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog()); // 寮�鍚闃� deviceService.addCatalogSubscribe(deviceInStore); diff --git a/web_src/src/components/dialog/deviceEdit.vue b/web_src/src/components/dialog/deviceEdit.vue index 7b8e58c..4f86851 100644 --- a/web_src/src/components/dialog/deviceEdit.vue +++ b/web_src/src/components/dialog/deviceEdit.vue @@ -10,7 +10,7 @@ @close="close()" > <div id="shared" style="margin-top: 1rem;margin-right: 100px;"> - <el-form ref="form" :rules="rules" :model="form" label-width="140px" > + <el-form ref="form" :rules="rules" :model="form" label-width="240px" > <el-form-item label="璁惧缂栧彿" > <el-input v-model="form.deviceId" disabled></el-input> </el-form-item> @@ -36,8 +36,8 @@ <el-option key="UTF-8" label="UTF-8" value="utf-8"></el-option> </el-select> </el-form-item> - <el-form-item label="鐩綍璁㈤槄鍛ㄦ湡" prop="subscribeCycleForCatalog" > - <el-input v-model="form.subscribeCycleForCatalog" clearable></el-input> + <el-form-item label="鐩綍璁㈤槄鍛ㄦ湡(0涓哄仠鐢ㄨ闃�)" prop="subscribeCycleForCatalog" > + <el-input v-model="form.subscribeCycleForCatalog" clearable ></el-input> </el-form-item> <el-form-item> <div style="float: right;"> -- Gitblit v1.8.0