From 63e503016c78aac218a4c7f9a765bcbb0b1e398e Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Mon, 24 Nov 2025 12:27:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolDecoder.java      |    8 -
 ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java      |    2 
 ard-device/src/main/resources/mapper/ArdCameraMapper.xml                                     |    3 
 ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java     |    1 
 ard-system/src/main/java/com/ard/system/authorize/common/AuthorizeUtil.java                  |   44 ++++++++++
 ard-work/src/main/java/com/ard/work/component/netty/command/camera/FormatSdCardCmd.java      |   35 ++++++++
 ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java                          |   19 ++++
 ard-admin/src/main/java/com/ard/web/controller/work/UavCameraController.java                 |   11 ++
 ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java              |    3 
 ard-work/src/main/java/com/ard/work/domain/dto/camera/FormatSdCardDTO.java                   |   19 ++++
 ard-route/src/main/java/com/ard/route/util/InitializationUtils.java                          |   15 +++
 ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolEncoder.java      |   20 ++++
 ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java                |    2 
 ard-work/src/main/java/com/ard/work/component/netty/command/camera/FormatSdCardReplyCmd.java |   30 +++++++
 ard-work/src/main/java/com/ard/work/aspect/UavControlAspect.java                             |    7 +
 ard-work/src/main/java/com/ard/work/service/ITyService.java                                  |    5 +
 16 files changed, 210 insertions(+), 14 deletions(-)

diff --git a/ard-admin/src/main/java/com/ard/web/controller/work/UavCameraController.java b/ard-admin/src/main/java/com/ard/web/controller/work/UavCameraController.java
index 4562849..e613605 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/work/UavCameraController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/work/UavCameraController.java
@@ -73,6 +73,15 @@
         return AjaxResult.success();
     }
 
+    @ApiOperation("格式化存储卡")
+    @ApiOperationSupport(order = 9)
+    @PostMapping("/formatSdCard")
+    public AjaxResult formatSdCard(@RequestBody FormatSdCardDTO formatSdCardDTO) {
+        tyService.formatSdCard(formatSdCardDTO);
+        return AjaxResult.success();
+    }
+
+
     @ApiOperation(value = "打开或关闭照片回传", notes = "actionParam值:0-关闭,1-打开")
     @ApiOperationSupport(order = 10)
     @PostMapping("/photoReturnToggle")
@@ -81,4 +90,6 @@
         return AjaxResult.success();
     }
 
+
+
 }
\ No newline at end of file
diff --git a/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java b/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
index d2cefb6..9a46d7f 100644
--- a/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
+++ b/ard-device/src/main/java/com/ard/device/channel/service/impl/ArdChannelServiceImpl.java
@@ -143,7 +143,7 @@
         log.debug("定时同步Vtdu任务");
         List<ArdChannel> channels = this.selectArdChannelList(new ArdChannel());
         if (channels == null || channels.isEmpty()) {
-            log.warn("没有获取到通道数据,退出同步");
+           // log.warn("没有获取到通道数据,退出同步");
             return;
         }
         List<ArdVtdu> ardVtduList = ardVtduService.selectArdVtduList(new ArdVtdu());
diff --git a/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java b/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
index 4f000f6..c146539 100644
--- a/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
+++ b/ard-device/src/main/java/com/ard/device/component/sdk/hik/service/impl/HikVisionSDK.java
@@ -106,6 +106,7 @@
                 eventPublisher.publishEvent(loginEvent);
                 log.warn("设备[{}:{}]登录失败: {}({})", camera.getIp(), camera.getPort(),
                         SdkErrorCodeEnum.getDescByCode(errorCode), errorCode);
+                return;
             }
             log.info("Login Success 【 {}:{} 】", camera.getIp(), camera.getPort());
 
diff --git a/ard-device/src/main/resources/mapper/ArdCameraMapper.xml b/ard-device/src/main/resources/mapper/ArdCameraMapper.xml
index bd3fb07..cf87cad 100644
--- a/ard-device/src/main/resources/mapper/ArdCameraMapper.xml
+++ b/ard-device/src/main/resources/mapper/ArdCameraMapper.xml
@@ -201,7 +201,8 @@
             <if test="longitude != null">longitude = #{longitude},</if>
             <if test="latitude != null">latitude = #{latitude},</if>
             <if test="altitude != null">altitude = #{altitude},</if>
