diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java index c7df333..a28e0a5 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java @@ -3,25 +3,33 @@ package org.dromara.sample.wayline.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import org.dromara.business.api.domain.vo.RemoteBusinessAlertVo; import org.dromara.common.core.domain.R; import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.sdk.cloudapi.wayline.FlighttaskProgress; import org.dromara.common.sdk.cloudapi.wayline.WaylineJobTypeEnum; import org.dromara.common.sdk.common.HttpResultResponse; import org.dromara.common.sdk.common.PaginationData; +import org.dromara.sample.component.mqtt.model.EventsReceiver; import org.dromara.sample.media.model.MediaFileDTO; import org.dromara.sample.wayline.model.dto.WaylineJobDTO; import org.dromara.sample.wayline.model.param.CreateJobParam; import org.dromara.sample.wayline.model.param.UpdateJobParam; import org.dromara.sample.wayline.service.IFlightTaskService; +import org.dromara.sample.wayline.service.IWaylineFileService; import org.dromara.sample.wayline.service.IWaylineJobService; +import org.dromara.sample.wayline.service.IWaylineRedisService; import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.io.IOException; +import java.net.URL; import java.sql.SQLException; import java.util.List; +import java.util.Optional; import java.util.Set; @@ -41,6 +49,11 @@ public class WaylineJobController { @Autowired private IFlightTaskService flighttaskService; + @Autowired + private IWaylineRedisService waylineRedisService; + + @Autowired + private IWaylineFileService waylineFileService; /** * Create a wayline task for the Dock. * @param request @@ -108,6 +121,21 @@ public class WaylineJobController { } - + @GetMapping("/{workspace_id}/getJobFileUrlByDeviceSn") + @Operation(summary = "根据设备查询飞行任务。", description = "根据设备查询飞行任务。") + public void getJobFileUrlByDeviceSn(@PathVariable(name = "workspace_id") String workspaceId, + @RequestParam(name = "device_sn") String deviceSn, HttpServletRequest req, HttpServletResponse rsp) { + try { + Optional> runningWaylineJob = waylineRedisService.getRunningWaylineJob(deviceSn); + if(runningWaylineJob.isEmpty())return; + String jobId = runningWaylineJob.get().getOutput().getExt().getFlightId(); + Optional waylineJobDTO = waylineJobService.getJobByJobId(workspaceId, jobId); + if(waylineJobDTO.isEmpty())return; + URL url = waylineFileService.getObjectUrl(workspaceId, waylineJobDTO.get().getFileId()); + rsp.sendRedirect(url.toString()); + } catch (IOException | SQLException e) { + e.printStackTrace(); + } + } }