From d779caf4b08cf06945fc74495c75d42a6466b20b Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Thu, 13 Nov 2025 13:05:21 +0800
Subject: [PATCH] 1.修改表名。

---
 ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java |  116 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 87 insertions(+), 29 deletions(-)

diff --git a/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java
index fa62ebc..af5185c 100644
--- a/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -1,5 +1,8 @@
 package com.ard.sample.wayline.service.impl;
 
+import com.ard.oss.service.impl.OssServiceContext;
+import com.ard.route.domain.route.ArdRouteInfo;
+import com.ard.route.service.IArdRouteInfoService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -24,11 +27,11 @@
 import com.ard.sample.wayline.model.enums.WaylineMethodEnum;
 import com.ard.sample.wayline.model.enums.WaylineTaskTypeEnum;
 import com.ard.sample.wayline.model.param.CreateJobParam;
-import com.ard.sample.wayline.service.IWaylineFileService;
 import com.ard.sample.wayline.service.IWaylineJobService;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.integration.annotation.ServiceActivator;
 import org.springframework.integration.mqtt.support.MqttHeaders;
@@ -37,6 +40,10 @@
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.io.InputStream;
 import java.net.URL;
 import java.sql.SQLException;
 import java.time.Instant;
@@ -44,6 +51,9 @@
 import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