-            <if test="dockId != null">dock_id = #{dockId},</if>
+            <!-- 简洁写法:直接设置值,包括null -->
+            dock_id = #{dockId},
             <if test="loginId != null">login_id = #{loginId},</if>
             <if test="deptId != null">dept_id = #{deptId},</if>
             <if test="userId != null">user_id = #{userId},</if>
diff --git a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
index d2e9f34..8b02c8b 100644
--- a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
+++ b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInfoServiceImpl.java
@@ -253,8 +253,11 @@
         } catch (IOException | ClassNotFoundException e) {
             throw new RuntimeException(e);
         }
+        // 1.2通过minio获取航线信息
+
         // 2.将航线信息转换成对应实体类
         WayLineUploadDTO wayLineUploadDTO = buildWayLineUploadDTO(route);
+        wayLineUploadDTO.setBoxSn(boxSn);
         // 3.调用接口
         tyService.wayLineUpload(wayLineUploadDTO);
         return true;
diff --git a/ard-route/src/main/java/com/ard/route/util/InitializationUtils.java b/ard-route/src/main/java/com/ard/route/util/InitializationUtils.java
index f630224..7a34b79 100644
--- a/ard-route/src/main/java/com/ard/route/util/InitializationUtils.java
+++ b/ard-route/src/main/java/com/ard/route/util/InitializationUtils.java
@@ -249,4 +249,19 @@
 //        ardRouteActions2.setType(1);
 //        ardRouteActions2.setWaitTime(2);
 //    }
+
+    public byte[] testParameters() {
+        String data = "74 79 01 3C 44 42 4D 32 35 30 39 37 34 30 36 35 30 30 38 D1 00 10 08 01 15 00 00 70 41 1D 00 00 00 41 22 4A 09 06 9C E7 80 8B F0 59 40 11 08 98 33 BA 07 1D 3F 40 1D 00 00 F0 41 25 00 00 00 41 2A 09 08 01 15 00 00 20 41 18 02 2A 09 08 03 15 00 00 80 3F 18 02 2A 09 08 04 15 00 00 80 3F 18 02 30 01 58 FF FF FF FF FF FF FF FF FF 01 22 55 09 F1 BC 12 50 7A F0 59 40 11 08 98 33 BA 07 1D 3F 40 1D 00 00 20 42 25 00 00 00 41 2A 09 08 09 15 00 00 A0 41 18 02 2A 09 08 06 15 00 00 20 42 18 02 2A 09 08 07 15 00 00 20 42 18 02 2A 09 08 08 15 00 00 20 42 18 02 30 01 58 FF FF FF FF FF FF FF FF FF 01 22 3F 09 F1 BC 12 50 7A F0 59 40 11 91 92 E4 DA CC 1C 3F 40 1D 00 00 48 42 25 00 00 00 41 2A 09 08 09 15 00 00 70 41 18 02 2A 09 08 0A 15 00 00 40 40 18 02 30 01 58 FF FF FF FF FF FF FF FF FF 01 22 34 09 06 9C E7 80 8B F0 59 40 11 91 92 E4 DA CC 1C 3F 40 1D 00 00 70 42 25 00 00 00 41 2A 09 08 02 15 00 00 80 3F 18 02 30 01 58 FF FF FF FF FF FF FF FF FF 01 30 32 70 32";
+        String[] hexStrings = data.split(" ");
+        StringBuilder sb = new StringBuilder();
+        sb.append("byte[] encodedBytes = {");
+        for (int i = 0; i < hexStrings.length; i++) {
+            sb.append("(byte) 0x").append(hexStrings[i]);
+            if (i < hexStrings.length - 1) {
+                sb.append(", ");
+            }
+        }
+        sb.append("};");
+        return sb.toString().getBytes();
+    }
 }
