liusuyi
2025-12-24 49c807f8c2e80cc012ed755acbe1308c5de0c65c
增加任务视频 优化权限
2 files added
6 files modified
134 ■■■■■ changed files
ard-admin/src/main/java/com/ard/web/controller/work/UavBaseController.java 21 ●●●●● patch | view | raw | blame | history
ard-admin/src/main/java/com/ard/web/controller/work/UavControlController.java 2 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/component/forest/TyClient.java 12 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/component/forest/TyConst.java 1 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/domain/dto/BoxVideosDTO.java 27 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/domain/receiver/BoxVideosReceiver.java 32 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/service/ITyService.java 19 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
ard-admin/src/main/java/com/ard/web/controller/work/UavBaseController.java
@@ -3,18 +3,12 @@
import com.ard.common.core.controller.BaseController;
import com.ard.common.core.domain.AjaxResult;
import com.ard.common.core.page.TableDataInfo;
import com.ard.work.domain.dto.BoxHistoryDTO;
import com.ard.work.domain.dto.BoxPhotosDTO;
import com.ard.work.domain.dto.BoxSettingsDTO;
import com.ard.work.domain.dto.UavFlightStateDTO;
import com.ard.work.domain.dto.*;
import com.ard.work.domain.dto.telemetry.TelemetryData;
import com.ard.work.domain.entity.ArdFlightTask;
import com.ard.work.domain.entity.ArdFlightTaskPart;
import com.ard.work.domain.entity.ArdMedia;
import com.ard.work.domain.receiver.BoxHistoryReceiver;
import com.ard.work.domain.receiver.BoxInfoReceiver;
import com.ard.work.domain.receiver.BoxPhotosReceiver;
import com.ard.work.domain.receiver.BoxStreamUrlReceiver;
import com.ard.work.domain.receiver.*;
import com.ard.work.service.IArdFlightTaskPartService;
import com.ard.work.service.IArdFlightTaskService;
import com.ard.work.service.IArdMediaService;
@@ -77,6 +71,7 @@
        List<BoxHistoryReceiver> boxHistory = tyService.getBoxHistory(boxHistoryDTO);
        return AjaxResult.success(boxHistory);
    }
    @ApiOperation("获取飞行架次")
    @ApiOperationSupport(order = 4)
    @GetMapping("/getFlightTask")
@@ -89,7 +84,7 @@
    @ApiOperation("获取架次飞行轨迹")
    @ApiOperationSupport(order = 4)
    @GetMapping("/getCompleteFlightData")
    public TableDataInfo getCompleteFlightData(ArdFlightTaskPart ardFlightTaskPart){
    public TableDataInfo getCompleteFlightData(ArdFlightTaskPart ardFlightTaskPart) {
        List<UavFlightStateDTO> completeFlightData = ardFlightTaskPartService.getCompleteFlightData(ardFlightTaskPart);
        return getDataTable(completeFlightData);
    }
@@ -111,6 +106,14 @@
        return AjaxResult.success(boxPhotos);
    }
    @ApiOperation("获取任务视频")
    @ApiOperationSupport(order = 5)
    @PostMapping("/getBoxPhotos")
    public AjaxResult getBoxVideos(@RequestBody BoxVideosDTO boxVideosDTO) {
        List<BoxVideosReceiver> boxVideos = tyService.getBoxVideos(boxVideosDTO);
        return AjaxResult.success(boxVideos);
    }
    @ApiOperation("获取直播地址")
    @ApiOperationSupport(order = 6)
    @GetMapping("/getBoxLiveUrl/{boxSn}")
