Przeglądaj źródła

bugfix:编辑国标设备时,若目录订阅周期本来不为0时不生效

lishuyuan 2 lat temu
rodzic
commit
da7889bf67

+ 4 - 4
src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java

@@ -89,17 +89,17 @@ public class CatalogSubscribeTask implements ISubscribeTask {
                 ResponseEvent event = (ResponseEvent) eventResult.event;
                 if (event.getResponse().getRawContent() != null) {
                     // 成功
-                    logger.info("[取消目录订阅订阅]成功: {}", device.getDeviceId());
+                    logger.info("[取消目录订阅]成功: {}", device.getDeviceId());
                 }else {
                     // 成功
-                    logger.info("[取消目录订阅订阅]成功: {}", device.getDeviceId());
+                    logger.info("[取消目录订阅]成功: {}", device.getDeviceId());
                 }
             },eventResult -> {
                 // 失败
-                logger.warn("[取消目录订阅订阅]失败,信令发送失败: {}-{} ", device.getDeviceId(), eventResult.msg);
+                logger.warn("[取消目录订阅]失败,信令发送失败: {}-{} ", device.getDeviceId(), eventResult.msg);
             });
         } catch (InvalidArgumentException | SipException | ParseException e) {
-            logger.error("[命令发送失败] 取消目录订阅订阅: {}", e.getMessage());
+            logger.error("[命令发送失败] 取消目录订阅: {}", e.getMessage());
         }
     }
 }

+ 9 - 7
src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java

@@ -520,16 +520,18 @@ public class DeviceServiceImpl implements IDeviceService {
 
 
         //  目录订阅相关的信息
-        if (device.getSubscribeCycleForCatalog() > 0) {
-            if (deviceInStore.getSubscribeCycleForCatalog() == 0 || deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) {
-                deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
+        if (deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) {
+            if (device.getSubscribeCycleForCatalog() > 0) {
+                // 若已开启订阅,但订阅周期不同,则先取消
+                if (deviceInStore.getSubscribeCycleForCatalog() != 0) {
+                    removeCatalogSubscribe(deviceInStore);
+                }
                 // 开启订阅
-                addCatalogSubscribe(deviceInStore);
-            }
-        }else if (device.getSubscribeCycleForCatalog() == 0) {
-            if (deviceInStore.getSubscribeCycleForCatalog() != 0) {
                 deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
+                addCatalogSubscribe(deviceInStore);
+            }else if (device.getSubscribeCycleForCatalog() == 0) {
                 // 取消订阅
+                deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
                 removeCatalogSubscribe(deviceInStore);
             }
         }