+
+import static com.ard.route.util.ToolUtils.kmzPath;
+import static com.ard.route.util.ToolUtils.subStringMinioUrlName;
 
 /**
  * @author sean
@@ -58,8 +68,14 @@
     @Autowired
     private IWaylineJobMapper mapper;
 
+//    @Autowired
+//    private IWaylineFileService waylineFileService;
+
     @Autowired
-    private IWaylineFileService waylineFileService;
+    private IArdRouteInfoService _ardRouteInfoService;
+
+    @Resource
+    private OssServiceContext _ossService;
 
     @Autowired
     private IDeviceService deviceService;
@@ -170,13 +186,29 @@
         }
 
         // get wayline file
-        Optional<WaylineFileDTO> waylineFile = waylineFileService.getWaylineByWaylineId(waylineJob.getFileId());
-        if (waylineFile.isEmpty()) {
+//        Optional<WaylineFileDTO> waylineFile = waylineFileService.getWaylineByWaylineId(waylineJob.getFileId());
+//        if (waylineFile.isEmpty()) {
+//            return ResponseResult.error("机场任务航线不存在!");
+//        }
+        // 换航线表
+        ArdRouteInfo ardRouteOpt = _ardRouteInfoService.selectArdRouteInfoById(waylineJob.getFileId());
+        if (ardRouteOpt == null) {
             return ResponseResult.error("机场任务航线不存在!");
         }
 
         // get file url
-        URL url = waylineFileService.getObjectUrl(waylineFile.get().getWaylineId());
+//        URL url = waylineFileService.getObjectUrl(waylineFile.get().getWaylineId());
+        URL url= null;
+        String minioUrl = subStringMinioUrlName(ardRouteOpt.getUpPath());
+        String md5 = "";
+        try (InputStream inputStream = _ossService.getObject(kmzPath,minioUrl))
+        {
+            md5 = DigestUtils.md5Hex(inputStream);
+            url = new URL(ardRouteOpt.getUpPath());
+        }
+        catch (Exception e) {
+            return ResponseResult.error("机场任务航线文件地址错误!" + e.getMessage());
+        }
 
         WaylineTaskCreateDTO flightTask = WaylineTaskCreateDTO.builder()
                 .flightId(waylineJob.getJobId())
@@ -187,7 +219,13 @@
                 .outOfControlAction(waylineJob.getOutOfControlAction())
                 .file(WaylineTaskFileDTO.builder()
                         .url(url.toString())
-                        .fingerprint(waylineFile.get().getSign())
+//                        .fingerprint(waylineFile.get().getSign())
+                        .fingerprint(md5)
+                        .build())
+                .simulateMission(WaylineSimulateMissionDTO.builder()
+                        .isEnable(param.getSimulateMission().getIsEnable())
+                        .latitude(param.getSimulateMission().getLatitude())
+                        .longitude(param.getSimulateMission().getLongitude())
                         .build())
                 .build();
 
@@ -213,21 +251,22 @@
             return ResponseResult.error("Prepare task ====> Error code: " + serviceReply.getResult());
         }
 
+        // 飞行命令先注释掉
         // Issue an immediate task execution command.
-        if (WaylineTaskTypeEnum.IMMEDIATE.getVal() == waylineJob.getTaskType()) {
-            if (!executeFlightTask(waylineJob.getJobId())) {
-                return ResponseResult.error("Failed to execute job.");
-            }
-        }
-
-        if (WaylineTaskTypeEnum.TIMED.getVal() == waylineJob.getTaskType()) {
-            boolean isAdd = RedisOpsUtils.zAdd(RedisConst.WAYLINE_JOB_TIMED_EXECUTE,
-                     waylineJob.getDockSn() + RedisConst.DELIMITER + waylineJob.getJobId(),
-                    waylineJob.getBeginTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
-            if (!isAdd) {
-                return ResponseResult.error("Failed to create scheduled job.");
-            }
-        }
+//        if (WaylineTaskTypeEnum.IMMEDIATE.getVal() == waylineJob.getTaskType()) {
+//            if (!executeFlightTask(waylineJob.getJobId())) {
+//                return ResponseResult.error("Failed to execute job.");
+//            }
+//        }
+//
+//        if (WaylineTaskTypeEnum.TIMED.getVal() == waylineJob.getTaskType()) {
+//            boolean isAdd = RedisOpsUtils.zAdd(RedisConst.WAYLINE_JOB_TIMED_EXECUTE,
+//                     waylineJob.getDockSn() + RedisConst.DELIMITER + waylineJob.getJobId(),
+//                    waylineJob.getBeginTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+//            if (!isAdd) {
+//                return ResponseResult.error("Failed to create scheduled job.");
+//            }
+//        }
 
         return ResponseResult.success();
     }
@@ -461,8 +500,16 @@
         WaylineJobDTO waylineJob = waylineJobOpt.get();
 
         // get wayline file
-        Optional<WaylineFileDTO> waylineFile = waylineFileService.getWaylineByWaylineId(waylineJob.getFileId());
-        if (waylineFile.isEmpty()) {
+//        Optional<WaylineFileDTO> waylineFile = waylineFileService.getWaylineByWaylineId(waylineJob.getFileId());
+//        if (waylineFile.isEmpty()) {
+//            builder.data(RequestsReply.error(CommonErrorEnum.ILLEGAL_ARGUMENT));
+//            messageSender.publish(topic, builder.build());
+//            return;
+//        }
+        // 修改航线文件名称,从ard_route_info航线表中取;
+        // 换航线表
+        ArdRouteInfo ardRouteOpt = _ardRouteInfoService.selectArdRouteInfoById(waylineJob.getFileId());
+        if (ardRouteOpt == null) {
             builder.data(RequestsReply.error(CommonErrorEnum.ILLEGAL_ARGUMENT));
             messageSender.publish(topic, builder.build());
             return;
@@ -470,16 +517,25 @@
 
         // get file url
         URL url = null;
-        try {
-            url = waylineFileService.getObjectUrl(waylineFile.get().getWaylineId());
+        String minioUrl = subStringMinioUrlName(ardRouteOpt.getUpPath());
+        String md5 = "";
+        try (InputStream inputStream = _ossService.getObject(kmzPath,minioUrl))
+        {
+            md5 = DigestUtils.md5Hex(inputStream);
+            url = new URL(ardRouteOpt.getUpPath());
+//        }
+//        try {
+//            url = waylineFileService.getObjectUrl(waylineFile.get().getWaylineId());
+//            url = new URL(ardRouteOpt.getUpPath());
             builder.data(RequestsReply.success(WaylineTaskCreateDTO.builder()
                     .file(WaylineTaskFileDTO.builder()
                             .url(url.toString())
-                            .fingerprint(waylineFile.get().getSign())
+//                            .fingerprint(waylineFile.get().getSign())
+                            .fingerprint(md5)
                             .build())
                     .build()));
 
-        } catch (SQLException | NullPointerException e) {
+        } catch (NullPointerException | IOException e) {
             e.printStackTrace();
             builder.data(RequestsReply.error(CommonErrorEnum.ILLEGAL_ARGUMENT));
             messageSender.publish(topic, builder.build());
@@ -572,13 +628,15 @@
         if (entity == null) {
             return null;
         }
-
+        // 修改航线文件名称,从ard_route_info航线表中取;
         WaylineJobDTO.WaylineJobDTOBuilder builder = WaylineJobDTO.builder()
                 .jobId(entity.getJobId())
                 .jobName(entity.getName())
                 .fileId(entity.getFileId())
-                .fileName(waylineFileService.getWaylineByWaylineId(entity.getFileId())
-                        .orElse(WaylineFileDTO.builder().build()).getName())
+//                .fileName(waylineFileService.getWaylineByWaylineId(entity.getFileId())
+//                        .orElse(WaylineFileDTO.builder().build()).getName())
+                .fileName(_ardRouteInfoService.selectArdRouteInfoById(entity.getFileId())
+                        .getName())
                 .dockSn(entity.getDockSn())
                 .dockName(deviceService.getDeviceBySn(entity.getDockSn())
                         .orElse(DeviceDTO.builder().build()).getNickname())

--
Gitblit v1.9.3