shenyijian
2023-11-28 a0ad613e75498fb4331b7f3eb55b60cec7896d88
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
package com.dji.sample.wayline.controller;
 
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.dao.IWaylineJobMapper;
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 com.dji.sample.wayline.service.impl.WaylineJobServiceImpl;
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.Optional;
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<PaginationData<WaylineJobDTO>> getJobs(@RequestParam(defaultValue = "1") Long page,
                                                                 @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
                                                                 @PathVariable(name = "workspace_id") String workspaceId, WaylineJobQueryParam waylineJobQueryParam) {
        PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize, waylineJobQueryParam);
        return ResponseResult.success(data);
    }
 
    /**
     * 子查询
     * @param workspaceId
     * @return
     */
    @GetMapping("/{workspace_id}/getChildrenJobs")
    @SysLogAnnotation(operModul = "计划库", operType = "查询", operDesc = "分页查询")
    public ResponseResult<List<WaylineJobDTO>> getChildrenJobs(
                                                                 @PathVariable(name = "workspace_id") String workspaceId, WaylineJobQueryParam waylineJobQueryParam) {
        List<WaylineJobDTO> data = waylineJobService.getChildrenJobs(workspaceId, waylineJobQueryParam);
        return ResponseResult.success(data);
    }
 
 
    /**
     * 查询最新的记录
     *
     * @return
     */
    @GetMapping("/{workspace_id}/latestJob")
    public ResponseResult<WaylineJobEntity> 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<String> 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<WaylineJobCountDTO> patrolStatistics(@PathVariable(name = "workspace_id") String workspaceId,String queryTime,String deviceSn) {
 
        WaylineJobCountDTO waylineJobCountDTO = waylineJobService.patrolStatistics(workspaceId,queryTime,deviceSn);
 
        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/{device_sn}/flyByArea")
    @SysLogAnnotation(operModul = "根据区域飞行", operType = "根据区域飞行", operDesc = "根据区域飞行")
    public ResponseResult flyByArea(@PathVariable(name = "sn") String sn, @RequestBody FlyAreaParam flyAreaParam,@PathVariable(name = "device_sn")String deviceSn)throws Exception {
            return waylineJobService.flyByArea(sn, flyAreaParam,deviceSn);
    }
}