package com.dji.sample.wayline.controller; import com.dji.sample.common.model.CustomClaim; import com.dji.sample.common.model.PaginationData; import com.dji.sample.common.model.ResponseResult; import com.dji.sample.log.aspect.SysLogAnnotation; import com.dji.sample.wayline.model.dto.WaylineJobCountDTO; import com.dji.sample.wayline.model.dto.WaylineJobDTO; import com.dji.sample.wayline.model.entity.WaylineJobEntity; import com.dji.sample.wayline.model.param.*; import com.dji.sample.wayline.service.IWaylineJobService; 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.List; 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}/workspaces") @RestController public class WaylineJobController { @Autowired private IWaylineJobService waylineJobService; /** * 创建航路任务。 * * @param request * @param param * @param workspaceId * @return * @throws SQLException */ @PostMapping("/{workspace_id}/flight-tasks") @SysLogAnnotation(operModul = "计划库", operType = "新增", operDesc = "创建计划") public ResponseResult 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 waylineJobService.publishFlightTask(param, customClaim); } /** * 创建航路任务(重复定时和连续执行) * * @param request * @param param * @param workspaceId * @return * @throws SQLException */ @PostMapping("/{workspace_id}/flight-tasks-condition") @SysLogAnnotation(operModul = "计划库", operType = "新增", operDesc = "创建航路任务(重复定时和连续执行)") public ResponseResult createJobCondition(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 waylineJobService.publishFlightTaskCondition(param, customClaim); } /** * 分页查询 * * @param page * @param pageSize * @param workspaceId * @return */ @GetMapping("/{workspace_id}/jobs") @SysLogAnnotation(operModul = "计划库", operType = "查询", operDesc = "分页查询") public ResponseResult> getJobs(@RequestParam(defaultValue = "1") Long page, @RequestParam(name = "page_size", defaultValue = "10") Long pageSize, @PathVariable(name = "workspace_id") String workspaceId, WaylineJobQueryParam waylineJobQueryParam) { PaginationData data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize, waylineJobQueryParam); return ResponseResult.success(data); } /** * 查询最新的记录 * * @return */ @GetMapping("/{workspace_id}/latestJob") public ResponseResult getLatestJobs(@PathVariable(name = "workspace_id") String workspaceId, WaylineJobQueryParam waylineJobQueryParam) { WaylineJobEntity waylineJobEntity = waylineJobService.getLatestJob(workspaceId, waylineJobQueryParam); return ResponseResult.success(waylineJobEntity); } /** * 发送命令取消作业。 * * @param jobIds * @param workspaceId * @return * @throws SQLException */ @DeleteMapping("/{workspace_id}/jobs") @SysLogAnnotation(operModul = "计划库", operType = "删除", operDesc = "发送命令取消作业") public ResponseResult publishCancelJob(@RequestParam(name = "job_id") Set jobIds, @PathVariable(name = "workspace_id") String workspaceId) throws SQLException { waylineJobService.cancelFlightTask(workspaceId, jobIds); return ResponseResult.success(); } /** * 将此作业的媒体文件设置为立即上传。 * * @param workspaceId * @param jobId * @return */ @PostMapping("/{workspace_id}/jobs/{job_id}/media-highest") @SysLogAnnotation(operModul = "计划库", operType = "修改", operDesc = "将此作业的媒体文件设置为立即上传") public ResponseResult uploadMediaHighestPriority(@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "job_id") String jobId) { waylineJobService.uploadMediaHighestPriority(workspaceId, jobId); return ResponseResult.success(); } @PutMapping("/{workspace_id}/jobs/{job_id}") @SysLogAnnotation(operModul = "计划库", operType = "修改", operDesc = "修改") public ResponseResult updateJobStatus(@PathVariable(name = "workspace_id") String workspaceId, @PathVariable(name = "job_id") String jobId, @Valid @RequestBody UpdateJobParam param) { waylineJobService.updateJobStatus(workspaceId, jobId, param); return ResponseResult.success(); } /** * 统计飞行次数 */ @PostMapping("/{workspace_id}/patrol_statistics") public ResponseResult patrolStatistics(@PathVariable(name = "workspace_id") String workspaceId){ WaylineJobCountDTO waylineJobCountDTO = waylineJobService.patrolStatistics(workspaceId); return ResponseResult.success(waylineJobCountDTO); } /** * 收藏媒体库 */ @PostMapping("/update_job_collect") public ResponseResult updateJobCollect(HttpServletRequest request, @RequestBody WaylineJobEntity waylineJob){ CustomClaim claims = (CustomClaim) request.getAttribute(TOKEN_CLAIM); waylineJob.setUserId(claims.getId()); waylineJobService.updateJobCollect(waylineJob); return ResponseResult.success(); } /** * 根据区域飞行 * * @return */ @PostMapping("/{sn}/jobs/flyByArea") @SysLogAnnotation(operModul = "根据区域飞行", operType = "根据区域飞行", operDesc = "根据区域飞行") public ResponseResult flyByArea(@PathVariable(name = "sn") String sn, @RequestBody FlyAreaParam flyAreaParam) { return waylineJobService.flyByArea(sn,flyAreaParam ); } }