package com.dji.sample.wayline.controller; import com.dji.sample.common.model.CustomClaim; import com.dji.sample.wayline.model.dto.WaylineJobDTO; import com.dji.sample.wayline.model.param.CreateJobParam; import com.dji.sample.wayline.model.param.UpdateJobParam; import com.dji.sample.wayline.service.IFlightTaskService; import com.dji.sample.wayline.service.IWaylineJobService; import com.dji.sdk.common.HttpResultResponse; import com.dji.sdk.common.PaginationData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.sql.SQLException; import java.util.Set; import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM; /** * @author sean * @version 1.1 * @date 2022/6/1 */ @RequestMapping("${url.wayline.prefix}${url.wayline.version}") @RestController public class WaylineJobController { @Autowired private IWaylineJobService waylineJobService; @Autowired private IFlightTaskService flighttaskService; /** * Create a wayline task for the Dock. * @param request * @param param * @param workspaceId * @return * @throws SQLException */ @PostMapping("/{workspace_id}/flight-tasks") public HttpResultResponse createJob(HttpServletRequest request, @Valid @RequestBody CreateJobParam param, @PathVariable(name = "workspace_id") String workspaceId) throws SQLException { CustomClaim customClaim = (CustomClaim)request.getAttribute(TOKEN_CLAIM); customClaim.setWorkspaceId(workspaceId); return flighttaskService.publishFlightTask(param, customClaim); } /** * Paginate through all jobs in this workspace. * @param page * @param pageSize * @param workspaceId * @return */ @GetMapping("/{workspace_id}/jobs") public HttpResultResponse> getJobsW(@RequestParam(defaultValue = "1") Long page, @RequestParam(name = "page_size", defaultValue = "10") Long pageSize, @PathVariable(name = "workspace_id") String workspaceId) { PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize); return HttpResultResponse.success(data); } /** * Paginate through all jobs. * @param page * @param pageSize * @return */ @PostMapping("/wayline-job/getList") public HttpResultResponse> getJobs(@RequestParam(defaultValue = "1") Long page, @RequestParam(name = "page_size", defaultValue = "10") Long pageSize) { PaginationData data = waylineJobService.getJobs(page, pageSize); return HttpResultResponse.success(data); } /** * Send the command to cancel the jobs. * @param jobIds * @param workspaceId * @return * @throws SQLException */ @DeleteMapping("/{workspace_id}/jobs") public HttpResultResponse publishCancelJob(@RequestParam(name = "job_id") Set jobIds, @PathVariable(name = "workspace_id") String workspaceId) throws SQLException { flighttaskService.cancelFlightTask(workspaceId, jobIds); return HttpResultResponse.success(); } /** * Set the media files for this job to upload immediately. * @param workspaceId * @param jobId * @return */ @PostMapping("/{workspace_id}/jobs/{job_id}/media-highest") public HttpResultResponse uploadMediaHighestPriority(@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "job_id") String jobId) { flighttaskService.uploadMediaHighestPriority(workspaceId, jobId); return HttpResultResponse.success(); } @PutMapping("/{workspace_id}/jobs/{job_id}") public HttpResultResponse updateJobStatus(@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "job_id") String jobId, @Valid @RequestBody UpdateJobParam param) { flighttaskService.updateJobStatus(workspaceId, jobId, param); return HttpResultResponse.success(); } }