From 360af284c3656f9f3df16f0dcda36a0d25453b18 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Tue, 20 Aug 2024 18:06:35 +0800
Subject: [PATCH] 机场设备和无人机设备推送,图片、文件上传类型区分举证、航点和航测

---
 src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java         |    2 
 src/main/java/com/dji/sample/droneairport/utils/SM4Util.java                       |   26 -
 src/main/java/com/dji/sample/droneairport/utils/SM2/Test.java                      |   10 
 src/main/java/com/dji/sample/wayline/model/dto/WaylineFileDTO.java                 |    2 
 src/main/java/com/dji/sample/droneairport/controller/RegistController.java         |   62 +++-
 src/main/java/com/dji/sample/wayline/dao/IWaylineJobBreakPointMapper.java          |    2 
 src/main/java/com/dji/sample/speak/util/AudioConverter.java                        |   55 ++++
 src/main/java/com/dji/sample/droneairport/service/RegistService.java               |   12 
 src/main/java/com/dji/sample/patches/controller/PatchesController.java             |   20 
 src/main/java/com/dji/sample/wayline/model/entity/WaylineFileEntity.java           |    3 
 src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java               |  183 +++++--------
 src/main/java/com/dji/sample/droneairport/service/impl/RegistServiceImpl.java      |  149 +++++++----
 src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java                      |   12 
 src/main/java/com/dji/sample/media/model/MediaFileEntity.java                      |    3 
 src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java      |   14 
 src/main/java/com/dji/sample/media/service/IFileService.java                       |    2 
 src/main/java/com/dji/sample/common/model/ResponseResult.java                      |    2 
 src/main/java/com/dji/sample/patches/utils/TimerUtil.java                          |  194 ++++++++++----
 src/main/java/com/dji/sample/speak/controller/SpeakVoiceController.java            |    6 
 src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java |    4 
 src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java              |    8 
 21 files changed, 466 insertions(+), 305 deletions(-)

diff --git a/src/main/java/com/dji/sample/common/model/ResponseResult.java b/src/main/java/com/dji/sample/common/model/ResponseResult.java
index dca4c19..2317e93 100644
--- a/src/main/java/com/dji/sample/common/model/ResponseResult.java
+++ b/src/main/java/com/dji/sample/common/model/ResponseResult.java
@@ -48,7 +48,7 @@
                 .build();
     }
 
