From 5d901b5e3f033e8b04e53420d68626cbd87431c8 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期五, 06 五月 2022 10:12:34 +0800
Subject: [PATCH] 使用阿里代码规范。规范代码写法

---
 src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java |   82 +++++++++++++++++++++++++++++++++++------
 1 files changed, 70 insertions(+), 12 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 0d691ce..39a59f8 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
@@ -3,12 +3,20 @@
 import com.genersoft.iot.vmp.conf.DynamicTask;
 import com.genersoft.iot.vmp.gb28181.bean.Device;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
+import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.cmd.CatalogResponseMessageHandler;
 import com.genersoft.iot.vmp.service.IDeviceService;
-import com.genersoft.iot.vmp.service.bean.CatalogSubscribeTask;
+import com.genersoft.iot.vmp.gb28181.task.impl.CatalogSubscribeTask;
+import com.genersoft.iot.vmp.gb28181.task.impl.MobilePositionSubscribeTask;
+import com.genersoft.iot.vmp.gb28181.bean.SyncStatus;
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
+
+import javax.sip.DialogState;
 
 /**
  * 璁惧涓氬姟锛堢洰褰曡闃咃級
@@ -20,25 +28,28 @@
 
     @Autowired
     private DynamicTask dynamicTask;
-;
 
     @Autowired
     private ISIPCommander sipCommander;
+
+    @Autowired
+    private CatalogResponseMessageHandler catalogResponseMessageHandler;
+
+    @Autowired
+    private IRedisCatchStorage redisCatchStorage;
 
     @Override
     public boolean addCatalogSubscribe(Device device) {
         if (device == null || device.getSubscribeCycleForCatalog() < 0) {
             return false;
         }
+        logger.info("[娣诲姞鐩綍璁㈤槄] 璁惧{}", device.getDeviceId());
         // 娣诲姞鐩綍璁㈤槄
-        CatalogSubscribeTask catalogSubscribeTask = new CatalogSubscribeTask(device, sipCommander);
-        catalogSubscribeTask.run();
+        CatalogSubscribeTask catalogSubscribeTask = new CatalogSubscribeTask(device, sipCommander, dynamicTask);
         // 鎻愬墠寮�濮嬪埛鏂拌闃�
-        // TODO 浣跨敤jain sip鐨勫綋鏃跺埛鏂拌闃�
-        int subscribeCycleForCatalog = device.getSubscribeCycleForCatalog();
+        int subscribeCycleForCatalog = Math.max(device.getSubscribeCycleForCatalog(),30);
         // 璁剧疆鏈�灏忓�间负30
-        subscribeCycleForCatalog = Math.max(subscribeCycleForCatalog, 30);
-        dynamicTask.startCron(device.getDeviceId(), catalogSubscribeTask, subscribeCycleForCatalog - 5);
+        dynamicTask.startCron(device.getDeviceId() + "catalog", catalogSubscribeTask, subscribeCycleForCatalog -1);
         return true;
     }
 
@@ -47,10 +58,57 @@
         if (device == null || device.getSubscribeCycleForCatalog() < 0) {
             return false;
         }
-        logger.info("绉婚櫎鐩綍璁㈤槄銆恵}銆�", device.getDeviceId());
-        dynamicTask.stopCron(device.getDeviceId());
-        device.setSubscribeCycleForCatalog(0);
-        sipCommander.catalogSubscribe(device, null, null);
+        logger.info("绉婚櫎鐩綍璁㈤槄: {}", device.getDeviceId());
+        dynamicTask.stop(device.getDeviceId() + "catalog");
         return true;
     }
+
+    @Override
+    public boolean addMobilePositionSubscribe(Device device) {
+        if (device == null || device.getSubscribeCycleForMobilePosition() < 0) {
+            return false;
+        }
+        logger.info("[娣诲姞绉诲姩浣嶇疆璁㈤槄] 璁惧{}", device.getDeviceId());
+        // 娣诲姞鐩綍璁㈤槄
+        MobilePositionSubscribeTask mobilePositionSubscribeTask = new MobilePositionSubscribeTask(device, sipCommander, dynamicTask);
+        // 璁剧疆鏈�灏忓�间负30
+        int subscribeCycleForCatalog = Math.max(device.getSubscribeCycleForMobilePosition(),30);
+        // 鎻愬墠寮�濮嬪埛鏂拌闃�
+        dynamicTask.startCron(device.getDeviceId() + "mobile_position" , mobilePositionSubscribeTask, subscribeCycleForCatalog -1 );
+        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");
+        return true;
+    }
+
+    @Override
+    public SyncStatus getChannelSyncStatus(String deviceId) {
+        return catalogResponseMessageHandler.getChannelSyncProgress(deviceId);
+    }
+
+    @Override
+    public Boolean isSyncRunning(String deviceId) {
+        return catalogResponseMessageHandler.isSyncRunning(deviceId);
+    }
+
+    @Override
+    public void sync(Device device) {
+        if (catalogResponseMessageHandler.isSyncRunning(device.getDeviceId())) {
+            logger.info("寮�鍚悓姝ユ椂鍙戠幇鍚屾宸茬粡瀛樺湪");
+            return;
+        }
+        int sn = (int)((Math.random()*9+1)*100000);
+        catalogResponseMessageHandler.setChannelSyncReady(device, sn);
+        sipCommander.catalogQuery(device, sn, event -> {
+            String errorMsg = String.format("鍚屾閫氶亾澶辫触锛岄敊璇爜锛� %s, %s", event.statusCode, event.msg);
+            catalogResponseMessageHandler.setChannelSyncEnd(device.getDeviceId(), errorMsg);
+        });
+    }
 }

--
Gitblit v1.8.0