From a030d00c8819612de2c280b75abdc90573eb52ce Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 12 五月 2022 10:48:50 +0800
Subject: [PATCH] 修复代码

---
 src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 58 insertions(+), 0 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..2bf1b27 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;
@@ -248,4 +249,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