-    public static<T> ResponseResult success(int code, String message,String traceid,T data) {
+    public static<T> ResponseResult success(int code, String message,T data,String traceid) {
         return ResponseResult.builder()
                 .code(code)
                 .data(data)
diff --git a/src/main/java/com/dji/sample/droneairport/controller/RegistController.java b/src/main/java/com/dji/sample/droneairport/controller/RegistController.java
index f90c8c7..7bec1ad 100644
--- a/src/main/java/com/dji/sample/droneairport/controller/RegistController.java
+++ b/src/main/java/com/dji/sample/droneairport/controller/RegistController.java
@@ -5,12 +5,19 @@
 import com.dji.sample.droneairport.dao.DeviceExpanSionMapper;
 import com.dji.sample.droneairport.model.param.ReturnTaskParam;
 import com.dji.sample.droneairport.service.RegistService;
+import com.dji.sample.droneairport.utils.SM2.Utils;
+import com.dji.sample.droneairport.utils.SM4Util;
 import com.dji.sample.manage.service.impl.DeviceRedisServiceImpl;
+import org.bouncycastle.crypto.InvalidCipherTextException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.Map;
 
 import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM;
 
@@ -41,43 +48,60 @@
         return ResponseResult.success(registService.addDrone(workspaceId));
     }
 
-    @GetMapping("/getDroneStatus/{deviceid}")
-    public ResponseResult droneStatus(@PathVariable(name = "deviceid") String deviceid, HttpServletResponse response) throws Exception {
-        return ResponseResult.success(registService.getDroneState(deviceid));
+    @GetMapping("/getDroneStatus")
+    public ResponseResult droneStatus(@RequestParam String deviceid, HttpServletResponse response) throws Exception {
+        Map<String, String> info=registService.getDroneState(deviceid);
+        response.setHeader("x-lc-secret", info.get("serect"));
+        return ResponseResult.success(info.get("text"));
     }
 
     @PostMapping("/AddTask")
-    public ResponseResult AddTask(HttpServletRequest request, @RequestBody String body) throws Exception {
+    public ResponseResult AddTask(HttpServletRequest request, @RequestBody String body,HttpServletResponse response) throws Exception {
         String headerValue = request.getHeader("x-lc-secret");
         CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
         String creator = customClaim.getUsername();
-        ReturnTaskParam param = registService.AddTask(body, headerValue, creator);
-        return ResponseResult.success(200, "无人机机场任务添加成功", param.getTraceId(), param.getJobId());
-    }
-
-    @GetMapping("/cancelTask/{taskId}")
-    public ResponseResult cancelTask(@PathVariable(name = "taskId") String taskId) {
-        return ResponseResult.success(registService.cancelTask(taskId));
+        Map<String, String> info = registService.AddTask(body, headerValue, creator);
+        response.setHeader("x-lc-secret", info.get("serect"));
+        return ResponseResult.success(200, "无人机机场任务添加成功", info.get("traceId"), info.get("jobId"));
     }
 
     @PostMapping("/updateTask")
-    public ResponseResult updateTask(HttpServletRequest request, @RequestBody String body) throws Exception {
+    public ResponseResult updateTask(HttpServletRequest request, @RequestBody String body,HttpServletResponse response) throws Exception {
         String headerValue = request.getHeader("x-lc-secret");
         CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
         String creator = customClaim.getUsername();
-        ReturnTaskParam param = registService.updateTask(body, headerValue, creator);
-        return ResponseResult.success(200, "无人机机场任务添加成功", param.getTraceId(), param.getJobId());
+        Map<String, String>  info = registService.updateTask(body, headerValue, creator);
+        response.setHeader("x-lc-secret", info.get("serect"));
+        return ResponseResult.success(200, "无人机机场任务更新成功", info.get("traceId"), info.get("jobId"));
+    }
+
+    @GetMapping("/cancelTask")
+    public ResponseResult cancelTask(@RequestParam String taskid) {
+        return ResponseResult.success(registService.cancelTask(taskid));
     }
     @PostMapping("/queryTaskStatus")
     public ResponseResult queryTaskStatus(HttpServletRequest request, @RequestParam String taskid) throws Exception {
         return registService.queryTaskStatus(taskid);
     }
-    @GetMapping("/getResult/{taskId}")
-    public ResponseResult getResult(@PathVariable(name = "taskId") String taskId) {
-        return ResponseResult.success(200, "无人机成果获取成功!",registService.findDbFilesByTaskId(taskId));
+    @GetMapping("/getResult")
+    public ResponseResult getResult(@RequestParam String taskid,HttpServletResponse response) throws InvalidCipherTextException, IOException {
+        Map<String, String>  info = registService.findDbFilesByTaskId(taskid);
+        response.setHeader("x-lc-secret", info.get("serect"));
+        return ResponseResult.success(200, "无人机成果获取成功!",info.get("data"), info.get("traceId"));
     }
     @PostMapping("/test")
-    public ResponseResult test(@RequestParam String workspaceId) {
-        return ResponseResult.success(registService.getDistinctTaskIdCount(workspaceId));
+    public ResponseResult test(HttpServletRequest request,@RequestBody String param,HttpServletResponse response) throws Exception {
+        String headerValue = request.getHeader("x-lc-secret");
+        headerValue=Utils.convertBase64ToHex(headerValue);
+        headerValue=Utils.decrypt(headerValue, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3");
+        System.out.println(headerValue);
+        String value=SM4Util.decrypt(headerValue,param);
+        System.out.println(value);
+        String sm= SM4Util.generateSM4Key();
+        String values=SM4Util.encrypt(sm,value);
+        String pub=Utils.encrypt(sm,"04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F");
+        pub=Utils.hexToBase64(pub);
+        response.setHeader("x-lc-secret", pub);
+        return ResponseResult.success(values);
     }
 }
diff --git a/src/main/java/com/dji/sample/droneairport/service/RegistService.java b/src/main/java/com/dji/sample/droneairport/service/RegistService.java
index d4189bd..b50d9d9 100644
--- a/src/main/java/com/dji/sample/droneairport/service/RegistService.java
+++ b/src/main/java/com/dji/sample/droneairport/service/RegistService.java
@@ -3,8 +3,12 @@
 import com.dji.sample.common.model.ResponseResult;
 import com.dji.sample.droneairport.model.Entity.DeviceExpanSionEntity;
 import com.dji.sample.droneairport.model.param.ReturnTaskParam;
+import org.bouncycastle.crypto.InvalidCipherTextException;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 public interface RegistService {
 
@@ -28,7 +32,7 @@
      * @return 返回一个包含无人机状态信息的ResponseResult对象
      * @throws Exception 如果在获取无人机状态过程中发生错误,将抛出异常
      */
-    String getDroneState(String deviceId) throws Exception;
+    Map<String, String>  getDroneState(String deviceId) throws Exception;
 
     /**
      * 执行授权操作
@@ -49,7 +53,7 @@
      * @return 返回一个包含任务添加结果的ReturnParam对象,具体结果包括成功与否、错误信息等
      * @throws Exception 如果在任务添加过程中发生错误,将抛出异常
      */
-    ReturnTaskParam AddTask(String base64, String Secret, String username) throws Exception;
+    Map<String, String> AddTask(String base64, String Secret, String username) throws Exception;
 
     /**
      * 更新任务状态
@@ -60,7 +64,7 @@
      * @return 包含更新后任务状态信息的返回参数
      * @throws Exception 如果更新任务状态过程中发生错误,将抛出异常
      */
-    ReturnTaskParam updateTask(String base64, String Secret, String username) throws Exception;
+    Map<String, String>  updateTask(String base64, String Secret, String username) throws Exception;
 
     /**
      * 取消指定任务
@@ -86,7 +90,7 @@
      * @return 返回一个包含无人机状态信息的ResponseResult对象
      * @throws Exception 如果在获取无人机状态过程中发生错误,将抛出异常
      */
-    String findDbFilesByTaskId(String taskId);
+    Map<String,String> findDbFilesByTaskId(String taskId) throws InvalidCipherTextException, IOException;
     /**
      * 获取指定工作空间中不同任务的总数
      *
diff --git a/src/main/java/com/dji/sample/droneairport/service/impl/RegistServiceImpl.java b/src/main/java/com/dji/sample/droneairport/service/impl/RegistServiceImpl.java
index f1ea661..91959c0 100644
--- a/src/main/java/com/dji/sample/droneairport/service/impl/RegistServiceImpl.java
+++ b/src/main/java/com/dji/sample/droneairport/service/impl/RegistServiceImpl.java
@@ -47,6 +47,7 @@
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
@@ -54,9 +55,9 @@
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.dji.sample.droneairport.utils.AuthUtil.getToken;
 import static com.dji.sample.droneairport.utils.TaskAllocator.assignTasks;
-import static com.dji.sample.patches.utils.TimerUtil.getCurrentTimestampPlus8Hours;
-import static com.dji.sample.patches.utils.TimerUtil.getNextDayEightAMTimestamp;
+import static com.dji.sample.patches.utils.TimerUtil.*;
 
 @Service
 public class RegistServiceImpl implements RegistService {
@@ -84,26 +85,39 @@
     public String registPort(DeviceExpanSionEntity airport) {
         try {
             RegistDto registDto = airportEntityToDto(airport);
+            String secret = SM4Util.generateSM4Key();
             String jsonBody = buildRequestBody(registDto);
-            String base64 = SM4Util.encrypt("jsimjrby3wqb7dbq", jsonBody);
+            String base64 = SM4Util.encrypt(secret, jsonBody);
+            String keys=Utils.encrypt(secret,"04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F");
+            String enSM2=Utils.hexToBase64(keys);
             // 设置请求头
             HttpHeaders headers = new HttpHeaders();
             headers.setContentType(MediaType.APPLICATION_JSON);
             headers.setAccept(List.of(MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN, MediaType.ALL));
             headers.set("Accept-Language", "zh-CN,zh;q=0.9");
             headers.setConnection("keep-alive");
-            headers.set("x-auth-token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3b3Jrc3BhY2VfaWQiOiJlM2RlYTBmNS0zN2YyLTRkNzktYWU1OC00OTBhZjMyMjgwNjkiLCJzdWIiOiJDbG91ZEFwaVNhbXBsZSIsInVzZXJfdHlwZSI6IjEiLCJuYmYiOjE3MjA2NTg3NDMsImxvZyI6IkxvZ2dlcltjb20uZGppLnNhbXBsZS5jb21tb24ubW9kZWwuQ3VzdG9tQ2xhaW1dIiwiaXNzIjoiREpJIiwiaWQiOiI5Y2MwMGY3Zi0yODMwLTRmM2UtYjdmNC1lN2E1ZjIzYjNjNGYiLCJleHAiOjE4MDcwNTg3NDMsImlhdCI6MTcyMDY1ODc0MywidXNlcm5hbWUiOiJhZG1pbkRQIn0.CrRFYUTK357HleqrrfL7nLdwFJw5Bcv3ms33n_Or8eM");
-            headers.set("x-lc-token", "");
+            headers.set("x-lc-token", getToken());
+            headers.set("x-auth-token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3b3Jrc3BhY2VfaWQiOiJlM2RlYTBmNS0zN2YyLTRkNzktYWU1OC00OTBhZjMyMjgwNjkiLCJzdWIiOiJDbG91ZEFwaVNhbXBsZSIsInVzZXJfdHlwZSI6IjEiLCJuYmYiOjE3MTg1ODUxNTQsImxvZyI6IkxvZ2dlcltjb20uZGppLnNhbXBsZS5jb21tb24ubW9kZWwuQ3VzdG9tQ2xhaW1dIiwiaXNzIjoiREpJIiwiaWQiOiI5Y2MwMGY3Zi0yODMwLTRmM2UtYjdmNC1lN2E1ZjIzYjNjNGYiLCJleHAiOjE4MDQ5ODUxNTQsImlhdCI6MTcxODU4NTE1NCwidXNlcm5hbWUiOiJhZG1pbkRQIn0.eTi9DTYGwcTvnIZasKTFq9OHQgMFS1-m840terb7ss0");
+
+            headers.set("x-lc-secret", enSM2);
             // 构建请求实体
             HttpEntity<String> requestEntity = new HttpEntity<>(base64, headers);
             // 发送请求
             ResponseEntity<String> response = restTemplate.exchange(
-                    "http://localhost:6789/droneAirport/test",
+                    "https://xcx.geoway.com.cn:8033/v1/droneAirport/RegistService",
                     HttpMethod.POST,
                     requestEntity,
                     String.class);
-            return response.getBody();
+            HttpHeaders responseHeaders = response.getHeaders();
+            String responseSecret = responseHeaders.getFirst("x-lc-secret");
 
+            String data=deSM2(responseSecret, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3");
+
+            // 使用 Hutool 的 JSONUtil 解析 JSON 字符串
+            JSONObject jsonObject = JSONUtil.parseObj(response.getBody());
+            // 提取 data 字段的值
+            String dataValue = jsonObject.getStr("data");
+            return SM4Util.decrypt(data,dataValue);
         } catch (Exception e) {
             // 异常处理
             throw new IllegalArgumentException("无人机机场注册失败: " + e.getMessage());
@@ -136,41 +150,57 @@
                     .eq(DeviceExpanSionEntity::getWorkspaceId, workspaceId)
                     .eq(DeviceExpanSionEntity::getType, 1));
             AddDeviceDto dto = deviceEntityToDto(drone);
+            String secret = SM4Util.generateSM4Key();
             // 构建请求体
             String jsonBody = buildRequestBody(dto);
-            String base64 = SM4Util.encrypt("jsimjrby3wqb7dbq", jsonBody);
+            String base64 = SM4Util.encrypt(secret, jsonBody);
+            String keys=Utils.encrypt(secret,"04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F");
+            String enSM2=Utils.hexToBase64(keys);
+//            registPort(airport);
             // 设置请求头
-
             HttpHeaders headers = new HttpHeaders();
             headers.setContentType(MediaType.APPLICATION_JSON);
             headers.setAccept(List.of(MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN, MediaType.ALL));
             headers.set("Accept-Language", "zh-CN,zh;q=0.9");
             headers.setConnection("keep-alive");
-            headers.set("x-auth-token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3b3Jrc3BhY2VfaWQiOiJlM2RlYTBmNS0zN2YyLTRkNzktYWU1OC00OTBhZjMyMjgwNjkiLCJzdWIiOiJDbG91ZEFwaVNhbXBsZSIsInVzZXJfdHlwZSI6IjEiLCJuYmYiOjE3MjA2NTg3NDMsImxvZyI6IkxvZ2dlcltjb20uZGppLnNhbXBsZS5jb21tb24ubW9kZWwuQ3VzdG9tQ2xhaW1dIiwiaXNzIjoiREpJIiwiaWQiOiI5Y2MwMGY3Zi0yODMwLTRmM2UtYjdmNC1lN2E1ZjIzYjNjNGYiLCJleHAiOjE4MDcwNTg3NDMsImlhdCI6MTcyMDY1ODc0MywidXNlcm5hbWUiOiJhZG1pbkRQIn0.CrRFYUTK357HleqrrfL7nLdwFJw5Bcv3ms33n_Or8eM");
-            headers.set("x-lc-token", "");
+            headers.set("x-auth-token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3b3Jrc3BhY2VfaWQiOiJlM2RlYTBmNS0zN2YyLTRkNzktYWU1OC00OTBhZjMyMjgwNjkiLCJzdWIiOiJDbG91ZEFwaVNhbXBsZSIsInVzZXJfdHlwZSI6IjEiLCJuYmYiOjE3MTg1ODUxNTQsImxvZyI6IkxvZ2dlcltjb20uZGppLnNhbXBsZS5jb21tb24ubW9kZWwuQ3VzdG9tQ2xhaW1dIiwiaXNzIjoiREpJIiwiaWQiOiI5Y2MwMGY3Zi0yODMwLTRmM2UtYjdmNC1lN2E1ZjIzYjNjNGYiLCJleHAiOjE4MDQ5ODUxNTQsImlhdCI6MTcxODU4NTE1NCwidXNlcm5hbWUiOiJhZG1pbkRQIn0.eTi9DTYGwcTvnIZasKTFq9OHQgMFS1-m840terb7ss0");
+            headers.set("x-lc-token", getToken());
+            headers.set("x-lc-secret", (enSM2));
             // 构建请求实体
             HttpEntity<String> requestEntity = new HttpEntity<>(base64, headers);
             // 发送请求
             ResponseEntity<String> response = restTemplate.exchange(
-                    "http://localhost:6789/droneAirport/test",
+                    "https://xcx.geoway.com.cn:8033/v1/droneAirport/addDevice",
                     HttpMethod.POST,
                     requestEntity,
                     String.class);
-            registPort(airport);
-            return response.getBody();
+            HttpHeaders responseHeaders = response.getHeaders();
+            String responseSecret = responseHeaders.getFirst("x-lc-secret");
 
+            String data=deSM2(responseSecret, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3");
+
+            // 使用 Hutool 的 JSONUtil 解析 JSON 字符串
+            JSONObject jsonObject = JSONUtil.parseObj(response.getBody());
+            // 提取 data 字段的值
+            String dataValue = jsonObject.getStr("data");
+            return SM4Util.decrypt(data,dataValue);
         } catch (Exception e) {
             // 异常处理
-            throw new IllegalArgumentException("无人机机场设备注册失败: " + e.getMessage());
+            return ("无人机机场设备注册失败: " + e.getMessage());
         }
     }
 
     @Override
-    public String getDroneState(String deviceId) throws Exception {
+    public Map<String, String> getDroneState(String deviceId) throws Exception {
+        String key = SM4Util.generateSM4Key();
+        String secret = Utils.encrypt(key, "04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F");
         DroneStateDto data = getAirportFromCache(deviceId);
         String json = JSON.toJSONString(data);
-        String SM4Screct = SM4Util.encrypt("jsimjrby3wqb7dbq", json);
-        return SM4Screct;
+        String SM4Screct = SM4Util.encrypt(key, json);
+        Map<String, String> info = new HashMap<>();
+        info.put("text", SM4Screct);
+        info.put("serect", secret);
+        return info;
     }
 
     //    @Override
@@ -191,20 +221,20 @@
         dto.setSn(sn);
         dto.setStatus(0);
         String jsonBody = buildRequestBody(dto);
-        String base64 = SM4Util.encrypt("jsimjrby3wqb7dbq", jsonBody);
+        String base64 = SM4Util.encrypt(SM4Util.generateSM4Key(), jsonBody);
         // 设置请求头
         HttpHeaders headers = new HttpHeaders();
         headers.setContentType(MediaType.APPLICATION_JSON);
         headers.setAccept(List.of(MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN, MediaType.ALL));
         headers.set("Accept-Language", "zh-CN,zh;q=0.9");
         headers.setConnection("keep-alive");
-        headers.set("x-auth-token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3b3Jrc3BhY2VfaWQiOiJlM2RlYTBmNS0zN2YyLTRkNzktYWU1OC00OTBhZjMyMjgwNjkiLCJzdWIiOiJDbG91ZEFwaVNhbXBsZSIsInVzZXJfdHlwZSI6IjEiLCJuYmYiOjE3MjA2NTg3NDMsImxvZyI6IkxvZ2dlcltjb20uZGppLnNhbXBsZS5jb21tb24ubW9kZWwuQ3VzdG9tQ2xhaW1dIiwiaXNzIjoiREpJIiwiaWQiOiI5Y2MwMGY3Zi0yODMwLTRmM2UtYjdmNC1lN2E1ZjIzYjNjNGYiLCJleHAiOjE4MDcwNTg3NDMsImlhdCI6MTcyMDY1ODc0MywidXNlcm5hbWUiOiJhZG1pbkRQIn0.CrRFYUTK357HleqrrfL7nLdwFJw5Bcv3ms33n_Or8eM");
-        headers.set("x-lc-token", "");
+        headers.set("x-lc-token", "eyJvcmdjb2RlIjoiMDAwMDAwMDAwMDAwMDAwMDAwIiwib3JnbmFtZSI6IuWbveWcn+iwg+afpeS6keaXoOS6uuacuuaOpeWPo+a1i+ivleivgeS5puS4peemgeeUqOS6juato+W8j+eOr+WigyIsImNlcnRjb2RlIjoiVUFWMzJfV0hSNEUzVUFKWlRFM0tFNUlaRkRHTDdDQlUiLCJjZXJ0b3JnY29kZSI6IjEyMTAwMDAwNDAwMDEwMzk4UCIsImNlcnRvcmduYW1lIjoi5Lit5Zu95Zu95Zyf5YuY5rWL6KeE5YiS6ZmiIiwiZXhwaXJhdGlvbiI6IjIwMjQtMTItMzEgMTU6NDY6MzIiLCJwdWJsaWNrZXkiOiIwNDIyNUFBQ0Y2MDZEODAwRUEzQzJDMzFGQ0Y4RkIxNjFCMTVGN0E4RDA0NjBERUI5MTAxM0Q0RjIyOEM0NTVFNzZBMkVEOEQ3MUJDNjUyNUI1REM1Q0MwMTVDMTU1NDc5RDg4Mzk5NTAzNDRBRUU0MzhBM0E2MzA1QzkwRjgyNjlGIiwic2lnbiI6IkI4OTVGQUM1Qzk4NzM5RURGNzFBRkE2QjM4NDEzQUIzNDRCRTBDQjE1RTk3MDQ3Nzk5QTczNUM0MjBEMkZFMzdENkE1NjJFQTlFMUFBRjFBNjhBRDJERjE0QzhEMThBOEY5N0JENzUyOUE2NDRERDA3NkI2NDM1OTg5QkQxREIwIiwiY2VydHR5cGUiOiLml6DkurrmnLrkuL7or4Hor4HkuaYiLCJyZWdpb25jb2RlIjoiMDAwMDAwIn0=");
+        headers.set("x-lc-secret", "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3");
         // 构建请求实体
         HttpEntity<String> requestEntity = new HttpEntity<>(base64, headers);
         // 发送请求
         ResponseEntity<String> response = restTemplate.exchange(
-                "http://localhost:6789/droneAirport/test",
+                "https://xcx.geoway.com.cn:8033/v1/droneAirport/authorization",
                 HttpMethod.POST,
                 requestEntity,
                 String.class);
@@ -216,31 +246,33 @@
         dto.setSn(sn);
         dto.setStatus(1);
         String jsonBody = buildRequestBody(dto);
-        String base64 = SM4Util.encrypt("jsimjrby3wqb7dbq", jsonBody);
+        String base64 = SM4Util.encrypt(SM4Util.generateSM4Key(), jsonBody);
         // 设置请求头
         HttpHeaders headers = new HttpHeaders();
         headers.setContentType(MediaType.APPLICATION_JSON);
         headers.setAccept(List.of(MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN, MediaType.ALL));
         headers.set("Accept-Language", "zh-CN,zh;q=0.9");
         headers.setConnection("keep-alive");
-        headers.set("x-auth-token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ3b3Jrc3BhY2VfaWQiOiJlM2RlYTBmNS0zN2YyLTRkNzktYWU1OC00OTBhZjMyMjgwNjkiLCJzdWIiOiJDbG91ZEFwaVNhbXBsZSIsInVzZXJfdHlwZSI6IjEiLCJuYmYiOjE3MjA2NTg3NDMsImxvZyI6IkxvZ2dlcltjb20uZGppLnNhbXBsZS5jb21tb24ubW9kZWwuQ3VzdG9tQ2xhaW1dIiwiaXNzIjoiREpJIiwiaWQiOiI5Y2MwMGY3Zi0yODMwLTRmM2UtYjdmNC1lN2E1ZjIzYjNjNGYiLCJleHAiOjE4MDcwNTg3NDMsImlhdCI6MTcyMDY1ODc0MywidXNlcm5hbWUiOiJhZG1pbkRQIn0.CrRFYUTK357HleqrrfL7nLdwFJw5Bcv3ms33n_Or8eM");
-        headers.set("x-lc-token", "");
+        headers.set("x-lc-token", "eyJvcmdjb2RlIjoiMDAwMDAwMDAwMDAwMDAwMDAwIiwib3JnbmFtZSI6IuWbveWcn+iwg+afpeS6keaXoOS6uuacuuaOpeWPo+a1i+ivleivgeS5puS4peemgeeUqOS6juato+W8j+eOr+WigyIsImNlcnRjb2RlIjoiVUFWMzJfV0hSNEUzVUFKWlRFM0tFNUlaRkRHTDdDQlUiLCJjZXJ0b3JnY29kZSI6IjEyMTAwMDAwNDAwMDEwMzk4UCIsImNlcnRvcmduYW1lIjoi5Lit5Zu95Zu95Zyf5YuY5rWL6KeE5YiS6ZmiIiwiZXhwaXJhdGlvbiI6IjIwMjQtMTItMzEgMTU6NDY6MzIiLCJwdWJsaWNrZXkiOiIwNDIyNUFBQ0Y2MDZEODAwRUEzQzJDMzFGQ0Y4RkIxNjFCMTVGN0E4RDA0NjBERUI5MTAxM0Q0RjIyOEM0NTVFNzZBMkVEOEQ3MUJDNjUyNUI1REM1Q0MwMTVDMTU1NDc5RDg4Mzk5NTAzNDRBRUU0MzhBM0E2MzA1QzkwRjgyNjlGIiwic2lnbiI6IkI4OTVGQUM1Qzk4NzM5RURGNzFBRkE2QjM4NDEzQUIzNDRCRTBDQjE1RTk3MDQ3Nzk5QTczNUM0MjBEMkZFMzdENkE1NjJFQTlFMUFBRjFBNjhBRDJERjE0QzhEMThBOEY5N0JENzUyOUE2NDRERDA3NkI2NDM1OTg5QkQxREIwIiwiY2VydHR5cGUiOiLml6DkurrmnLrkuL7or4Hor4HkuaYiLCJyZWdpb25jb2RlIjoiMDAwMDAwIn0=");
+        headers.set("x-lc-secret", "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3");
         // 构建请求实体
         HttpEntity<String> requestEntity = new HttpEntity<>(base64, headers);
         // 发送请求
         ResponseEntity<String> response = restTemplate.exchange(
-                "http://localhost:6789/droneAirport/test",
+                "https://xcx.geoway.com.cn:8033/v1/droneAirport/authorization",
                 HttpMethod.POST,
                 requestEntity,
                 String.class);
     }
 
     @Override
-    public ReturnTaskParam AddTask(String base64, String Secret, String username) throws Exception {
+    public Map<String, String> AddTask(String base64, String Secret, String username) throws Exception {
         ReturnTaskParam param = new ReturnTaskParam();
+        String secret = SM4Util.generateSM4Key();
+        String retse = Utils.encrypt(secret, "04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F");
         String taskId = UUID.randomUUID().toString();
         String traceid = UUID.randomUUID().toString();
-        String sm4Secrect = deSM2(Secret, "23E57DA1E4AB865CCBC325B668762207DEF74345B782237808AE0BABDF26734D");
+        String sm4Secrect = deSM2(Secret, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3");
         String decryptedJson = SM4Util.decrypt(sm4Secrect, base64);
         JSONObject jsonObject = new JSONObject(decryptedJson);
         AddTaskDto addTaskDto = jsonToDto(jsonObject);
@@ -283,7 +315,8 @@
                 String waylineName = TimerUtil.getTimeName();
                 MultipartFile multipartFile = timerUtil.getFile(waylineName, lotInfosForAirport, airport.getLat(), airport.getLon());
                 WaylineFileEntity waylineFile = timerUtil.backWayline(multipartFile, waylineName, airport.getWorkspaceId(), username);
-                Long time = getNextDayEightAMTimestamp(getDistinctTaskIdCount(airport.getWorkspaceId()));
+//                Long time = getNextDayEightAMTimestamp(getDistinctTaskIdCount(airport.getWorkspaceId()));
+                Long time = getAdjustedTimestamp(50);
                 List<List<Long>> listOfLists = new ArrayList<>();
                 List<Long> sublist = new ArrayList<>();
                 sublist.add(time);
@@ -291,21 +324,26 @@
                 List<Long> lists1 = new ArrayList<>();
                 lists1.add(time);
                 String times = TimerUtil.convertTimestampToFormattedString(time);
-                param.setJobId(SM4Util.encrypt("jsimjrby3wqb7dbq", taskId));
+                param.setJobId(SM4Util.encrypt(secret, taskId));
                 timerUtil.sendPostWithParameters(waylineName, waylineFile.getWaylineId(), times, lists1, listOfLists, taskId + "~" + airport.getWorkspaceId(), airport.getDockSn());
                 timerUtil.updatePatchesStatu(lotInfosForAirport);
             }
         }
-
-        return param;
+        Map<String, String> info = new HashMap<>();
+        info.put("taskid", param.getJobId());
+        info.put("traceid", param.getTraceId());
+        info.put("serect", retse);
+        return info;
     }
 
 
     @Override
-    public ReturnTaskParam updateTask(String base64, String Secret, String username) throws Exception {
+    public Map<String, String>  updateTask(String base64, String Secret, String username) throws Exception {
         ReturnTaskParam param = new ReturnTaskParam();
+        String secret = SM4Util.generateSM4Key();
+        String retse = Utils.encrypt(secret, "04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F");
         String traceid = UUID.randomUUID().toString();
-        String sm4Secrect = deSM2(Secret, "23E57DA1E4AB865CCBC325B668762207DEF74345B782237808AE0BABDF26734D");
+        String sm4Secrect = deSM2(Secret, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3");
         String decryptedJson = SM4Util.decrypt(sm4Secrect, base64);
         JSONObject jsonObject = new JSONObject(decryptedJson);
         UpdataTaskDto addTaskDto = UpjsonToDto(jsonObject);
@@ -363,13 +401,16 @@
                 List<Long> lists1 = new ArrayList<>();
                 lists1.add(time);
                 String times = TimerUtil.convertTimestampToFormattedString(time);
-                param.setJobId(taskId);
+                param.setJobId(SM4Util.encrypt(secret, taskId));
                 timerUtil.sendPostWithParameters(waylineName, waylineFile.getWaylineId(), times, lists1, listOfLists, airport.getWorkspaceId() + "~" + taskId, airport.getDockSn());
                 timerUtil.updatePatchesStatu(lotInfosForAirport);
             }
         }
-
-        return param;
+        Map<String, String> info = new HashMap<>();
+        info.put("taskid", param.getJobId());
+        info.put("traceid", param.getTraceId());
+        info.put("serect", retse);
+        return info;
     }
 
     @Override
@@ -425,34 +466,28 @@
      * @param taskId 任务 ID
      * @return 匹配的 DB 文件路径列表
      */
-    public String findDbFilesByTaskId(String taskId) {
+    public Map<String,String> findDbFilesByTaskId(String taskId) throws InvalidCipherTextException, IOException {
         DbUploadEntity entity = dbUploadMapper.selectOne(new LambdaQueryWrapper<DbUploadEntity>()
                 .eq(DbUploadEntity::getTaskId, taskId));
+        String secret = SM4Util.generateSM4Key();
+        String traceId = UUID.randomUUID().toString();
+        Map<String,String> info =new HashMap<>();
+        String retse = Utils.encrypt(secret, "04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F");
         if (entity != null) {
             DbUploadDto dto = DbEntityToDto(entity);
-            return SM4Util.encrypt("jsimjrby3wqb7dbq", buildRequestBody(dto));
+            String data=buildRequestBody(dto);
+            String text=SM4Util.encrypt(secret,data);
+            info.put("data", text);
+            info.put("serect", retse);
+            info.put("traceId",traceId);
+            return info;
         }
         return null;
-
-//        File baseDir = new File(BASE_DIR);
-//
-//        // 检查基础目录是否存在并且是目录
-//        if (!baseDir.exists() || !baseDir.isDirectory()) {
-//            throw new IllegalStateException("Base directory does not exist or is not a directory.");
-//        }
-//
-//        // 构建文件路径
-//        File targetDir = new File(baseDir, taskId);
-//        File dbFile = new File(targetDir, ".db");
-//
-//        // 如果文件存在,则返回文件路径
-//        if (dbFile.exists()) {
-//            return dbFile.getAbsolutePath();
-//        }
-//
-//        return null; // 或者抛出异常,视需求而定
     }
 
+    public static void main(String[] args) {
+        getToken();
+    }
 
     public void delPatchesByTaskId(String taskId) {
         patchesMapper.delete(new LambdaUpdateWrapper<LotInfo>().eq(LotInfo::getTaskId, taskId));
diff --git a/src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java b/src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java
index 1276210..016e3ff 100644
--- a/src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java
+++ b/src/main/java/com/dji/sample/droneairport/utils/AuthUtil.java
@@ -34,19 +34,19 @@
         //签名
         byte[] signData = sm2.sign(needSignDataByte);
         String signDataHex = HexUtil.encodeHexStr(signData);
-        System.out.println("sign Hex:" + signDataHex);
+//        System.out.println("sign Hex:" + signDataHex);
         String signDataBase64 = Base64.encode(signData);
-        System.out.println("sign Base64:" + signDataBase64);
+//        System.out.println("sign Base64:" + signDataBase64);
         //生成token
         String token = certCode + "." + timestamp + "." + signDataBase64;
-        System.out.println("token:" + token);
+//        System.out.println("token:" + token);
         //SM2 token验证
         boolean rst1 = sm2.verify(needSignDataByte, signData);
-        System.out.println("verify result:" + rst1);
+//        System.out.println("verify result:" + rst1);
         boolean rst2 = sm2.verify(needSignDataByte, HexUtil.decodeHex(signDataHex));
-        System.out.println("verify result:" + rst2);
+//        System.out.println("verify result:" + rst2);
         boolean rst3 = sm2.verify(needSignDataByte, Base64.decode(signDataBase64));
-        System.out.println("verify result:" + rst3);
+//        System.out.println("verify result:" + rst3);
         return certCode + "." + timestamp + "." + signDataBase64;
     }
 
diff --git a/src/main/java/com/dji/sample/droneairport/utils/SM2/Test.java b/src/main/java/com/dji/sample/droneairport/utils/SM2/Test.java
index e6626c3..7290718 100644
--- a/src/main/java/com/dji/sample/droneairport/utils/SM2/Test.java
+++ b/src/main/java/com/dji/sample/droneairport/utils/SM2/Test.java
@@ -9,11 +9,11 @@
         System.out.println("秘钥对:" + createKeyPair);
         String privateKey = createKeyPair.get(KeyConstant.PRIVATE_KEY);
         String publicKey = createKeyPair.get(KeyConstant.PUBLIC_KEY);
-        String text = "jsimjrby3wqb7dbq";
-        String encrypt = Utils.encrypt(text, "044D6061FC08A19D3F32CEAA8CF6679B40500008FD741FC26DE7E50AEBF3A9115D47274437730EADEDAEF0CCC4853C5F0B35B30C6AEA83A5F6FBCA4ABEAC9E3B98",ModeTypeEnum.BASE_MODE.getType());
-        System.out.println("加密后密文:" + encrypt);
-        String decrypt = Utils.decrypt("04c294d1e7ebc488ede6344e2c207a33cb1e3f6fd4f7585012931a50fab43c907a8486f1df5c61e49d443ddd709aa08585a2814a766cec41ca2af908ef5a230d7d27b5600dd0b388df85616c63f711e06e32f9228129f8fece31e3a1a5eda92cdfee64ef32aa8a7a6451c7b36d32e8a4d0", "23E57DA1E4AB865CCBC325B668762207DEF74345B782237808AE0BABDF26734D",ModeTypeEnum.BASE_MODE.getType());
-        System.out.println("解密后明文:" + decrypt);
+        String text = "2bc304ccba171672";
+        String encrypt = Utils.encrypt(text, "04225AACF606D800EA3C2C31FCF8FB161B15F7A8D0460DEB91013D4F228C455E76A2ED8D71BC6525B5DC5CC015C155479D8839950344AEE438A3A6305C90F8269F",ModeTypeEnum.BASE_MODE.getType());
+        System.out.println("加密后密文:" + Utils.hexToBase64(encrypt));
+        String decrypt = Utils.decrypt(text, "00D631FD5615416EAB63D33A9E66E801F95DE840567504210080006081DE877AE3",ModeTypeEnum.BASE_MODE.getType());
+//        System.out.println("解密后明文:" + decrypt);
     }
 
 }
diff --git a/src/main/java/com/dji/sample/droneairport/utils/SM4Util.java b/src/main/java/com/dji/sample/droneairport/utils/SM4Util.java
index f952cb5..55156e0 100644
--- a/src/main/java/com/dji/sample/droneairport/utils/SM4Util.java
+++ b/src/main/java/com/dji/sample/droneairport/utils/SM4Util.java
@@ -108,8 +108,8 @@
     }
 
     public static void main(String[] args) {
-//        System.out.println(generateSM4Key());
-        byte[] key = "jsimjrby3wqb7dbq".getBytes(StandardCharsets.UTF_8); // 16字节密钥
+        System.out.println(generateSM4Key());
+        byte[] key = "2bc304ccba171672".getBytes(StandardCharsets.UTF_8); // 16字节密钥
 
         // 原始明文
         String plaintext = "{\n" +
@@ -117,7 +117,7 @@
                 "    \"1581F6QAD241800B6V95\",\n" +
                 "    \"1581F6QAD241500BDZ3J\"\n" +
                 "  ],\n" +
-                "  \"taskid\": \"f78aed9f-86cd-4a49-87da-bbb9c7a1941d\",\n" +
+                "  \"bizidname\": \"test\",\n" +
                 "  \"tasklist\": [\n" +
                 "    {\n" +
                 "      \"bsm\": \"20281071717177177\",\n" +
@@ -126,21 +126,9 @@
                 "      \"dklx\": \"ndbg2774\",\n" +
                 "      \"dkmc\": \"桥头\",\n" +
                 "      \"dkmj\": 20.574,\n" +
-                "      \"dkfw\": \"POLYGON((116.0216 25.8926,116.0217 25.8921,116.0205 25.8919,116.0204 25.8928,116.0214 25.8931,116.0216 25.8926))\",\n" +
-                "      \"bz\": null\n" +
-                "    },\n" +
-                "    {\n" +
-                "      \"bsm\": \"177177\",\n" +
-                "      \"xzqdm\": \"3\",\n" +
-                "      \"dkbh\": \"n1\",\n" +
-                "      \"dklx\": \"ndbg2774\",\n" +
-                "      \"dkmc\": \"大桥头\",\n" +
-                "      \"dkmj\": 20.54,\n" +
-                "      \"dkfw\": \"POLYGON((116.0126 25.8866,116.0127 25.8849,116.0125 25.885,116.0125 25.8866,116.0126 25.8866))\",\n" +
-                "      \"bz\": null\n" +
-                "    }\n" +
-                "  ]\n" +
-                "}\n";
+                "      \"dkfw\": \"POLYGON((116.0216 25.8926,116.0217 25.8921,116.0205 25.8919,116.0204 25.8928,116.0214 25.8931,116.0216 25.8926))\"\n" +
+                "    }  ]\n" +
+                "}";
         String secert =encrypt(key,plaintext.getBytes());
 //        System.out.println(secert);
 
@@ -148,7 +136,7 @@
         byte[] ming= Base64.getDecoder().decode(secert);
         byte[] text=decrypt(key,ming);
 //        System.out.println(new String(text, StandardCharsets.UTF_8));
-        System.out.println(encrypt("jsimjrby3wqb7dbq",plaintext));
+        System.out.println(encrypt("2bc304ccba171672",plaintext));
 //        System.out.println(generateSM4Key());
 //        System.out.println("封装"+decrypt("8a217699714b0fc0","N0KrVFiFdPlpoRF/pugsgOFjDSymxnhUHe9xbuF4XhO3/uVYC83dCixg9estZC67YdP3R/H9oGQ3uDV1OuSV/dYTnli8nb6hMBCcMhcGMeY0UOoWL00tMOqJMaQQ903C9BaozQ1AjdUu1zaA3uisNdkj3O0jMBZRv7JVWuOYpjaPAElRehLFf25wbDxjAtz8p13OWoUZuCfawcfL2B45H2OOUFzr/a91X26NJvkkRrr4dEngeubTldC53JXF+poD92xfw0f9e+7weLcB4QR01F2mpCNTW4nEdj/aBQxoLtt+zVYOBWFSEBsqu5ExdpRxpRTyN7Sh1inEUVYN0f9OT3mzeF8oaRe/AyI2I50dQrh1pBvNH7uCzjPtSrl8HvhKzv5l+G++3VFb2fDWqconrmt9AOCyxLhOkso6yC8MH9ZtEAVhB20LLVYN0qQrdZHIzJNXgWTDXlTVcPcGUjkTYbKYDk8q/+ToLg7BNCsMVKjwCE/ehbS4aU/3/M3rdXlRxXSuNylT1MZYKy1giRbkVnVHHl4Dw4ZYe5ydm6y1VRS1fcAkEhlcKrmgHGcWDf0i9mBjUqXGRs0ZmD7gsTXDf5/I4Pwhwk7VAJAIQqYElOWnopE4uzjIsY/NzZ6PnBsmLwBuwSvOL+ooZbRTenfmWK7r42dxJNuSkKUl78+igxyYGkD70DsLtx2SlVR+W0Kac2T3Atl4aYxVSBIDn81ngQdLCze+BuzN9L4DRDzsFc0ACg3zoDcvDeWWi39KgJNqjMW25gio7jLQaHRM//sVsVFWf3IFzIjfpYcvPBlqlRZNOTvcSarfQWKECKVP7ltI0RqRx8AiRkLWjI6zntIW+JPHt8PHIXDukMWiOU+uMsMdf4R1zV18XcM6VgtNMiLCO2f8sR5OIM8UfEuNCXyyHiHGRxXrv5SRdTU/FRh1h+dcxI+TvCDmADKf+19KK5owTcLy8LsP08hYOFmkayDXQm3C8ZqUjF5Bxaz0Tz50hrUfwVhd3vifAEZbTjVuYqWaOghpXdl6e/I/vkSbcDT3IuL2WzMIvl+ZoL7U9zKEPFmghBBDhGieJQ0Lq+5Cd961+hBooSeOxletN735xp27DhAllU4Ps+qA0m3gSzDWnSWjd2eHvFDAG2Zd99E0CYUVk7jzAhEg6ihVU56Dxs9b9LfzE0IO6mMl+mpPEhuJWgnHdANGGiwgyAKBdey73f1D0NR9R3X42RgSIJeZSp6YJKmNqZOjWQI3IUKywL0lKsN5zACZYmw0maaK//tRt+ab1jxvh2fkwaQe4Y7EB9brZomYEhUzoHOH6uUK9sMs9ICVFAmV+5eFEpVcFF3mbYTsXaakI1NbicR2P9oFDGgu2/Zw0e9m619q6A3RSYVp5/JiEjwP/3gg7CZTrjR4k52FP9d0WjMeUKWMAfjLMvC3IxA5pmpzsihicdt6Nl0jRyEVpL22sUHYfsXro4JG0AlN3OA2x+8VxffiEv/A9zHbgkjwMC1Ygod4hAlF5/c0rnyBppnRxbk6WEvxwc2rtI4Kv7kYGkomdzYEFrhmlSfLgpL+mfE/TVWR15Abv7Wt2ZfrU140MoH43j0J6fWn1m1HK7sq+Ww2+HH8G6ucPgxsr7zoj1UlP2LF0o3z5kz8upGIzGn2jnJse3M0VFMmLxVicesbgPkxPiYbvnFR6iI0ND24HMMxRtZIWLlg+TGs8BQh0RRm3uTEwtyBs2z9bjsFQhioPDXuyWwyXx90RXJlrli3gMIpTR8lYgfOVGFBi5lIIFAakKMEL4cu/odxCCLEoqYQAkO53hyi9zJ5fO/aaKH7k7CTUgviLLofJUgh9aaHdR1MNpIx+dfO4g3TPVnofCb7/PPOa9U0U87wjb7kTGRx5yK494qfslNofwpRZa9bKT3aZl04XVVQ/v1/zTs49VqxWnv2C0uwg+KT4HWcA5+UyXy2uC8LLBmdYI3h8qmzG57K50wL/AJ7ZMN/MFeKD8ulg1CPupAJxlduH/Zu40F6y1fFqinQfqeVOhXX7lNJoWEycdo0XGsVGq3kdEay0mpLVHUPQVW+wDxN/O7tWdJqS1R1D0FVvsA8Tfzu7VmQyL9Eq3f7OvmqAdFHzQkFQFyd4KpMAlWySab4tCbL+4YVOYfaRysmmui2NZdUW2GcFtceaROR6KNL0KeROxrehgxZeKBn25gneLP9G40kiXhkGRk0ufZ2DGBoHQ7/y9DTwVYGonvJBsJcvM4Kg5Abhy25CzIH75dRVThNHSiWaVAao9yMrQEQFz4PJwysIJnu1jYkrCvQ32t+NkBMN5nZOj8XEyOqtaYh9mVl0oeAfz/XdFozHlCljAH4yzLwtyMQOaZqc7IoYnHbejZdI0chNiZteN46775aU0MC+weqGLYUq4ehBXxq3Yd5ds2Tx+RcxI+TvCDmADKf+19KK5owV2APRlFTvPv6tyO8vu/c0EvSEPMPotb7wtVEOuBGd7+iJ5aKPkiG62ikXLqYAjbDe238+pAN1hCVRcUEkdmzhgN7MdMdB1OSJJ+CC4Om7GZv2xRIYYE3cEOrHCIYlRCT7d5TCatHmJN5Y7HEg2AgSl2/6CoCZbGQaCj8qsqnS7I="));
         String encryptedBase64 = encrypt(key, plaintext.getBytes(StandardCharsets.UTF_8));
diff --git a/src/main/java/com/dji/sample/media/model/MediaFileEntity.java b/src/main/java/com/dji/sample/media/model/MediaFileEntity.java
index 133eb12..fbe478b 100644
--- a/src/main/java/com/dji/sample/media/model/MediaFileEntity.java
+++ b/src/main/java/com/dji/sample/media/model/MediaFileEntity.java
@@ -84,6 +84,9 @@
     @TableField("job_name")
     private String jobName;
 
+    @TableField("dkbh")
+    private String dkbh;
+
     @TableField(value = "drone_data", typeHandler = FastjsonTypeHandler.class)
     private Object droneData;
 
diff --git a/src/main/java/com/dji/sample/media/service/IFileService.java b/src/main/java/com/dji/sample/media/service/IFileService.java
index 8d09b4b..3012b38 100644
--- a/src/main/java/com/dji/sample/media/service/IFileService.java
+++ b/src/main/java/com/dji/sample/media/service/IFileService.java
@@ -62,7 +62,7 @@
      */
     List<MediaFileDTO> getAllFilesByWorkspaceId(String workspaceId);
 
-    void saveMarkFile(String workspaceId, MediaFileEntity file, File file1);
+    void saveMarkFile(String workspaceId, FileUploadDTO files, File file1);
     PaginationData<MediaFileEntity> mediaQuery(Integer page, Integer pageSize, Long updateStart, Long updateEnd, Long photoStart, Long photoEnd, String jobName,String worksapceId,String isVedio,String jobId);
 
     PaginationData<MediaFileNailEntity> mediaNailQuery(Integer page, Integer pageSize, Long updateStart, Long updateEnd, Long photoStart, Long photoEnd, String jobName, String workspaceId, String type);
diff --git a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
index 7873d13..b269878 100644
--- a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
@@ -32,6 +32,10 @@
 import com.dji.sample.territory.service.impl.TbFjServiceImpl;
 import com.dji.sample.territory.utils.ImgZipUtil;
 import com.dji.sample.territory.utils.WaterMarkUtil;
+import com.dji.sample.wayline.dao.IWaylineFileMapper;
+import com.dji.sample.wayline.dao.IWaylineJobMapper;
+import com.dji.sample.wayline.model.entity.WaylineFileEntity;
+import com.dji.sample.wayline.model.entity.WaylineJobEntity;
 import com.dji.sample.wayline.service.IWaylineFileService;
 import com.dji.sample.wayline.service.IWaylineJobService;
 import com.drew.imaging.ImageProcessingException;
@@ -61,6 +65,7 @@
 import java.util.stream.Collectors;
 
 import static com.dji.sample.media.util.ImageDownloaderAndCompressor.*;
+import static com.dji.sample.patches.utils.TimerUtil.getDkbh;
 
 /**
  * @author sean
@@ -95,6 +100,10 @@
     private MinioPojo pojo;
 
     private ObjectMapper objectMapper = new ObjectMapper();
+    @Autowired
+    private IWaylineJobMapper jobMapper;
+    @Autowired
+    private IWaylineFileMapper fileMapper;
 
 
     private Optional<MediaFileEntity> getMediaByFingerprint(String workspaceId, String fingerprint) {
@@ -110,22 +119,25 @@
                 .eq(MediaFileEntity::getFileId, fileId));
         return Optional.ofNullable(fileEntity);
     }
-    public void saveMarkFile(String workspaceId, MediaFileEntity file,File file1) {
+
+    public void saveMarkFile(String workspaceId, FileUploadDTO files, File file1) {
         try {
-            MediaFileMarkEntity mediaFileMarkEntity= new MediaFileMarkEntity();
+            MediaFileMarkEntity file=fileUploadConvertToMarkEntity(files);
+            MediaFileMarkEntity mediaFileMarkEntity = new MediaFileMarkEntity();
             mediaFileMarkEntity.setWorkspaceId(workspaceId);
             mediaFileMarkEntity.setIsadd(0);
             mediaFileMarkEntity.setIsOriginal(false);
             mediaFileMarkEntity.setFileId(UUID.randomUUID().toString());
-            mediaFileMarkEntity.setObjectKey("/mark" + file.getFilePath()+ "/" + file.getFileName());
+            mediaFileMarkEntity.setObjectKey("/mark" + file.getFilePath() + "/" + file.getFileName());
             mediaFileMarkEntity.setFileName("mark" + file.getFileName());
             mediaFileMarkEntity.setFilePath("mark" + file.getFilePath());
-            uploadFile(pojo.getEndpoint(), pojo.getAccessKey(), pojo.getSecretKey(), pojo.getBucket(), mediaFileMarkEntity.getObjectKey(), file1, "image/jpeg");
+//            uploadFile("http://139.196.74.78:9000", "sxkj", "sxkj2024", "cloud-bucket", mediaFileMarkEntity.getObjectKey(), nailFile, "image/jpeg");
             markMapper.insert(mediaFileMarkEntity);
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
+
     @Override
     public Boolean checkExist(String workspaceId, String fingerprint) {
         return this.getMediaByFingerprint(workspaceId, fingerprint).isPresent();
@@ -136,59 +148,47 @@
         MediaFileEntity fileEntity = this.fileUploadConvertToEntity(file);
         fileEntity.setWorkspaceId(workspaceId);
         fileEntity.setFileId(UUID.randomUUID().toString());
+        int isPlane=checkWaylineType(file.getExt().getFlightId());
         //避免对视频处理引发报错
-        if (file.getObjectKey().endsWith("jpeg")){
+        if (file.getObjectKey().endsWith("jpeg")&&isPlane!=2) {
             fileEntity.setIsadd(0);
             String url = pojo.getEndpoint() + "/" + pojo.getBucket() + file.getObjectKey();
             File downloadedFile = TbFjServiceImpl.downloadFile(url);
             Object data = ImgUtil.getInfo(downloadedFile);
             fileEntity.setDroneData(data);
             updateStatue(file.getName());
-            saveFiles(workspaceId,file,downloadedFile);
+            saveFiles(workspaceId, file, downloadedFile);
+            if (isPlane==1){
+                saveMarkFile(workspaceId, file, downloadedFile);
+            }
         }
+        if (fileEntity.getFileName().endsWith("~")) {
+            fileEntity.setDkbh(getDkbh(fileEntity.getFileName()));
+        }
+        waylineJobService.getName(fileEntity.getJobId());
         return mapper.insert(fileEntity);
     }
-    public void saveFiles(String workspaceId, FileUploadDTO file,File mediaFile) {
+
+    public void saveFiles(String workspaceId, FileUploadDTO file, File mediaFile) {
         // 更新文件状态
 //        updateStatue(file.getName());
 
         try {
-                // 处理图片文件
-                File nailFile = new File(ImgZipUtil.compressImage(mediaFile, 50).toURI());
-                MediaFileNailEntity nailEntity = this.fileUploadConvertToNailEntity(file);
-                Object data = ImgUtil.getInfo(mediaFile);
+            // 处理图片文件
+            File nailFile = new File(ImgZipUtil.compressImage(mediaFile, 50).toURI());
+            MediaFileNailEntity nailEntity = this.fileUploadConvertToNailEntity(file);
+            Object data = ImgUtil.getInfo(mediaFile);
 //                nailEntity.setIsadd(0);
-                nailEntity.setIsOriginal(false);
-                nailEntity.setDronedata(data);
-                nailEntity.setWorkspaceId(workspaceId);
-                nailEntity.setFileName("nail" + file.getName());
-                nailEntity.setObjectKey("/nail" + file.getPath() + "/" + file.getName());
-                nailEntity.setFilePath("nail" + file.getPath());
-                String nailName = nailEntity.getObjectKey();
-                nailEntity.setFileId(UUID.randomUUID().toString());
-
-                // 上传图片文件
-//            uploadFile("http://139.196.74.78:9000", "sxkj", "sxkj2024", "cloud-bucket",nailName, nailFile, "image/jpeg");
-            uploadFile(pojo.getEndpoint(), pojo.getAccessKey(), pojo.getSecretKey(), pojo.getBucket(), nailName, nailFile, "image/jpeg");
+            nailEntity.setIsOriginal(false);
+            nailEntity.setDronedata(data);
+            nailEntity.setWorkspaceId(workspaceId);
+            nailEntity.setFileName("nail" + file.getName());
+            nailEntity.setObjectKey("/nail" + file.getPath() + "/" + file.getName());
+            nailEntity.setFilePath("nail" + file.getPath());
+            String nailName = nailEntity.getObjectKey();
+            nailEntity.setFileId(UUID.randomUUID().toString());
             uploadFile("http://139.196.74.78:9000", "sxkj", "sxkj2024", "cloud-bucket", nailName, nailFile, "image/jpeg");
-                nailMapper.insert(nailEntity);
-
-                // 处理压缩后的图片文件(如果有)
-            File zipFile = new File(ImgZipUtil.compressImageAndGetFile(mediaFile, 0.5f).toURI());
-            MediaFileZipEntity zipEntity = this.fileUploadConvertToZipEntity(file);
-            zipEntity.setIsOriginal(false);
-            zipEntity.setWorkspaceId(workspaceId);
-            zipEntity.setFileName("zip" + file.getName());
-            zipEntity.setObjectKey("/zip" + file.getPath() + "/" + file.getName());
-            zipEntity.setFilePath("zip" + file.getPath());
-            String zipName = zipEntity.getObjectKey();
-            zipEntity.setFileId(UUID.randomUUID().toString());
-
-                // 上传压缩文件
-            uploadFile(pojo.getEndpoint(), pojo.getAccessKey(), pojo.getSecretKey(), pojo.getBucket(), zipName, zipFile, "image/jpeg");
-            uploadFile("http://139.196.74.78:9000", "sxkj", "sxkj2024", "cloud-bucket", zipName, zipFile, "image/jpeg");
-            zipMapper.insert(zipEntity);
-
+            nailMapper.insert(nailEntity);
         } catch (IOException | ImageProcessingException e) {
             // 处理异常
             e.printStackTrace();
@@ -198,7 +198,7 @@
 
     public void updateStatue(String filename) {
         if (filename.contains("~")) {
-            String name = TimerUtil.getDkbh(filename);
+            String name = getDkbh(filename);
             List<LotInfo> lotInfos = patchesMapper.selectList(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getDkbh, name));
             if (!lotInfos.isEmpty()) {
                 LambdaUpdateWrapper<LotInfo> updateWrapper = new LambdaUpdateWrapper<>();
@@ -219,19 +219,6 @@
             for (MediaFileEntity entity : entitys) {
                 if (entity.getDroneData() != null) {
                     return entity.getDroneData();
-                }
-            }
-        }
-
-        if (!filename.contains("mark")) {
-            name = "mark" + filename;
-        }
-        List<MediaFileMarkEntity> entity = markMapper.selectList(new LambdaQueryWrapper<MediaFileMarkEntity>()
-                .eq(MediaFileMarkEntity::getFileName, name));
-        if (entity != null && !entity.isEmpty()) {
-            for (MediaFileMarkEntity markEntity : entity) {
-                if (markEntity.getDronedata() != null) {
-                    return markEntity.getDronedata();
                 }
             }
         } else {
@@ -259,7 +246,7 @@
     }
 
     @Override
-    public PaginationData<MediaFileEntity> mediaQuery(Integer page, Integer pageSize, Long updateStart, Long updateEnd, Long photoStart, Long photoEnd, String jobName, String workspaceId, String type,String jobId) {
+    public PaginationData<MediaFileEntity> mediaQuery(Integer page, Integer pageSize, Long updateStart, Long updateEnd, Long photoStart, Long photoEnd, String jobName, String workspaceId, String type, String jobId) {
         // 创建查询条件对象
         LambdaQueryWrapper<MediaFileEntity> queryWrapper = new LambdaQueryWrapper<>();
 
@@ -282,7 +269,7 @@
             queryWrapper.in(MediaFileEntity::getJobId, jobIds);
         }
         if (jobId != null && !jobId.isEmpty()) {
-            queryWrapper.eq(MediaFileEntity::getJobId,jobId);
+            queryWrapper.eq(MediaFileEntity::getJobId, jobId);
         }
 
         if (type != null && !type.isEmpty()) {
@@ -514,18 +501,18 @@
     @Override
     public ResponseResult downloadImages(List<String> jobIds) {
         String localSaveDir = "/home/drone/web/zip";
-        String downPath="https://wrj.shuixiongit.com/downloadZip/";
-        String filepath=TimerUtil.getNowDay()+".zip";
+        String downPath = "https://wrj.shuixiongit.com/downloadZip/";
+        String filepath = TimerUtil.getNowDay() + ".zip";
         try {
             String bucketPath = "/data/software/minio-data/cloud-bucket";
             List<String> prefixes = getUniqueFilePaths(jobIds);
             MinioFileDownloader downloader = new MinioFileDownloader(bucketPath);
-            downloader.downloadAndZipFolders(prefixes, localSaveDir,filepath);
+            downloader.downloadAndZipFolders(prefixes, localSaveDir, filepath);
         } catch (Exception e) {
             e.printStackTrace();
             return ResponseResult.error("下载失败" + e.getMessage());
         }
-        return ResponseResult.success(downPath+filepath);
+        return ResponseResult.success(downPath + filepath);
     }
 
     @Override
@@ -622,8 +609,8 @@
         return builder.build();
     }
 
-    private MediaFileZipEntity fileUploadConvertToZipEntity(FileUploadDTO file) {
-        MediaFileZipEntity.MediaFileZipEntityBuilder builder = MediaFileZipEntity.builder();
+    private MediaFileMarkEntity fileUploadConvertToMarkEntity(FileUploadDTO file) {
+        MediaFileMarkEntity.MediaFileMarkEntityBuilder builder = MediaFileMarkEntity.builder();
 
         if (file != null) {
             builder.fileName(file.getName())
@@ -711,16 +698,23 @@
                 .eq(MediaFileEntity::getJobId, jobId));
     }
 
+    public int checkWaylineType(String jobId) {
+        WaylineJobEntity jobEntity = jobMapper.selectOne(new LambdaQueryWrapper<WaylineJobEntity>().eq(WaylineJobEntity::getJobId, jobId));
+        WaylineFileEntity fileEntity=fileMapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getWaylineId, jobEntity.getFileId()));
+        return fileEntity.getWaylineType();
+    }
 
     public void updateMediaFileNames(String jobId) {
         // 查询符合条件的数据
         List<MediaFileEntity> mediaFiles = mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()
                 .eq(MediaFileEntity::getJobId, jobId));
-        boolean allContainTilde = mediaFiles.stream().allMatch(file -> file.getFileName().contains("~"));
-        boolean noneContainTilde = mediaFiles.stream().noneMatch(file -> file.getFileName().contains("~"));
 
-        // 如果所有 fileName 都包含 '~' 或者都不包含 '~',将 is_add 字段改为 1
-        if (allContainTilde || noneContainTilde) {
+        // 判断所有的dkbh字段是否都不为空或者都为空
+        boolean allHaveDkbh = mediaFiles.stream().allMatch(file -> file.getDkbh() != null && !file.getDkbh().isEmpty());
+        boolean noneHaveDkbh = mediaFiles.stream().noneMatch(file -> file.getDkbh() != null && !file.getDkbh().isEmpty());
+
+        // 如果所有dkbh字段都不为空或者都为空,将is_add字段改为1
+        if (allHaveDkbh || noneHaveDkbh) {
             mediaFiles.forEach(file -> {
                 file.setIsadd(1);
                 updateMediaById(file.getId(), file);
@@ -728,21 +722,22 @@
             return;
         }
 
-        // 筛选出name字段不包含'~'的数据
+        // 筛选出dkbh字段为空的数据
         List<MediaFileEntity> filteredFiles = mediaFiles.stream()
-                .filter(file -> !file.getFileName().contains("~"))
+                .filter(file -> file.getDkbh() == null || file.getDkbh().isEmpty())
                 .collect(Collectors.toList());
+
         for (MediaFileEntity currentFile : filteredFiles) {
             String currentName = currentFile.getFileName();
             Map<String, Object> currentMetadata = JSON.parseObject(JSON.toJSONString(currentFile.getMetadata()), Map.class);
             Long currentCreatedTime = (Long) currentMetadata.get("createdTime");
+
             // 找到metadata中的createdTime小于当前数据的createdTime且最接近的那条数据
             Optional<MediaFileEntity> closestFileOpt = mediaFiles.stream()
                     .filter(file -> {
                         Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
                         Long createdTime = (Long) metadata.get("createdTime");
-                        String filename = file.getFileName();
-                        return createdTime < currentCreatedTime && filename.contains("~");
+                        return createdTime < currentCreatedTime && file.getDkbh() != null && !file.getDkbh().isEmpty();
                     })
                     .min((file1, file2) -> {
                         Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
@@ -751,14 +746,14 @@
                         Long time2 = (Long) metadata2.get("createdTime");
                         return Long.compare(currentCreatedTime - time1, currentCreatedTime - time2);
                     });
+
             if (closestFileOpt.isEmpty()) {
                 // 找不到小于的文件,尝试找大于且最接近的文件
                 closestFileOpt = mediaFiles.stream()
                         .filter(file -> {
                             Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class);
                             Long createdTime = (Long) metadata.get("createdTime");
-                            String filename = file.getFileName();
-                            return createdTime > currentCreatedTime && filename.contains("~");
+                            return createdTime > currentCreatedTime && file.getDkbh() != null && !file.getDkbh().isEmpty();
                         })
                         .min((file1, file2) -> {
                             Map<String, Object> metadata1 = JSON.parseObject(JSON.toJSONString(file1.getMetadata()), Map.class);
@@ -768,40 +763,16 @@
                             return Long.compare(time1 - currentCreatedTime, time2 - currentCreatedTime);
                         });
             }
-            // 提取并替换name字段
+
+            // 将最接近的文件的dkbh值赋给当前文件
             closestFileOpt.ifPresent(closestFile -> {
-                String closestName = closestFile.getFileName();
-                int startIndex = closestName.indexOf("V");
-                if (startIndex == -1) startIndex = closestName.indexOf("W");
-                if (startIndex == -1) startIndex = closestName.indexOf("Z");
-                if (startIndex == -1) startIndex = closestName.indexOf("T");
-                if (startIndex == -1) {
-                    return;
-                }
-                int endIndex = closestName.indexOf(".", startIndex);
-                if (endIndex == -1) {
-                    return;
-                }
-                String replacement = closestName.substring(startIndex, endIndex);
-                int currentStartIndex = currentName.indexOf("V");
-                if (currentStartIndex == -1) currentStartIndex = currentName.indexOf("W");
-                if (currentStartIndex == -1) currentStartIndex = currentName.indexOf("Z");
-                if (currentStartIndex == -1) currentStartIndex = currentName.indexOf("T");
-                if (currentStartIndex == -1) {
-                    return;
-                }
-                int currentEndIndex = currentName.indexOf(".", currentStartIndex);
-                if (currentEndIndex == -1) {
-                    return;
-                }
-                String newName = currentName.substring(0, currentStartIndex)
-                        + replacement
-                        + currentName.substring(currentEndIndex);
-                currentFile.setFileName(newName);
+                currentFile.setDkbh(closestFile.getDkbh());
+                currentFile.setIsadd(1);
                 updateMediaById(currentFile.getId(), currentFile);
             });
         }
     }
+
 
     public void updateMediaZipFileNames(String jobId) {
         // 查询符合条件的数据
@@ -1037,10 +1008,6 @@
     }
 
 
-
-
-
-
     @Override
     public PaginationData<MediaFileEntity> getPhotoByJobId(int pageNum, int pageSize, String workspaceId, String jobId) {
         // 分页查询
@@ -1051,7 +1018,7 @@
 
         // 添加查询条件
         queryWrapper.eq(MediaFileEntity::getWorkspaceId, workspaceId);
-        queryWrapper.eq(MediaFileEntity::getJobId,jobId);
+        queryWrapper.eq(MediaFileEntity::getJobId, jobId);
         queryWrapper.last("ORDER BY JSON_EXTRACT(metadata, '$.createdTime') DESC");
         Page<MediaFileEntity> resultPage = mapper.selectPage(page, queryWrapper);
         List<MediaFileEntity> result = resultPage.getRecords();
@@ -1080,8 +1047,6 @@
         Pagination pagination = new Pagination(newPage);
         return new PaginationData<>(uniqueFiles, pagination);
     }
-
-
 
 
     public List<MediaFileEntity> getMedia(String jobId) {
diff --git a/src/main/java/com/dji/sample/patches/controller/PatchesController.java b/src/main/java/com/dji/sample/patches/controller/PatchesController.java
index 78b2265..15deb45 100644
--- a/src/main/java/com/dji/sample/patches/controller/PatchesController.java
+++ b/src/main/java/com/dji/sample/patches/controller/PatchesController.java
@@ -154,7 +154,7 @@
         CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
         String creator = customClaim.getUsername();
         MultipartFile file = timerUtil.getFile(waylineName, lotInfos, lat, lon);
-        waylineFileService.importKmzFile(file, workspaceId, creator, patchesId, isTemp);
+        waylineFileService.importKmzFile(file, workspaceId, creator, patchesId, isTemp,1);
         WaylineFileEntity entity = waylineFileService.selectByName(waylineName);
         Map<String, String> infoMap = new HashMap<>();
         URL url = null;
@@ -199,14 +199,14 @@
         executor.shutdown();
         return ResponseResult.success();
     }
-
-    @PostMapping("/way")
-    public void getway(@RequestParam("file") MultipartFile file,
-                       @RequestParam String workspaceId,
-                       @RequestParam String waylineName,
-                       @RequestParam String username) {
-        waylineFileService.importKmzFileBack(file, workspaceId, username);
-    }
+//
+//    @PostMapping("/way")
+//    public void getway(@RequestParam("file") MultipartFile file,
+//                       @RequestParam String workspaceId,
+//                       @RequestParam String waylineName,
+//                       @RequestParam String username) {
+//        waylineFileService.importKmzFileBack(file, workspaceId, username);
+//    }
 
     /**
      * 根据图斑的地块编号获取相对应音视频
@@ -258,7 +258,7 @@
         CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
         String creator = customClaim.getUsername();
         MultipartFile multipartFile = shpToDataSourceService.insertGeo(file, workspaceId, waylineName, airportLat, airportLon, creator);
-        waylineFileService.importKmzFileBack(multipartFile, workspaceId, creator);
+        waylineFileService.importKmzFileBack(multipartFile, workspaceId, creator,1);
         WaylineFileEntity entity = waylineFileService.selectByName(waylineName);
         Map<String, String> infoMap = new HashMap<>();
         URL url = null;
diff --git a/src/main/java/com/dji/sample/patches/utils/TimerUtil.java b/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
index 0423dea..71c492b 100644
--- a/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
+++ b/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
@@ -17,9 +17,13 @@
 import com.dji.sample.patches.xml.utils.CreateWaylineFileUtils;
 import com.dji.sample.territory.pojo.TerritoryConfigPojo;
 import com.dji.sample.territory.service.ITbFJService;
+import com.dji.sample.wayline.dao.IWaylineJobBreakPointMapper;
+import com.dji.sample.wayline.dao.IWaylineJobMapper;
 import com.dji.sample.wayline.model.dto.WaylineFileDTO;
 import com.dji.sample.wayline.model.dto.WaylineJobDTO;
 import com.dji.sample.wayline.model.entity.WaylineFileEntity;
+import com.dji.sample.wayline.model.entity.WaylineJobBreakPointEntity;
+import com.dji.sample.wayline.model.entity.WaylineJobEntity;
 import com.dji.sample.wayline.model.param.CreateJobParam;
 import com.dji.sample.wayline.service.IWaylineFileService;
 import com.dji.sample.wayline.service.IWaylineJobBreakPointService;
@@ -39,16 +43,13 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import java.nio.file.StandardCopyOption;
-import java.time.Instant;
-import java.time.LocalDateTime;
+import java.time.*;
 
 import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.sql.SQLException;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
@@ -69,7 +70,8 @@
     private PatchesConfigPojo patchesConfigPojo;
     @Autowired
     public IWaylineFileService waylineFileService;
-
+    @Autowired
+    private IWaylineJobService waylineJobService;
     @Autowired
     private ITbFJService tbFJService;
     @Autowired
@@ -78,7 +80,10 @@
     @Autowired
     private GetPatchesMapper patchesMapper;
     @Autowired
-    private IWaylineJobService waylineJobService;
+    private IWaylineJobMapper waylineJobMapper;
+
+    @Autowired
+    private IWaylineJobBreakPointMapper jobBreakPointMapper;
     @Autowired
     private TerritoryConfigPojo territoryConfigPojo;
     @Autowired
@@ -87,6 +92,7 @@
     private IDeviceMapper deviceMapper;
     @Autowired
     private DbUploadMapper dbUploadMapper;
+
     /**
      * 定时器,将没有规划的图斑生成航线,并将航线飞完后的成果数据进行保存推送
      *
@@ -141,6 +147,16 @@
         executor.shutdown();
     }
 
+    @Scheduled(cron = "0 45 8-18 * * ?")
+    public void runTask() throws SQLException {
+        WaylineJobEntity job = processWaylineJobs();
+        if (job != null) {
+            // 调用其他方法进行后续处理
+            handleJobId(job);
+        } else {
+            System.out.println("未找到符合条件的对象");
+        }
+    }
     //    public void myTask3() throws SQLException {
 //        String workspaceId = "4a574db8-4ad3-48f7-9f16-3edbcd8056e1";
 //        String name = getNowDay();
@@ -257,7 +273,7 @@
         String taskId = "";
         String dkbh = null;
         List<List<LotInfo>> lists = convertToLists(getNoPush(workspaceId));
-        if (lists.isEmpty()){
+        if (lists.isEmpty()) {
             return;
         }
         for (List<LotInfo> lotInfo : lists) {
@@ -283,55 +299,56 @@
 
         }
     }
+
     @Scheduled(cron = "0 3 17 * * ?")
-   public void GtdbOperation() throws Exception {
-    String taskId = "";
-    String dkbh = null;
-    String code="";
-    int count = 0;
-    Set<String> dkbhSet = new HashSet<>(); // 用于存储不同的dkbh
-    List<List<LotInfo>> lists = convertToLists(getNoPush());
-        if (lists.isEmpty()){
+    public void GtdbOperation() throws Exception {
+        String taskId = "";
+        String dkbh = null;
+        String code = "";
+        int count = 0;
+        Set<String> dkbhSet = new HashSet<>(); // 用于存储不同的dkbh
+        List<List<LotInfo>> lists = convertToLists(getNoPush());
+        if (lists.isEmpty()) {
             return;
         }
         tbFJService.deleteData();
-    for (List<LotInfo> lotInfo : lists) {
-        for (LotInfo lotInfo1 : lotInfo) {
-            List<MediaFileEntity> media = getPatchesService.listPohto(lotInfo1.getDkbh());
-            // 清空FJ表
-            for (MediaFileEntity mediaFile : media) {
-                // 获取媒体文件名里的dkbh和taskId
-                dkbh = getDkbh(mediaFile.getFileName());
-                dkbhSet.add(dkbh); // 添加dkbh到set中
-                // 获取该媒体文件的图斑信息
-                LotInfo lotInfo2 = getPatchesService.getLotinfo(dkbh);
-                taskId = lotInfo2.getTaskId();
-                code=lotInfo2.getXzqdm();
-                count++;
-                // 插入数据到数据库
-                tbFJService.insertOneData(mediaFile, lotInfo2);
-                getPatchesService.patchesPushed(taskId, dkbh);
+        for (List<LotInfo> lotInfo : lists) {
+            for (LotInfo lotInfo1 : lotInfo) {
+                List<MediaFileEntity> media = getPatchesService.listPohto(lotInfo1.getDkbh());
+                // 清空FJ表
+                for (MediaFileEntity mediaFile : media) {
+                    // 获取媒体文件名里的dkbh和taskId
+                    dkbh = getDkbh(mediaFile.getFileName());
+                    dkbhSet.add(dkbh); // 添加dkbh到set中
+                    // 获取该媒体文件的图斑信息
+                    LotInfo lotInfo2 = getPatchesService.getLotinfo(dkbh);
+                    taskId = lotInfo2.getTaskId();
+                    code = lotInfo2.getXzqdm();
+                    count++;
+                    // 插入数据到数据库
+                    tbFJService.insertOneData(mediaFile, lotInfo2);
+                    getPatchesService.patchesPushed(taskId, dkbh);
+                }
             }
-        }
 
-        // 存储db到服务器
-        String dbName = dbSaveGt(territoryConfigPojo.getResult(), territoryConfigPojo.getResultGtsave(), taskId);
-        DbUploadEntity entity = new DbUploadEntity();
-        File file = new File(territoryConfigPojo.getResult());
-        byte[] bytesArray = Files.readAllBytes(file.toPath());
-        long currentTimeMillis = System.currentTimeMillis();
-        entity.setTimestamp(currentTimeMillis);
-        entity.setSize(getFileSize(file))  ;
-        entity.setHash(sm3(bytesArray));
-        entity.setCount(dkbhSet.size());// 统计dkbh的数量
-        entity.setUrl(territoryConfigPojo.getResultGtsave()+dbName);
-        entity.setRegioncode(code);
-        entity.setExtension(".db");
-        entity.setAttachmentCount(count);
-        entity.setTaskId(taskId);
-        dbUploadMapper.insert(entity);
+            // 存储db到服务器
+            String dbName = dbSaveGt(territoryConfigPojo.getResult(), territoryConfigPojo.getResultGtsave(), taskId);
+            DbUploadEntity entity = new DbUploadEntity();
+            File file = new File(territoryConfigPojo.getResult());
+            byte[] bytesArray = Files.readAllBytes(file.toPath());
+            long currentTimeMillis = System.currentTimeMillis();
+            entity.setTimestamp(currentTimeMillis);
+            entity.setSize(getFileSize(file));
+            entity.setHash(sm3(bytesArray));
+            entity.setCount(dkbhSet.size());// 统计dkbh的数量
+            entity.setUrl(territoryConfigPojo.getResultGtsave() + dbName);
+            entity.setRegioncode(code);
+            entity.setExtension(".db");
+            entity.setAttachmentCount(count);
+            entity.setTaskId(taskId);
+            dbUploadMapper.insert(entity);
+        }
     }
-}
 
 
     /**
@@ -364,7 +381,7 @@
      * @return
      */
     public WaylineFileEntity backWayline(MultipartFile multipartFile, String waylineName, String workspaceId, String username) {
-        waylineFileService.importKmzFileBack(multipartFile, workspaceId, username);
+        waylineFileService.importKmzFileBack(multipartFile, workspaceId, username, 1);
         WaylineFileEntity entity = waylineFileService.selectByName(waylineName);
         try {
             waylineFileService.getObjectUrl(workspaceId, entity.getWaylineId());
@@ -417,6 +434,7 @@
                 .eq(LotInfo::getWorkspaceId, workspaceId));
         return groupTasks(list);
     }
+
     public List<List<LotInfo>> getNoPush() {
         List<LotInfo> list = patchesMapper.selectList(new LambdaQueryWrapper<LotInfo>()
                 .eq(LotInfo::getIsPush, 0)
@@ -562,13 +580,13 @@
         return Files.readAllBytes(path);
     }
 
-    public  void sendPostWithParameters(String name, String fileId, String time, List<Long> taskDays, List<List<Long>> taskPeriods, String jobId,String docksn) throws IOException {
+    public void sendPostWithParameters(String name, String fileId, String time, List<Long> taskDays, List<List<Long>> taskPeriods, String jobId, String docksn) throws IOException {
         try {
             RestTemplate restTemplate = new RestTemplate();
 
             // 构建请求体
-            String jsonBody = buildRequestBody(name, fileId, time, taskDays, taskPeriods, jobId,docksn);
-            String workspaceId =getWorkspaceIdByDocksn(docksn);
+            String jsonBody = buildRequestBody(name, fileId, time, taskDays, taskPeriods, jobId, docksn);
+            String workspaceId = getWorkspaceIdByDocksn(docksn);
             // 设置请求头
             HttpHeaders headers = new HttpHeaders();
             headers.setContentType(MediaType.APPLICATION_JSON);
@@ -583,7 +601,7 @@
             // 发送请求
             ResponseEntity<String> response = restTemplate.exchange(
 //                    "https://wrj.shuixiongit.com/drone-api/wayline/api/v1/workspaces/4a574db8-4ad3-48f7-9f16-3edbcd8056e1/flight-tasks",
-                    "http://localhost:6789/wayline/api/v1/workspaces/"+workspaceId+"/flight-tasks",
+                    "http://localhost:6789/wayline/api/v1/workspaces/" + workspaceId + "/flight-tasks",
                     HttpMethod.POST,
                     requestEntity,
                     String.class);
@@ -592,10 +610,11 @@
         }
     }
 
-    public String getWorkspaceIdByDocksn(String docksn){
-      DeviceEntity entity=  deviceMapper.selectOne(new LambdaQueryWrapper<DeviceEntity>().eq(DeviceEntity::getDeviceSn,docksn));
-      return entity.getWorkspaceId();
+    public String getWorkspaceIdByDocksn(String docksn) {
+        DeviceEntity entity = deviceMapper.selectOne(new LambdaQueryWrapper<DeviceEntity>().eq(DeviceEntity::getDeviceSn, docksn));
+        return entity.getWorkspaceId();
     }
+
     public static void sendPostWithParameters(String name, String fileId, String time, List<Long> taskDays, List<List<Long>> taskPeriods) throws IOException {
         try {
             RestTemplate restTemplate = new RestTemplate();
@@ -725,6 +744,7 @@
             throw new RuntimeException("Db文件复制失败", e); // 捕获并抛出原始异常
         }
     }
+
     public String dbSaveGt(String path, String folder, String taskId) {
         try {
             String fileName = taskId + ".db";
@@ -766,7 +786,8 @@
         }
         return folder;
     }
-    private static File fileFold(String fold,String taskId) {
+
+    private static File fileFold(String fold, String taskId) {
         // 获取当前时间
         LocalDateTime currentTime = LocalDateTime.now();
 
@@ -782,6 +803,7 @@
         }
         return folder;
     }
+
     public static Long getCurrentTimestampPlus8Hours(long hours) {
         // 获取当前时间
         LocalDateTime now = LocalDateTime.now();
@@ -796,12 +818,13 @@
         // 将毫秒级时间戳转换为秒级时间戳
         return timestamp / 1000;
     }
+
     public static long getNextDayEightAMTimestamp(int hour) {
         // 获取当前时间
         LocalDateTime now = LocalDateTime.now();
 
         // 获取第二天的日期并设置时间为08:00
-        LocalDateTime nextDayEightAM = now.plusDays(1).withHour(8).withMinute(0).withSecond(0).withNano(0);
+        LocalDateTime nextDayEightAM = now.plusDays(1).withHour(8).withMinute(30).withSecond(0).withNano(0);
 
         // 根据传入的hour参数增加小时
         LocalDateTime adjustedTime = nextDayEightAM.plusHours(hour);
@@ -811,7 +834,17 @@
         return zonedDateTime.toEpochSecond();
     }
 
+    public static long getAdjustedTimestamp(int hour) {
+        // 获取当前时间
+        LocalDateTime now = LocalDateTime.now();
 
+        // 根据传入的hour参数增加小时
+        LocalDateTime adjustedTime = now.plusSeconds(hour);
+
+        // 转换为时间戳(秒级)
+        ZonedDateTime zonedDateTime = adjustedTime.atZone(ZoneId.systemDefault());
+        return zonedDateTime.toEpochSecond();
+    }
     public static Long addOneHourToTimestamp(Long timestampInSeconds, long hours, long min) {
         // 将输入的秒级时间戳转换为Instant对象
         Instant instant = Instant.ofEpochSecond(timestampInSeconds);
@@ -857,6 +890,7 @@
         // 格式化时间,生成当前时间
         return currentTime.format(DateTimeFormatter.ofPattern("MMddHHmmssSSS"));
     }
+
     public static long getFileSize(File file) {
         if (file == null || !file.exists() || !file.isFile()) {
             return -1L; // 文件不存在或不是普通文件
@@ -869,8 +903,46 @@
         long size = getFileSize(file);
         System.out.println("文件大小: " + size + " 字节");
     }
-    public static void  getFileInfo(File file){
-        long size=getFileSize(file);
 
+    public static void getFileInfo(File file) {
+        long size = getFileSize(file);
+
+    }
+
+    public WaylineJobEntity processWaylineJobs() {
+        // 获取昨天 00:00 和 23:59:59 的时间戳
+        LocalDate yesterday = LocalDate.now().minusDays(1);
+        long startOfDayMillis = LocalDateTime.of(yesterday, LocalTime.MIN).toInstant(ZoneOffset.UTC).toEpochMilli();
+        long endOfDayMillis = LocalDateTime.of(yesterday, LocalTime.MAX).toInstant(ZoneOffset.UTC).toEpochMilli();
+        // 查询符合条件的 wayline_job_break_point 对象
+        List<WaylineJobBreakPointEntity> breakPoints = jobBreakPointMapper.selectList(
+                new LambdaQueryWrapper<WaylineJobBreakPointEntity>()
+                        .ge(WaylineJobBreakPointEntity::getCreateTime, startOfDayMillis)
+                        .le(WaylineJobBreakPointEntity::getCreateTime, endOfDayMillis)
+                        .like(WaylineJobBreakPointEntity::getJobId, "~")
+                        .orderByAsc(WaylineJobBreakPointEntity::getCreateTime)
+        );
+
+        for (WaylineJobBreakPointEntity breakPoint : breakPoints) {
+            String jobId = breakPoint.getJobId();
+
+            // 根据 jobId 查询 wayline_job 表
+            WaylineJobEntity job = waylineJobMapper.selectOne(
+                    new LambdaQueryWrapper<WaylineJobEntity>()
+                            .eq(WaylineJobEntity::getJobId, jobId)
+            );
+
+            // 检查 statues 是否等于 3
+            if (job != null && job.getStatus() != 3) {
+                // 返回符合条件的对象
+                return job;
+            }
+        }
+        return null;
+    }
+
+    private void handleJobId(WaylineJobEntity entity) throws SQLException {
+        Optional<WaylineJobDTO> waylineJobDTO = waylineJobService.getJobByJobId(entity.getWorkspaceId(), entity.getJobId(),true);
+        waylineJobService.publishOneFlightTask(waylineJobDTO.get());
     }
 }
diff --git a/src/main/java/com/dji/sample/speak/controller/SpeakVoiceController.java b/src/main/java/com/dji/sample/speak/controller/SpeakVoiceController.java
index 0b21628..ea2892a 100644
--- a/src/main/java/com/dji/sample/speak/controller/SpeakVoiceController.java
+++ b/src/main/java/com/dji/sample/speak/controller/SpeakVoiceController.java
@@ -18,6 +18,9 @@
 import java.io.File;
 import java.io.IOException;
 
+import static com.dji.sample.speak.util.AudioConverter.convertAudio;
+import static com.dji.sample.speak.util.AudioConverter.convertToFile;
+
 @RestController
 @RequestMapping("${url.speak.prefix}${url.speak.version}")
 public class SpeakVoiceController {
@@ -33,7 +36,8 @@
                                     @RequestParam Integer volumn,
                                     @RequestParam MultipartFile file) throws UnsupportedAudioFileException, IOException {
         File file1 = MultipartFileTOFileUtil.multipartFile2File(file, patchesConfigPojo.getUnzip());
-        return ResponseResult.success(voiceServicel.takeVoice(sn, psdk_index, name, file1, volumn));
+        File convertFile = convertAudio(file1);
+        return ResponseResult.success(voiceServicel.takeVoice(sn, psdk_index, name, convertFile, volumn));
     }
 
     @PostMapping("/stopVoice")
diff --git a/src/main/java/com/dji/sample/speak/util/AudioConverter.java b/src/main/java/com/dji/sample/speak/util/AudioConverter.java
new file mode 100644
index 0000000..d6bbd0b
--- /dev/null
+++ b/src/main/java/com/dji/sample/speak/util/AudioConverter.java
@@ -0,0 +1,55 @@
+package com.dji.sample.speak.util;
+
+import javax.sound.sampled.*;
+import java.io.File;
+import java.io.IOException;
+
+public class AudioConverter {
+
+    public static File convertToFile(File file) throws UnsupportedAudioFileException, IOException {
+        int channels =analyzeAudio(file);
+        if (channels != 1){
+            return convertAudio(file);
+        }
+        return file;
+    }
+    public static int  analyzeAudio(File inputFile)
+            throws IOException, UnsupportedAudioFileException {
+        AudioInputStream audioStream = AudioSystem.getAudioInputStream(inputFile);
+        AudioFormat format = audioStream.getFormat();
+        int channels = format.getChannels();
+        audioStream.close();
+        return channels;
+    }
+    public static File convertAudio(File inputFile)
+            throws IOException, UnsupportedAudioFileException {
+        // 固定参数:声道数 1,采样率 16 kHz,位宽 16 bit
+        float sampleRate = 16000;
+        int channels = 1;
+        int bitDepth = 16;
+
+        AudioInputStream sourceStream = AudioSystem.getAudioInputStream(inputFile);
+
+        AudioFormat targetFormat = new AudioFormat(
+                AudioFormat.Encoding.PCM_SIGNED,
+                sampleRate,
+                bitDepth,
+                channels,
+                (bitDepth / 8) * channels,
+                sampleRate,
+                false
+        );
+
+        AudioInputStream convertedStream = AudioSystem.getAudioInputStream(targetFormat, sourceStream);
+
+        // 使用源文件名生成输出文件名
+        File outputFile = new File("converted_" + inputFile.getName());
+
+        AudioSystem.write(convertedStream, AudioFileFormat.Type.WAVE, outputFile);
+
+        sourceStream.close();
+        convertedStream.close();
+
+        return outputFile;
+    }
+}
diff --git a/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java b/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
index 6351f52..44b5e8d 100644
--- a/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
+++ b/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
@@ -237,7 +237,7 @@
         }
         CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
         String creator = customClaim.getUsername();
-        String back = waylineFileService.importKmzFile(file, workspaceId, creator, patchesId,isTemp);
+        String back = waylineFileService.importKmzFile(file, workspaceId, creator, patchesId,isTemp,0);
         if (back != null) {
             return ResponseResult.error(back);
         }
diff --git a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobBreakPointMapper.java b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobBreakPointMapper.java
index 6840172..f7816c4 100644
--- a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobBreakPointMapper.java
+++ b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobBreakPointMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dji.sample.wayline.model.entity.WaylineJobBreakPointEntity;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @PROJECT_NAME: drone
@@ -9,5 +10,6 @@
  * @USER: aix
  * @DATE: 2024/3/23 11:09
  */
+@Mapper
 public interface IWaylineJobBreakPointMapper extends BaseMapper<WaylineJobBreakPointEntity> {
 }
diff --git a/src/main/java/com/dji/sample/wayline/model/dto/WaylineFileDTO.java b/src/main/java/com/dji/sample/wayline/model/dto/WaylineFileDTO.java
index 737ad2e..7c6d041 100644
--- a/src/main/java/com/dji/sample/wayline/model/dto/WaylineFileDTO.java
+++ b/src/main/java/com/dji/sample/wayline/model/dto/WaylineFileDTO.java
@@ -46,4 +46,6 @@
     private String spotInFreckle;
 
     private String isTemp;
+
+    private int waylineType;
 }
diff --git a/src/main/java/com/dji/sample/wayline/model/entity/WaylineFileEntity.java b/src/main/java/com/dji/sample/wayline/model/entity/WaylineFileEntity.java
index d6b9183..597d035 100644
--- a/src/main/java/com/dji/sample/wayline/model/entity/WaylineFileEntity.java
+++ b/src/main/java/com/dji/sample/wayline/model/entity/WaylineFileEntity.java
@@ -63,6 +63,9 @@
     @TableField("is_temp")
     private String isTemp;
 
+    @TableField("wayline_type")
+    private int waylineType;
+
     @TableField(value = "create_time", fill = FieldFill.INSERT)
     private Long createTime;
 
diff --git a/src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java b/src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java
index 27d0d52..20bfd52 100644
--- a/src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java
+++ b/src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java
@@ -61,7 +61,7 @@
         String destKMZFile = patchesConfigPojo.getPlaneKMZFile() + param.getWaylineName() + ".kmz"; // 输出的KMZ文件路径
         ZipUtil.zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile);
         MultipartFile multipartFile = MultipartFileTOFileUtil.convert(new File(destKMZFile));
-        waylineFileService.importKmzFile(multipartFile, workspaceId, creator, null, "1");
+        waylineFileService.importKmzFile(multipartFile, workspaceId, creator, null, "1",2);
         return ResponseResult.success();
     }
 
@@ -82,7 +82,7 @@
         String destKMZFile = patchesConfigPojo.getPlaneKMZFile() + param.getWaylineName() + ".kmz"; // 输出的KMZ文件路径
         ZipUtil.zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile);
         MultipartFile multipartFile = MultipartFileTOFileUtil.convert(new File(destKMZFile));
-        waylineFileService.importPlaneKmzFile(multipartFile, workspaceId, creator, null, "1");
+        waylineFileService.importPlaneKmzFile(multipartFile, workspaceId, creator, null, "1",1);
         return ResponseResult.success();
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
index 5a51059..c928465 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
@@ -55,7 +55,7 @@
      * @return
      */
     Integer saveWaylineFile(String workspaceId, WaylineFileDTO metadata);
-    Integer saveWaylineFiles(String workspaceId, WaylineFileDTO metadata,String patchesId,String isTemp);
+    Integer saveWaylineFiles(String workspaceId, WaylineFileDTO metadata,String patchesId,String isTemp,int waylineType);
     /**
      * Updates whether the file is collected or not based on the passed parameters.
      * @param workspaceId
@@ -87,7 +87,7 @@
      * @param creator
      * @return
      */
-    String importKmzFile(MultipartFile file, String workspaceId, String creator,String patchesId,String isTemp);
+     String importKmzFile(MultipartFile file, String workspaceId, String creator, String patchesId,String isTemp,int waylineType);
 
 
     /**
@@ -97,9 +97,9 @@
      * @param creator
      * @return
      */
-    WaylineFileDTO importKmzFileBack (MultipartFile file, String workspaceId, String creator);
+    WaylineFileDTO importKmzFileBack(MultipartFile file, String workspaceId, String creator,int waylineType);
     WaylineFileEntity selectByName(String name);
-    WaylineFileDTO importPlaneKmzFile (MultipartFile file, String workspaceId, String creator,String newName,String id);
+    WaylineFileDTO importPlaneKmzFile(MultipartFile file, String workspaceId, String creator,String newName,String id,int waylineType);
     List<WaylineListDTO> waylineList(String workspaceId,String droneName);
 
     int updateWayline(WaylineFileEntity entity);
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
index 5b62e43..319e549 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
@@ -138,6 +138,7 @@
         WaylineFileEntity file = this.dtoConvertToEntity(metadata);
         file.setWaylineId(UUID.randomUUID().toString());
         file.setWorkspaceId(workspaceId);
+        file.setWaylineType(metadata.getWaylineType());
         if (!StringUtils.hasText(file.getSign())) {
             try (InputStream object = ossService.getObject(OssConfiguration.bucket, metadata.getObjectKey())) {
                 if (object.available() == 0) {
@@ -154,12 +155,13 @@
     }
 
     @Override
-    public Integer saveWaylineFiles(String workspaceId, WaylineFileDTO metadata, String patchesId,String isTemp) {
+    public Integer saveWaylineFiles(String workspaceId, WaylineFileDTO metadata, String patchesId,String isTemp,int waylineType) {
         metadata.setPatchesId(patchesId);
         WaylineFileEntity file = this.dtoConvertToEntity(metadata);
         file.setWaylineId(UUID.randomUUID().toString());
         file.setWorkspaceId(workspaceId);
         file.setIsTemp(isTemp);
+        file.setWaylineType(waylineType);
         if (!StringUtils.hasText(file.getSign())) {
             try (InputStream object = ossService.getObject(OssConfiguration.bucket, metadata.getObjectKey())) {
                 if (object.available() == 0) {
@@ -218,7 +220,7 @@
     }
 
     @Override
-    public String importKmzFile(MultipartFile file, String workspaceId, String creator, String patchesId,String isTemp) {
+    public String importKmzFile(MultipartFile file, String workspaceId, String creator, String patchesId,String isTemp,int waylineType) {
         Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
         if (waylineFileOpt.isEmpty()) {
             throw new RuntimeException("文件格式错误");
@@ -229,9 +231,10 @@
             waylineFile.setWaylineId(workspaceId);
             waylineFile.setUsername(creator);
             waylineFile.setIsTemp(isTemp);
+            waylineFile.setWaylineType(waylineType);
             back = ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
             if (back == null) {
-                this.saveWaylineFiles(workspaceId, waylineFile, patchesId,isTemp);
+                this.saveWaylineFiles(workspaceId, waylineFile, patchesId,isTemp, waylineType);
             }
         } catch (IOException e) {
             e.printStackTrace();
@@ -241,7 +244,7 @@
 
 
     @Override
-    public WaylineFileDTO importKmzFileBack(MultipartFile file, String workspaceId, String creator) {
+    public WaylineFileDTO importKmzFileBack(MultipartFile file, String workspaceId, String creator,int waylineType) {
         WaylineFileDTO waylineFile = null;
         Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
         if (waylineFileOpt.isEmpty()) {
@@ -252,6 +255,7 @@
             waylineFile = waylineFileOpt.get();
             waylineFile.setWaylineId(workspaceId);
             waylineFile.setUsername(creator);
+            waylineFile.setWaylineType(waylineType);
             ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
             this.saveWaylineFile(workspaceId, waylineFile);
 
@@ -261,7 +265,7 @@
         return waylineFile;
     }
     @Override
-    public WaylineFileDTO importPlaneKmzFile(MultipartFile file, String workspaceId, String creator,String newName,String id) {
+    public WaylineFileDTO importPlaneKmzFile(MultipartFile file, String workspaceId, String creator,String newName,String id,int waylineType) {
         WaylineFileDTO waylineFile = null;
         Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
         if (waylineFileOpt.isEmpty()) {

--
Gitblit v1.9.3