From bbf8ab93109cd5b4e2efaf96a6db12a11b55f3f8 Mon Sep 17 00:00:00 2001
From: WuPeng <wp@zafu.edu.cn>
Date: 星期五, 13 五月 2022 22:22:10 +0800
Subject: [PATCH] 添加on_record_ts事件支持

---
 src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java |   67 ++++++++++++++++++++++++++++++---
 1 files changed, 60 insertions(+), 7 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 b6edf9a..5cfa852 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
@@ -21,6 +21,7 @@
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import javax.sip.DialogState;
 import javax.sip.TimeoutEvent;
@@ -65,7 +66,7 @@
 
     @Override
     public void online(Device device) {
-        logger.info("[璁惧涓婄嚎]锛宒eviceId锛�" + device.getDeviceId());
+        logger.info("[璁惧涓婄嚎] deviceId锛歿}->{}:{}", device.getDeviceId(), device.getIp(), device.getPort());
         Device deviceInRedis = redisCatchStorage.getDevice(device.getDeviceId());
         Device deviceInDb = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
 
@@ -75,12 +76,7 @@
             redisCatchStorage.clearCatchByDeviceId(device.getDeviceId());
 
         }
-        if (device.getRegisterTime() == null) {
-            device.setRegisterTime(now);
-        }
-        if(device.getUpdateTime() == null) {
-            device.setUpdateTime(now);
-        }
+        device.setUpdateTime(now);
         device.setOnline(1);
 
         // 绗竴娆′笂绾�
@@ -248,4 +244,61 @@
     public Device getDeviceByHostAndPort(String host, int port) {
         return deviceMapper.getDeviceByHostAndPort(host, port);
     }
+
+    @Override
+    public void updateDevice(Device device) {
+
+        Device deviceInStore = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
+        if (deviceInStore == null) {
+            logger.warn("鏇存柊璁惧鏃舵湭鎵惧埌璁惧淇℃伅");
+            return;
+        }
+        if (!StringUtils.isEmpty(device.getName())) {
+            deviceInStore.setName(device.getName());
+        }
+        if (!StringUtils.isEmpty(device.getCharset())) {
+            deviceInStore.setCharset(device.getCharset());
+        }
+        if (!StringUtils.isEmpty(device.getMediaServerId())) {
+            deviceInStore.setMediaServerId(device.getMediaServerId());
+        }
+
+        //  鐩綍璁㈤槄鐩稿叧鐨勪俊鎭�
+        if (device.getSubscribeCycleForCatalog() > 0) {
+            if (deviceInStore.getSubscribeCycleForCatalog() == 0 || deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) {
+                deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
+                // 寮�鍚闃�
+                addCatalogSubscribe(deviceInStore);
+            }
+        }else if (device.getSubscribeCycleForCatalog() == 0) {
+            if (deviceInStore.getSubscribeCycleForCatalog() != 0) {
+                deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
+                // 鍙栨秷璁㈤槄
+                removeCatalogSubscribe(deviceInStore);
+            }
+        }
+
+        // 绉诲姩浣嶇疆璁㈤槄鐩稿叧鐨勪俊鎭�
+        if (device.getSubscribeCycleForMobilePosition() > 0) {
+            if (deviceInStore.getSubscribeCycleForMobilePosition() == 0 || deviceInStore.getSubscribeCycleForMobilePosition() != device.getSubscribeCycleForMobilePosition()) {
+                deviceInStore.setMobilePositionSubmissionInterval(device.getMobilePositionSubmissionInterval());
+                deviceInStore.setSubscribeCycleForMobilePosition(device.getSubscribeCycleForMobilePosition());
+                // 寮�鍚闃�
+                addMobilePositionSubscribe(deviceInStore);
+            }
+        }else if (device.getSubscribeCycleForMobilePosition() == 0) {
+            if (deviceInStore.getSubscribeCycleForMobilePosition() != 0) {
+                // 鍙栨秷璁㈤槄
+                removeMobilePositionSubscribe(deviceInStore);
+            }
+        }
+
+        String now = DateUtil.getNow();
+        device.setUpdateTime(now);
+        device.setCharset(device.getCharset().toUpperCase());
+        device.setUpdateTime(DateUtil.getNow());
+        if (deviceMapper.update(device) > 0) {
+            redisCatchStorage.updateDevice(device);
+        }
+    }
 }

--
Gitblit v1.8.0