diff --git a/ard-system/src/main/java/com/ard/system/authorize/common/AuthorizeUtil.java b/ard-system/src/main/java/com/ard/system/authorize/common/AuthorizeUtil.java
index dc8b641..8fe1cc2 100644
--- a/ard-system/src/main/java/com/ard/system/authorize/common/AuthorizeUtil.java
+++ b/ard-system/src/main/java/com/ard/system/authorize/common/AuthorizeUtil.java
@@ -76,7 +76,7 @@
         return null;
     }
 
-    public static String getMachineCode() {
+    public static String getMachineCode1() {
         StringBuffer sb = new StringBuffer();
         try {
             InetAddress ia = InetAddress.getLocalHost();
@@ -104,6 +104,48 @@
         log.debug("机器码:"+code);
         return code;
     }
+    public static String getMachineCode() {
+        try {
+            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
+            while (interfaces.hasMoreElements()) {
+                NetworkInterface nif = interfaces.nextElement();
+
+                // 跳过回环、虚拟、未启动网卡
+                if (nif.isLoopback() || nif.isVirtual() || !nif.isUp()) {
+                    continue;
+                }
+
+                // 可选:跳过 idrac 管理网卡
+                if (nif.getName().toLowerCase().contains("idrac")) {
+                    continue;
+                }
+
+                byte[] mac = nif.getHardwareAddress();
+                if (mac == null || mac.length == 0) {
+                    continue;
+                }
+
+                StringBuilder sb = new StringBuilder();
+                for (int i = 0; i < mac.length; i++) {
+                    if (i != 0) sb.append("-");
+                    sb.append(String.format("%02X", mac[i]));
+                }
+
+                String macStr = sb.toString();
+                log.debug("物理网卡: " + nif.getName() + " MAC: " + macStr);
+
+                // 返回 MAC 的 MD5 作为机器码
+                String code = Md5Utils.hash(macStr);
+                log.debug("机器码: " + code);
+                return code;
+            }
+        } catch (Exception e) {
+            log.error("获取机器码异常: " + e.getMessage(), e);
+        }
+
+        // 找不到 MAC 返回 null
+        return null;
+    }
 
     public static String getCPUCode() {
         String serial = null;
diff --git a/ard-work/src/main/java/com/ard/work/aspect/UavControlAspect.java b/ard-work/src/main/java/com/ard/work/aspect/UavControlAspect.java
index 5f1f2fb..f03b555 100644
--- a/ard-work/src/main/java/com/ard/work/aspect/UavControlAspect.java
+++ b/ard-work/src/main/java/com/ard/work/aspect/UavControlAspect.java
@@ -87,7 +87,7 @@
      * 高度检查
      */
     @Before("@annotation(checkTakeoffAltitude)")
-    public void takeoffAltitudeCheck(JoinPoint joinPoint, CheckTakeoffAltitude checkTakeoffAltitude) {
+    public void takeoffAltitudeCheck(JoinPoint joinPoint, CheckTakeoffAltitude checkTakeoffAltitude){
         // 获取最小高度
         double minAltitude = checkTakeoffAltitude.minAltitude();
         // 获取方法参数
@@ -125,8 +125,9 @@
             }
             // 检查在线状态
             if (checkDroneStatus.checkOnline()) {
-                Boolean online = redisCache.getCacheObject(CacheConstants.UAV_ONLINE_KEY + boxSn);
-                if (online == null || !online) {
+                // 3️⃣ 检查在线状态
+                BoxInfoReceiver obj = redisCache.getCacheObject(CacheConstants.UAV_ONLINE_KEY + boxSn);
+                if (obj == null || !obj.getOnLine().equals(1)) {
                     throw new ControlException("无人机离线,无法执行操作!boxSn: " + boxSn);
                 }
             }
diff --git a/ard-work/src/main/java/com/ard/work/component/netty/command/camera/FormatSdCardCmd.java b/ard-work/src/main/java/com/ard/work/component/netty/command/camera/FormatSdCardCmd.java
new file mode 100644
index 0000000..4a09997
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/work/component/netty/command/camera/FormatSdCardCmd.java
@@ -0,0 +1,35 @@
+package com.ard.work.component.netty.command.camera;
+
+import com.ard.work.component.netty.command.BaseCmd;
+import com.ard.work.domain.dto.camera.FormatSdCardDTO;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Description: 格式化存储卡指令
+ * Author: lsy
+ * Date: 2025年11月24日9:31
+ **/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class FormatSdCardCmd extends BaseCmd {
+    private final byte encryptFlag = 0x00;      // 加密标志
+    private final byte actionCode = 0x40;       // 动作编号
+
+    public FormatSdCardCmd(FormatSdCardDTO formatSdCardDTO) {
+        setDataHeader((short) 0x7479);
+        setDataLength((short) 18);
+        setBoxSn(formatSdCardDTO.getBoxSn().getBytes());
+        setCmdCode((byte) 0xD1);
+    }
+    @Override
+    public void encode(ByteBuf out) {
+        out.writeShort(getDataHeader());    // 写入数据头
+        out.writeShort(getDataLength());    // 写入数据长度
+        out.writeBytes(getBoxSn());         // 写入盒子SN
+        out.writeByte(getCmdCode());        // 写入命令码
+        out.writeByte(encryptFlag);         // 写入加密标志
+        out.writeByte(actionCode);          // 写入动作编号
+    }
+}
diff --git a/ard-work/src/main/java/com/ard/work/component/netty/command/camera/FormatSdCardReplyCmd.java b/ard-work/src/main/java/com/ard/work/component/netty/command/camera/FormatSdCardReplyCmd.java
new file mode 100644
index 0000000..6c4f054
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/work/component/netty/command/camera/FormatSdCardReplyCmd.java
@@ -0,0 +1,30 @@
+package com.ard.work.component.netty.command.camera;
+
+import com.ard.work.component.netty.command.BaseCmd;
+import io.netty.buffer.ByteBuf;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Description: 格式化存储卡回复指令
+ * Author: lsy
+ * Date: 2025年11月24日9:31
+ **/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class FormatSdCardReplyCmd extends BaseCmd {
+    private final byte result;             // 执行结果
+    private final Integer errorCode;       // 错误码
+    public FormatSdCardReplyCmd(String boxSn, Byte result, Integer errorCode) {
+        setDataHeader((short) 0x6A77);
+        setDataLength((short) 20);
+        setBoxSn(boxSn.getBytes());
+        setCmdCode((byte) 0xD1);
+        this.result = result;
+        this.errorCode = errorCode;
+    }
+    @Override
+    public void encode(ByteBuf out) {
+
+    }
+}
diff --git a/ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolDecoder.java b/ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolDecoder.java
index 10ea780..a36e068 100644
--- a/ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolDecoder.java
+++ b/ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolDecoder.java
@@ -1,6 +1,7 @@
 package com.ard.work.component.netty.handler;// MessageProtocolDecoder.java
 
 import com.ard.common.utils.ByteUtils;
+import com.ard.work.component.netty.command.camera.*;
 import com.ard.work.component.netty.command.manual.*;
 import com.ard.work.component.netty.command.wayline.*;
 import com.ard.work.domain.dto.converter.realdata.UavSignalInfoConverter;
@@ -10,13 +11,8 @@
 import com.ard.work.domain.dto.state.UavState;
 import com.ard.work.domain.dto.telemetry.TelemetryData;
 import com.ard.work.component.netty.command.BaseCmd;
-import com.ard.work.component.netty.command.camera.CameraModeReplyCmd;
-import com.ard.work.component.netty.command.camera.CapturePicReplyCmd;
-import com.ard.work.component.netty.command.camera.RecordStartReplyCmd;
-import com.ard.work.component.netty.command.camera.RecordStopReplyCmd;
 import com.ard.work.component.netty.command.notice.BoxPowerStatusReplyCmd;
 import com.ard.work.component.netty.command.notice.FlyWayEndReplyCmd;
-import com.ard.work.component.netty.command.camera.PicUploadCompletedReplyCmd;
 import com.ard.work.component.netty.command.notice.UavReadyReplyCmd;
 import com.ard.work.component.netty.command.real.SignalInfoCmd;
 import com.ard.work.component.netty.command.real.UavStateCmd;
@@ -190,6 +186,8 @@
                 return new FlyWayEndReplyCmd(boxSn, result, errorCode);
             // Special cases
             case 0x3D:
+            case 0x40:
+                return new FormatSdCardReplyCmd(boxSn, result, errorCode);
             case 0x42:
                 return processSpecialD1ReplyCmd(in, actionCode, boxSn);
             // Add other cases...
diff --git a/ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolEncoder.java b/ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolEncoder.java
index ec54797..9e53cbf 100644
--- a/ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolEncoder.java
+++ b/ard-work/src/main/java/com/ard/work/component/netty/handler/MessageProtocolEncoder.java
@@ -7,6 +7,8 @@
 import io.netty.handler.codec.MessageToByteEncoder;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.Arrays;
+
 @Slf4j
 public class MessageProtocolEncoder extends MessageToByteEncoder<BaseCmd> {
     @Override
@@ -24,9 +26,23 @@
         // 打印编码后的字节数组
         byte[] encodedBytes = new byte[out.readableBytes()]; // 创建字节数组,大小为可读字节数
         out.getBytes(out.readerIndex(), encodedBytes); // 读取ByteBuf中的字节到字节数组中
-        // log.warn("Encoded message bytes: {}", Arrays.toString(encodedBytes));
         // 将字节数组转换为十六进制格式
         String hexString = ByteUtils.bytesToHexWithSpaces(encodedBytes);
-        log.debug("Encoded message in hex: {}", hexString);
+        log.warn("Encoded message in hex: {}", hexString);
+    }
+
+    public byte[] testParameters() {
+        String data = "74 79 01 3C 44 42 4D 32 35 30 39 37 34 30 36 35 30 30 38 D1 00 10 08 01 15 00 00 70 41 1D 00 00 00 41 22 4A 09 06 9C E7 80 8B F0 59 40 11 08 98 33 BA 07 1D 3F 40 1D 00 00 F0 41 25 00 00 00 41 2A 09 08 01 15 00 00 20 41 18 02 2A 09 08 03 15 00 00 80 3F 18 02 2A 09 08 04 15 00 00 80 3F 18 02 30 01 58 FF FF FF FF FF FF FF FF FF 01 22 55 09 F1 BC 12 50 7A F0 59 40 11 08 98 33 BA 07 1D 3F 40 1D 00 00 20 42 25 00 00 00 41 2A 09 08 09 15 00 00 A0 41 18 02 2A 09 08 06 15 00 00 20 42 18 02 2A 09 08 07 15 00 00 20 42 18 02 2A 09 08 08 15 00 00 20 42 18 02 30 01 58 FF FF FF FF FF FF FF FF FF 01 22 3F 09 F1 BC 12 50 7A F0 59 40 11 91 92 E4 DA CC 1C 3F 40 1D 00 00 48 42 25 00 00 00 41 2A 09 08 09 15 00 00 70 41 18 02 2A 09 08 0A 15 00 00 40 40 18 02 30 01 58 FF FF FF FF FF FF FF FF FF 01 22 34 09 06 9C E7 80 8B F0 59 40 11 91 92 E4 DA CC 1C 3F 40 1D 00 00 70 42 25 00 00 00 41 2A 09 08 02 15 00 00 80 3F 18 02 30 01 58 FF FF FF FF FF FF FF FF FF 01 30 32 70 32";
+        String[] hexStrings = data.split(" ");
+        StringBuilder sb = new StringBuilder();
+        sb.append("byte[] encodedBytes = {");
+        for (int i = 0; i < hexStrings.length; i++) {
+            sb.append("(byte) 0x").append(hexStrings[i]);
+            if (i < hexStrings.length - 1) {
+                sb.append(", ");
+            }
+        }
+        sb.append("};");
+        return sb.toString().getBytes();
     }
 }
diff --git a/ard-work/src/main/java/com/ard/work/domain/dto/camera/FormatSdCardDTO.java b/ard-work/src/main/java/com/ard/work/domain/dto/camera/FormatSdCardDTO.java
new file mode 100644
index 0000000..bc28d8d
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/work/domain/dto/camera/FormatSdCardDTO.java
@@ -0,0 +1,19 @@
+package com.ard.work.domain.dto.camera;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * Description: 格式化存储卡实体对象
+ * Author: lsy
+ * Date: 2025年11月24日9:39
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class FormatSdCardDTO {
+    private String boxSn;
+}
diff --git a/ard-work/src/main/java/com/ard/work/service/ITyService.java b/ard-work/src/main/java/com/ard/work/service/ITyService.java
index c8fd86e..b5b1350 100644
--- a/ard-work/src/main/java/com/ard/work/service/ITyService.java
+++ b/ard-work/src/main/java/com/ard/work/service/ITyService.java
@@ -112,6 +112,11 @@
     Boolean speedControl(SpeedControlDTO speedControlDto);
 
     /**
+     * 格式化存储卡
+     */
+    Boolean formatSdCard(FormatSdCardDTO formatSdCardDTO);
+
+    /**
      * 设置相机模式
      */
     Boolean updateCameraMode(CameraModeDTO cameraModeDTO);
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
index 4172edb..09b3fdc 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdDroneInfoServiceImpl.java
@@ -287,7 +287,7 @@
             // 只有在线的无人机才存 Redis
             String redisKey = CacheConstants.UAV_ONLINE_KEY + boxSn;
             if (remote.getOnLine() == 1) {
-                redisCache.setCacheObject(redisKey, remote, 10, TimeUnit.SECONDS);
+                redisCache.setCacheObject(redisKey, remote, 30, TimeUnit.SECONDS);
             } else {
                 redisCache.deleteObject(CacheConstants.UAV_ONLINE_KEY + boxSn);
             }
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
index 22b68f0..6543a15 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
@@ -287,6 +287,18 @@
         return true;
     }
 
+    @Override
+    public Boolean formatSdCard(FormatSdCardDTO formatSdCardDTO) {
+        String boxSn = formatSdCardDTO.getBoxSn();
+        ArdDroneInfo ardDroneInfo = ardDroneService.selectArdDroneByboxSn(boxSn);
+        if (ardDroneInfo == null) {
+            throw new ControlException("未找到对应的飞行器信息,boxSn:{}" + boxSn);
+        }
+        FormatSdCardCmd formatSdCardCmd = new FormatSdCardCmd(formatSdCardDTO);
+        this.sendMessage(ardDroneInfo.getServerId(), formatSdCardCmd);
+        return true;
+    }
+
     /**
      * 设置相机模式
      */
@@ -750,7 +762,9 @@
             throw new ControlException("未找到对应的飞行器信息,boxSn:{}" + boxSn);
         }
         //wayLineUploadDTO.setWayLineData(this.CreatePlanLineData());//设置航线数据
+        System.out.println("wayLineUploadDTO:-----------------" + wayLineUploadDTO);
         WayLineUploadCmd wayLineUploadCmd = new WayLineUploadCmd(wayLineUploadDTO);
+        System.out.println("wayLineUploadCmd:-----------------" + wayLineUploadCmd);
         this.sendMessage(ardDroneInfo.getServerId(), wayLineUploadCmd);
         return true;
     }
@@ -932,6 +946,11 @@
                     FlyWayEndReplyCmd flyWayEndReplyCmd = (FlyWayEndReplyCmd) tyCommand;
                     logPrint("无人机飞行结束", flyWayEndReplyCmd.getResult(), flyWayEndReplyCmd.getErrorCode());
                 }
+                //格式化存储卡
+                if (tyCommand instanceof FormatSdCardReplyCmd) {
+                    FormatSdCardReplyCmd formatSdCardReplyCmd = (FormatSdCardReplyCmd) tyCommand;
+                    logPrint("格式化存储卡", formatSdCardReplyCmd.getResult(), formatSdCardReplyCmd.getErrorCode());
+                }
                 if (tyCommand instanceof CapturePicReplyCmd) {
                     CapturePicReplyCmd capturePicReplyCommand = (CapturePicReplyCmd) tyCommand;
                     logPrint("无人机拍照", capturePicReplyCommand.getResult(), capturePicReplyCommand.getErrorCode());

--
Gitblit v1.9.3