From 277b4f8a32c2332bc067a263bcce2e763e8d13aa Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Wed, 21 Jan 2026 16:38:01 +0800
Subject: [PATCH] 1. 新增航线任务接口。 2. 新增查询航线任务列表接口。 3. 新增获取航线任务详细信息。 4. 新增航线任务接口。 5. 新增修改航线任务接口。 6. 新增删除航线任务接口。 7. 新增修改航线任务状态接口。 8. 优化查询分组业务逻辑。 9. 航线(kmz)对象增加航线任务ID信息。 10. 新增航线(kmz)业务增加航线任务数据加工校验相关业务逻辑。 11. 新增航向任务下航点信息业务相关接口。

---
 ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java |  101 ++++++++++++++++++++++++++------------------------
 1 files changed, 52 insertions(+), 49 deletions(-)

diff --git a/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java b/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java
index d387132..a7f7f73 100644
--- a/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java
+++ b/ard-device/src/main/java/com/ard/device/camera/service/impl/ArdCameraServiceImpl.java
@@ -163,7 +163,7 @@
         ardCamera.setUpdateBy(SecurityUtils.getUsername());
         int res = ardCameraMapper.updateArdCamera(ardCamera);
         if (res > 0) {
-            cameraSDKService.logout(ardCamera.getId());//sdk注销
+            cameraSDKService.logout(ardCamera);//sdk注销
             cameraSDKService.login(ardCamera);//sdk登录获取通道信息
         }
         return res;
@@ -186,7 +186,7 @@
                 //删除当前相机的所有通道
                 ardChannelService.deleteArdChannelByDeviceId(id);
                 //sdk注销
-                cameraSDKService.logout(id);
+                cameraSDKService.logout(camera);
             }
         }
         return ardCameraMapper.deleteArdCameraByIds(ids);
@@ -207,7 +207,7 @@
             //删除当前相机的所有通道
             ardChannelService.deleteArdChannelByDeviceId(id);
             //sdk注销
-            cameraSDKService.logout(id);
+            cameraSDKService.logout(ArdCamera.builder().id(id).build());
         }
         return i;
     }
@@ -374,49 +374,24 @@
     }
 
     /**
-     * 同步设备通道与本地通道库信息
-     *
-     * @author 刘苏义
-     * @date 2024/8/22 14:37
-     */
-    @Scheduled(fixedDelay = 5000)
-    public void syncChannel() {
-        try {
-            log.debug("定时执行同步通道任务");
-            List<ArdCamera> ardCameraList = this.selectArdCameraList(new ArdCamera());
-            if (!ardCameraList.isEmpty()) {
-                ardCameraList
-                        .forEach(ardCamera -> {
-                            //SDK获取实际通道
-                            List<ArdChannel> ardChannelListSDK = cameraSDKService.getChannels(ardCamera);
-                            //数据库获取通道
-                            ArdChannel ardChannel = new ArdChannel();
-                            ardChannel.setDeviceId(ardCamera.getId());
-                            List<ArdChannel> ardChannelListDb = ardChannelService.selectArdChannelList(ardChannel);
-                            //同步通道
-                            asyncChannel(ardChannelListDb, ardChannelListSDK);
-                        });
-            }
-        } catch (Exception ex) {
-            log.error("定时执行同步通道任务异常:{}", ex.getMessage());
-        }
-    }
-
-    /**
      * 定时执行登录失败相机重新登录
-     *
-     * @author 刘苏义
-     * @date 2024/8/22 14:37
      */
-    @Scheduled(fixedDelay = 30000)
+    @Scheduled(cron = "0/10 * * * * ?")
     public void failedReconnect() {
         try {
             log.debug("定时执行失败相机重连任务");
-            List<Object> ardCameras = redisService.getListKey(CacheConstants.CAMERA_LIST_KEY);
-            ardCameras.stream()
-                    .map(object -> (ArdCamera) object) // 将Object转换为ArdCameras
-                    .filter(camera -> !GlobalVariable.loginMap.containsKey(camera.getId()))
-                    .forEach(camera -> cameraSDKService.login(camera));
+            // 从数据库取全部设备
+            ArdCamera ardCamera = new ArdCamera();
+            ardCamera.setUseDataScope(false);
+            List<ArdCamera> cameraList = this.selectArdCameraList(ardCamera);
+            cameraList.stream()
+                    // 只处理登录失败或离线的设备
+                    .filter(camera -> camera.getLoginId() == null || camera.getLoginId() < 0 || "0".equals(camera.getState()))
+                    .forEach(camera -> {
+                        log.info("尝试重新登录设备 {}:{}", camera.getIp(), camera.getPort());
+                        cameraSDKService.login(camera);
+                    });
+
         } catch (Exception ex) {
             log.error("定时执行失败相机重连任务异常:{}", ex.getMessage());
         }
@@ -424,20 +399,18 @@
 
     /**
      * 同步相机在线状态
-     * 刘苏义
-     * 2023/10/8 14:54:41
      */
-    @Scheduled(fixedDelay = 5000)
-    public void cameraState() {
+    @Scheduled(cron = "0/10 * * * * ?")
+    public void syncCameraState() {
         try {
             log.debug("定时执行同步相机在线状态任务");
             //调用查询方法
-            List<ArdCamera> ardCameraList = selectArdCameraList(new ArdCamera());
+            ArdCamera ardCamera = new ArdCamera();
+            ardCamera.setUseDataScope(false);
+            List<ArdCamera> ardCameraList = this.selectArdCameraList(ardCamera);
             ardCameraList
                     .forEach(camera -> {
-                        CameraCmd cmd = new CameraCmd();
-                        cmd.setCameraId(camera.getId());
-                        boolean onLineNew = cameraSDKService.isOnLine(cmd);
+                        boolean onLineNew = cameraSDKService.isOnLine(camera);
                         boolean onLineOld = "1".equals(camera.getState());
                         if (onLineNew != onLineOld) {
                             if (onLineNew) {
@@ -453,4 +426,34 @@
             log.error("同步相机在线状态异常:{}", ex.getMessage());
         }
     }
+    /**
+     * 同步相机通道
+     */
+    @Scheduled(cron = "0/10 * * * * ?")
+    public void syncChannel() {
+        try {
+            log.debug("定时执行同步通道任务");
+            ArdCamera camera = new ArdCamera();
+            camera.setUseDataScope(false);
+            List<ArdCamera> ardCameraList = this.selectArdCameraList(camera);
+            if (!ardCameraList.isEmpty()) {
+                ardCameraList
+                        .forEach(ardCamera -> {
+                            //SDK获取实际通道
+                            List<ArdChannel> ardChannelListSDK = cameraSDKService.getChannels(ardCamera);
+                            //数据库获取通道
+                            ArdChannel ardChannel = new ArdChannel();
+                            ardChannel.setUseDataScope(false);
+                            ardChannel.setDeviceId(ardCamera.getId());
+                            List<ArdChannel> ardChannelListDb = ardChannelService.selectArdChannelList(ardChannel);
+                            //同步通道
+                            asyncChannel(ardChannelListDb, ardChannelListSDK);
+                        });
+            }
+        } catch (Exception ex) {
+            log.error("定时执行同步通道任务异常:{}", ex.getMessage());
+        }
+    }
+
+
 }
\ No newline at end of file

--
Gitblit v1.9.3