From 20622d20d63870e54118c70b75bfa53839c4b801 Mon Sep 17 00:00:00 2001 From: 648540858 <456panlinlin> Date: 星期一, 18 四月 2022 12:55:54 +0800 Subject: [PATCH] 修复更新通道状态回复不准的问题 --- src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java | 7 +++++++ src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 5 +++++ src/main/java/com/genersoft/iot/vmp/gb28181/session/CatalogDataCatch.java | 7 ++++++- src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/device/DeviceQuery.java | 7 ++++--- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java | 8 ++++++++ 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/session/CatalogDataCatch.java b/src/main/java/com/genersoft/iot/vmp/gb28181/session/CatalogDataCatch.java index 759b317..97360d2 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/session/CatalogDataCatch.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/session/CatalogDataCatch.java @@ -78,7 +78,6 @@ public SyncStatus getSyncStatus(String deviceId) { CatalogData catalogData = data.get(deviceId); if (catalogData == null) return null; - if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end)) return null; SyncStatus syncStatus = new SyncStatus(); syncStatus.setCurrent(catalogData.getChannelList().size()); syncStatus.setTotal(catalogData.getTotal()); @@ -86,6 +85,12 @@ return syncStatus; } + public boolean isSyncRunning(String deviceId) { + CatalogData catalogData = data.get(deviceId); + if (catalogData == null) return false; + return !catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end); + } + @Scheduled(fixedRate = 5 * 1000) //姣�5绉掓墽琛屼竴娆�, 鍙戠幇鏁版嵁5绉掓湭鏇存柊鍒欑Щ闄ゆ暟鎹苟璁や负鏁版嵁鎺ユ敹瓒呮椂 private void timerTask(){ Set<String> keys = data.keySet(); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java index 75a2244..92d0114 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java @@ -223,6 +223,14 @@ } } + public boolean isSyncRunning(String deviceId) { + if (catalogDataCatch.get(deviceId) == null) { + return false; + }else { + return catalogDataCatch.isSyncRunning(deviceId); + } + } + public void setChannelSyncReady(Device device, int sn) { catalogDataCatch.addReady(device, sn); } diff --git a/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java b/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java index 08ccfff..5621d2a 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java +++ b/src/main/java/com/genersoft/iot/vmp/service/IDeviceService.java @@ -44,6 +44,13 @@ SyncStatus getChannelSyncStatus(String deviceId); /** + * 鏌ョ湅鏄惁浠嶅湪鍚屾 + * @param deviceId 璁惧ID + * @return + */ + Boolean isSyncRunning(String deviceId); + + /** * 閫氶亾鍚屾 * @param device */ diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java index f36b3ae..6f0d179 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java @@ -100,6 +100,11 @@ } @Override + public Boolean isSyncRunning(String deviceId) { + return catalogResponseMessageHandler.isSyncRunning(deviceId); + } + + @Override public void sync(Device device) { if (catalogResponseMessageHandler.getChannelSyncProgress(device.getDeviceId()) != null) { logger.info("寮�鍚悓姝ユ椂鍙戠幇鍚屾宸茬粡瀛樺湪"); 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 cbcb4ff..95d2843 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 @@ -164,12 +164,13 @@ logger.debug("璁惧閫氶亾淇℃伅鍚屾API璋冪敤锛宒eviceId锛�" + deviceId); } Device device = storager.queryVideoDevice(deviceId); - SyncStatus syncStatus = deviceService.getChannelSyncStatus(deviceId); + boolean status = deviceService.isSyncRunning(deviceId); // 宸插瓨鍦ㄥ垯杩斿洖杩涘害 - if (syncStatus != null && syncStatus.getErrorMsg() == null) { + if (status) { WVPResult<SyncStatus> wvpResult = new WVPResult<>(); wvpResult.setCode(0); - wvpResult.setData(syncStatus); + SyncStatus channelSyncStatus = deviceService.getChannelSyncStatus(deviceId); + wvpResult.setData(channelSyncStatus); return wvpResult; } deviceService.sync(device); -- Gitblit v1.8.0