From c3b47fa734f909ad2d21dcea43e030ae93736a21 Mon Sep 17 00:00:00 2001
From: 648540858 <456panlinlin>
Date: 星期六, 02 四月 2022 17:09:33 +0800
Subject: [PATCH] 修复启动报错

---
 src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java |   45 ++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 40 insertions(+), 5 deletions(-)

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 1159484..384bf7f 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
@@ -5,6 +5,7 @@
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
 import com.genersoft.iot.vmp.service.IDeviceService;
 import com.genersoft.iot.vmp.service.bean.CatalogSubscribeTask;
+import com.genersoft.iot.vmp.service.bean.MobilePositionSubscribeTask;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,7 +21,6 @@
 
     @Autowired
     private DynamicTask dynamicTask;
-;
 
     @Autowired
     private ISIPCommander sipCommander;
@@ -30,15 +30,19 @@
         if (device == null || device.getSubscribeCycleForCatalog() < 0) {
             return false;
         }
+        if (dynamicTask.contains(device.getDeviceId() + "catalog")) {
+            // 瀛樺湪鍒欏仠姝㈢幇鏈夌殑锛屽紑鍚柊鐨�
+            dynamicTask.stop(device.getDeviceId() + "catalog");
+        }
+        logger.info("[娣诲姞鐩綍璁㈤槄] 璁惧{}", device.getDeviceId());
         // 娣诲姞鐩綍璁㈤槄
         CatalogSubscribeTask catalogSubscribeTask = new CatalogSubscribeTask(device, sipCommander);
         catalogSubscribeTask.run();
         // 鎻愬墠寮�濮嬪埛鏂拌闃�
-        // TODO 浣跨敤jain sip鐨勫綋鏃跺埛鏂拌闃�
         int subscribeCycleForCatalog = device.getSubscribeCycleForCatalog();
         // 璁剧疆鏈�灏忓�间负30
         subscribeCycleForCatalog = Math.max(subscribeCycleForCatalog, 30);
-        dynamicTask.startCron(device.getDeviceId(), catalogSubscribeTask, subscribeCycleForCatalog - 5);
+        dynamicTask.startCron(device.getDeviceId() + "catalog", catalogSubscribeTask, subscribeCycleForCatalog - 5);
         return true;
     }
 
@@ -48,11 +52,42 @@
             return false;
         }
         logger.info("绉婚櫎鐩綍璁㈤槄: {}", device.getDeviceId());
-        dynamicTask.stopCron(device.getDeviceId());
+        dynamicTask.stop(device.getDeviceId() + "catalog");
         device.setSubscribeCycleForCatalog(0);
         sipCommander.catalogSubscribe(device, null, null);
-        // 娓呯┖cseq璁℃暟
+        return true;
+    }
 
+    @Override
+    public boolean addMobilePositionSubscribe(Device device) {
+        if (device == null || device.getSubscribeCycleForMobilePosition() < 0) {
+            return false;
+        }
+        if (dynamicTask.contains(device.getDeviceId() + "mobile_position")) {
+            // 瀛樺湪鍒欏仠姝㈢幇鏈夌殑锛屽紑鍚柊鐨�
+            dynamicTask.stop(device.getDeviceId() + "mobile_position");
+        }
+        logger.info("[娣诲姞绉诲姩浣嶇疆璁㈤槄] 璁惧{}", device.getDeviceId());
+        // 娣诲姞鐩綍璁㈤槄
+        MobilePositionSubscribeTask mobilePositionSubscribeTask = new MobilePositionSubscribeTask(device, sipCommander);
+        mobilePositionSubscribeTask.run();
+        // 鎻愬墠寮�濮嬪埛鏂拌闃�
+        int subscribeCycleForCatalog = device.getSubscribeCycleForCatalog();
+        // 璁剧疆鏈�灏忓�间负30
+        subscribeCycleForCatalog = Math.max(subscribeCycleForCatalog, 30);
+        dynamicTask.startCron(device.getDeviceId() + "mobile_position" , mobilePositionSubscribeTask, subscribeCycleForCatalog - 5);
+        return true;
+    }
+
+    @Override
+    public boolean removeMobilePositionSubscribe(Device device) {
+        if (device == null || device.getSubscribeCycleForCatalog() < 0) {
+            return false;
+        }
+        logger.info("绉婚櫎绉诲姩浣嶇疆璁㈤槄: {}", device.getDeviceId());
+        dynamicTask.stop(device.getDeviceId() + "mobile_position");
+        device.setSubscribeCycleForCatalog(0);
+        sipCommander.mobilePositionSubscribe(device, null, null);
         return true;
     }
 }

--
Gitblit v1.8.0