ard-admin/src/main/java/com/ard/web/controller/work/UavControlController.java
@@ -4,6 +4,7 @@
import com.ard.work.service.control.UavControlService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -20,6 +21,7 @@
     * 申请控制权(请求通过 WebSocket 发送给当前控制者)
     */
    @ApiOperation("申请控制权")
    @PreAuthorize("@ss.hasPermi('uav:control:request')")
    @PostMapping("/request")
    public AjaxResult requestControl(@RequestParam String boxSn, @RequestParam String type) {
        return AjaxResult.success(uavControlService.requestControl(boxSn, type));
ard-work/src/main/java/com/ard/work/component/forest/TyClient.java
@@ -1,9 +1,6 @@
package com.ard.work.component.forest;
import com.ard.work.domain.dto.BoxHistoryDTO;
import com.ard.work.domain.dto.BoxPhotosDTO;
import com.ard.work.domain.dto.BoxSettingsDTO;
import com.ard.work.domain.dto.TokenDTO;
import com.ard.work.domain.dto.*;
import com.ard.work.domain.receiver.*;
import com.dtflys.forest.annotation.*;
@@ -43,13 +40,18 @@
    @Post(value = TyConst.POST_BOX_HISTORY, interceptor = TokenInterceptor.class)
    TyHttpCommonReceiver<List<BoxHistoryReceiver>> getBoxHistory(@Var("serverId") String serverId,
                                                                 @JSONBody BoxHistoryDTO boxHistoryDTO);
    /**
     * 获取任务照片
     */
    @Post(value = TyConst.POST_BOX_PHOTOS, interceptor = TokenInterceptor.class)
    TyHttpCommonReceiver<List<BoxPhotosReceiver>> getBoxPhotos(@Var("serverId") String serverId,
                                                               @JSONBody BoxPhotosDTO boxPhotosDTO);
    /**
     * 获取任务视频
     */
    @Post(value = TyConst.POST_BOX_VIDEOS, interceptor = TokenInterceptor.class)
    TyHttpCommonReceiver<List<BoxVideosReceiver>> getBoxVideos(@Var("serverId") String serverId,
                                                               @JSONBody BoxVideosDTO boxVideosDTO);
    /**
     * 修改云盒设置
ard-work/src/main/java/com/ard/work/component/forest/TyConst.java
@@ -8,6 +8,7 @@
    public static final String POST_UPDATE_LIVE = "/eapi/update/live";
    public static final String GET_BOX_LIVE_URL = "/eapi/box/pullUrl/{boxSn}";
    public static final String POST_BOX_PHOTOS = "/eapi/box/photos";
    public static final String POST_BOX_VIDEOS = "/eapi/box/videos";
    public static final String GET_OPEN_LIVE = "/eapi/box/openlive/{boxSn}";
    public static final String GET_CLOSE_LIVE = "/eapi/box/closelive/{boxSn}";
}
ard-work/src/main/java/com/ard/work/domain/dto/BoxVideosDTO.java
New file
@@ -0,0 +1,27 @@
package com.ard.work.domain.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BoxVideosDTO {
    @JsonProperty("boxSn")
    private String boxSn;
    @JsonProperty("taskId")
    private Integer taskId;
    @JsonProperty("pageIndex")
    private Integer pageIndex;
    @JsonProperty("pageSize")
    private Integer pageSize;
}
ard-work/src/main/java/com/ard/work/domain/receiver/BoxVideosReceiver.java
New file
@@ -0,0 +1,32 @@
package com.ard.work.domain.receiver;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class BoxVideosReceiver {
    @JsonProperty("id")
    private Long id;
    @JsonProperty("taskId")
    private Long taskId;
    @JsonProperty("name")
    private String name;
    @JsonProperty("spanSeconds")
    private String spanSeconds;
    @JsonProperty("uri")
    private String imgUrl;
    @JsonProperty("startTime")
    private String startTime;
    @JsonProperty("endTime")
    private String endTime;
}
ard-work/src/main/java/com/ard/work/service/ITyService.java
@@ -3,6 +3,7 @@
import com.ard.work.domain.dto.BoxHistoryDTO;
import com.ard.work.domain.dto.BoxPhotosDTO;
import com.ard.work.domain.dto.BoxSettingsDTO;
import com.ard.work.domain.dto.BoxVideosDTO;
import com.ard.work.domain.dto.camera.*;
import com.ard.work.domain.dto.manual.*;
import com.ard.work.domain.dto.speaker.*;
@@ -32,12 +33,14 @@
    /**
     * 获取边缘服务器token信息
     *
     * @return
     */
    AccessTokenReceiver getAccessToken(String ServerId);
    /**
     * 获取全部服务器云盒列表
     *
     * @return
     */
    List<BoxInfoReceiver> getBoxList();
@@ -51,42 +54,56 @@
    /**
     * 获取直播地址
     *
     * @return
     */
    BoxStreamUrlReceiver getBoxLiveUrl(@Var("boxSn") String boxSn);
    /**
     * 获取飞行历史
     *
     * @return
     */
    List<BoxHistoryReceiver> getBoxHistory(BoxHistoryDTO boxHistoryDTO);
    /**
     * 获取盒子图片
     * 获取任务图片
     *
     * @return
     */
    List<BoxPhotosReceiver> getBoxPhotos(BoxPhotosDTO boxPhotosDTO);
    /**
     * 获取任务视频
     *
     * @return
     */
    List<BoxVideosReceiver> getBoxVideos(BoxVideosDTO boxVideosDTO);
    /**
     * 修改云盒设置
     *
     * @return
     */
    Boolean updateBoxSettings(BoxSettingsDTO boxSettingsDTO);
    /**
     * 设置返航高度
     *
     * @return
     */
    Boolean updateReturnHeight(ReturnHeightSettingDTO returnHeightSettingDTO);
    /**
     * 设置视频码流
     *
     * @return
     */
    Boolean updateVideoStream(VideoStreamSettingDTO videoStreamSettingDTO);
    /**
     * 设置返航点
     *
     * @return
     */
    Boolean updateReturnPoint(ReturnPointSettingDTO returnPointSettingDTO);
ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
@@ -33,6 +33,7 @@
import com.ard.work.domain.dto.BoxHistoryDTO;
import com.ard.work.domain.dto.BoxPhotosDTO;
import com.ard.work.domain.dto.BoxSettingsDTO;
import com.ard.work.domain.dto.BoxVideosDTO;
import com.ard.work.domain.dto.camera.*;
import com.ard.work.domain.dto.control.AbsAngleControlDTO;
import com.ard.work.domain.dto.control.AngleControlDTO;
@@ -157,7 +158,7 @@
    }
    /**
     * 获取盒子图片
     * 获取任务图片
     *
     * @return List<BoxPhotosReceiver>
     */
@@ -172,7 +173,22 @@
                boxPhotosDTO);
        return boxPhotos == null ? null : boxPhotos.getContent();
    }
    /**
     * 获取任务视频
     *
     * @return List<BoxVideosReceiver>
     */
    @Override
    public List<BoxVideosReceiver> getBoxVideos(BoxVideosDTO boxVideosDTO) {
        String boxSn = boxVideosDTO.getBoxSn();
        ArdDroneInfo ardDroneInfo = ardDroneService.selectArdDroneByboxSn(boxSn);
        if (ardDroneInfo == null) {
            throw new ControlException("未找到对应的飞行器信息,boxSn:{}" + boxSn);
        }
        TyHttpCommonReceiver<List<BoxVideosReceiver>> boxVideos = tyClient.getBoxVideos(ardDroneInfo.getServerId(),
                boxVideosDTO);
        return boxVideos == null ? null : boxVideos.getContent();
    }
    /**
     * 修改云盒设置
     */