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<PaginationData<WaylineJobDTO>> getJobsW(@RequestParam(defaultValue = "1") Long page,
|
@RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
|
@PathVariable(name = "workspace_id") String workspaceId) {
|
PaginationData<WaylineJobDTO> 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<PaginationData<WaylineJobDTO>> getJobs(@RequestParam(defaultValue = "1") Long page,
|
@RequestParam(name = "page_size", defaultValue = "10") Long pageSize) {
|
PaginationData<WaylineJobDTO> 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<String> 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();
|
}
|
}
|