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