diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java index 04aafca..edc0fc6 100644 --- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java +++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java @@ -93,4 +93,13 @@ public class DockWithGPSVO implements Serializable { @Schema(description = "无人机SN号") private String snNumber; + @Schema(description = "舱内视频地址") + private String cabinVideoUrl; + + @Schema(description = "舱外视频地址") + private String outsideVideoUrl; + + @Schema(description = "直播视频地址") + private String liveVideoUrl; + } diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DroneTakeoffRequest.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DroneTakeoffRequest.java index 6bef56b..e97400e 100644 --- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DroneTakeoffRequest.java +++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DroneTakeoffRequest.java @@ -32,4 +32,9 @@ public class DroneTakeoffRequest implements Serializable { /** 最低电池电量 */ @Schema(description = "最低电池电量", example = "0.3") private Double flyBatteryMin; + + /** + * 任务ID + */ + private Long taskId; } diff --git a/ruoyi-api/tuoheng-api-device/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/tuoheng-api-device/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..53751ac --- /dev/null +++ b/ruoyi-api/tuoheng-api-device/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,6 @@ +com.ruoyi.device.api.factory.RemoteAircraftFallbackFactory +com.ruoyi.device.api.factory.RemoteAircraftFlyFallbackFactory +com.ruoyi.device.api.factory.RemoteDeviceFallbackFactory +com.ruoyi.device.api.factory.RemoteDockFallbackFactory +com.ruoyi.device.api.factory.RemoteGroupFallbackFactory +com.ruoyi.device.api.factory.RemoteStatisticsFallbackFactory diff --git a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/RemoteTaskService.java b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/RemoteTaskService.java index 9f0bc54..aa1de57 100644 --- a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/RemoteTaskService.java +++ b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/RemoteTaskService.java @@ -3,8 +3,7 @@ package com.ruoyi.task.api; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; -import com.ruoyi.task.api.domain.TaskDTO; -import com.ruoyi.task.api.domain.TaskQueryVO; +import com.ruoyi.task.api.domain.TaskVO; import com.ruoyi.task.api.domain.TaskTempVO; import com.ruoyi.task.api.enums.StatusEnum; import com.ruoyi.task.api.factory.RemoteTaskFallbackFactory; @@ -35,12 +34,12 @@ public interface RemoteTaskService /** * 创建无关联计划的任务 * - * @param taskDTO 任务DTO + * @param taskVO 任务DTO * @param source 请求来源 * @return 结果 */ @PostMapping("/task") - R createTaskWithoutPlan(@RequestBody TaskDTO taskDTO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + R createTaskWithoutPlan(@RequestBody TaskVO taskVO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); /** * 根据ID获取任务 @@ -50,7 +49,7 @@ public interface RemoteTaskService * @return 结果 */ @GetMapping("/task/{taskId}") - R getTaskById(@PathVariable("taskId") Long taskId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + R getTaskById(@PathVariable("taskId") Long taskId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); // /** // * 查询任务列表 @@ -65,12 +64,12 @@ public interface RemoteTaskService /** * 更新任务 * - * @param taskDTO 任务DTO + * @param taskVO 任务DTO * @param source 请求来源 * @return 结果 */ @PutMapping("/task") - R updateTask(@RequestBody TaskDTO taskDTO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + R updateTask(@RequestBody TaskVO taskVO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); /** * 删除任务 @@ -90,7 +89,7 @@ public interface RemoteTaskService * @return 结果 */ @GetMapping("/task/uav/{uavId}") - R> getTaskByUavId(@PathVariable("uavId") String uavId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + R> getTaskByUavId(@PathVariable("uavId") String uavId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); /** * 根据无人机ID获取最新的一条任务 @@ -100,7 +99,7 @@ public interface RemoteTaskService * @return 结果 */ @GetMapping("/task/uav/current/{uavId}") - R getCurrentTaskByUavId(@PathVariable("uavId") String uavId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + R getCurrentTaskByUavId(@PathVariable("uavId") String uavId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @@ -114,4 +113,14 @@ public interface RemoteTaskService */ @PutMapping("/task/status/{taskId}") R updateTaskStatus(@PathVariable("taskId") Long taskId, @RequestParam("status") StatusEnum status, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 设置 recovery 为 true + * + * @param taskId 任务ID + * @param source 请求来源 + * @return 结果 + */ + @PutMapping("/task/recovery/{taskId}") + R updateTaskRecovery(@PathVariable("taskId") Long taskId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } \ No newline at end of file diff --git a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatByMonthDTO.java b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatByMonthVO.java similarity index 68% rename from ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatByMonthDTO.java rename to ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatByMonthVO.java index ce9b051..54109ce 100644 --- a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatByMonthDTO.java +++ b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatByMonthVO.java @@ -9,13 +9,13 @@ import java.util.Map; * @author ruoyi * @date 2026-03-09 */ -public class TaskStatByMonthDTO { +public class TaskStatByMonthVO { /** 总数 */ private Integer total; /** 每日任务列表 key:日期(1-31) value:任务列表 */ - private Map> days; + private Map> days; public Integer getTotal() { return total; @@ -25,11 +25,11 @@ public class TaskStatByMonthDTO { this.total = total; } - public Map> getDays() { + public Map> getDays() { return days; } - public void setDays(Map> days) { + public void setDays(Map> days) { this.days = days; } } diff --git a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatItemDTO.java b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatItemDTO.java deleted file mode 100644 index 085b8a1..0000000 --- a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatItemDTO.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.ruoyi.task.api.domain; - -import com.ruoyi.task.api.enums.StatusEnum; -import java.util.Date; - -/** - * 任务统计项DTO - * - * @author ruoyi - * @date 2026-03-09 - */ -public class TaskStatItemDTO { - - private Long taskId; - private Long planId; - private String taskName; - private String planName; - private Date startTime; - private Date endTime; - private Date actualStartTime; - private Date actualEndTime; - private StatusEnum status; - - public Long getTaskId() { - return taskId; - } - - public void setTaskId(Long taskId) { - this.taskId = taskId; - } - - public Long getPlanId() { - return planId; - } - - public void setPlanId(Long planId) { - this.planId = planId; - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getPlanName() { - return planName; - } - - public void setPlanName(String planName) { - this.planName = planName; - } - - public Date getStartTime() { - return startTime; - } - - public void setStartTime(Date startTime) { - this.startTime = startTime; - } - - public Date getEndTime() { - return endTime; - } - - public void setEndTime(Date endTime) { - this.endTime = endTime; - } - - public Date getActualStartTime() { - return actualStartTime; - } - - public void setActualStartTime(Date actualStartTime) { - this.actualStartTime = actualStartTime; - } - - public Date getActualEndTime() { - return actualEndTime; - } - - public void setActualEndTime(Date actualEndTime) { - this.actualEndTime = actualEndTime; - } - - public StatusEnum getStatus() { - return status; - } - - public void setStatus(StatusEnum status) { - this.status = status; - } -} diff --git a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatItemVO.java b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatItemVO.java new file mode 100644 index 0000000..3d95bd0 --- /dev/null +++ b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskStatItemVO.java @@ -0,0 +1,187 @@ +package com.ruoyi.task.api.domain; + +import com.ruoyi.task.api.enums.StatusEnum; +import com.ruoyi.task.api.enums.TaskCategoryEnum; +import com.ruoyi.task.api.enums.TaskTypeEnum; +import java.util.Date; + +/** + * 任务统计项DTO + * + * @author ruoyi + * @date 2026-03-09 + */ +public class TaskStatItemVO { + + private Long taskId; + private Long planId; + private String taskName; + private String planName; + private String routeName; + private String airVendor; + private String airType; + private Date planStartDate; + private Date planEndDate; + private Date startTime; + private Date endTime; + private Date actualStartTime; + private Date actualEndTime; + private StatusEnum status; + private TaskTypeEnum taskType; + private TaskCategoryEnum taskCategory; + private String airlineType; + private Date taskCreateTime; + private String taskCreateBy; + + public Long getTaskId() { + return taskId; + } + + public void setTaskId(Long taskId) { + this.taskId = taskId; + } + + public Long getPlanId() { + return planId; + } + + public void setPlanId(Long planId) { + this.planId = planId; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getPlanName() { + return planName; + } + + public void setPlanName(String planName) { + this.planName = planName; + } + + public String getRouteName() { + return routeName; + } + + public void setRouteName(String routeName) { + this.routeName = routeName; + } + + public String getAirVendor() { + return airVendor; + } + + public void setAirVendor(String airVendor) { + this.airVendor = airVendor; + } + + public String getAirType() { + return airType; + } + + public void setAirType(String airType) { + this.airType = airType; + } + + public Date getPlanStartDate() { + return planStartDate; + } + + public void setPlanStartDate(Date planStartDate) { + this.planStartDate = planStartDate; + } + + public Date getPlanEndDate() { + return planEndDate; + } + + public void setPlanEndDate(Date planEndDate) { + this.planEndDate = planEndDate; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + public Date getActualStartTime() { + return actualStartTime; + } + + public void setActualStartTime(Date actualStartTime) { + this.actualStartTime = actualStartTime; + } + + public Date getActualEndTime() { + return actualEndTime; + } + + public void setActualEndTime(Date actualEndTime) { + this.actualEndTime = actualEndTime; + } + + public StatusEnum getStatus() { + return status; + } + + public void setStatus(StatusEnum status) { + this.status = status; + } + + public TaskTypeEnum getTaskType() { + return taskType; + } + + public void setTaskType(TaskTypeEnum taskType) { + this.taskType = taskType; + } + + public TaskCategoryEnum getTaskCategory() { + return taskCategory; + } + + public void setTaskCategory(TaskCategoryEnum taskCategory) { + this.taskCategory = taskCategory; + } + + public String getAirlineType() { + return airlineType; + } + + public void setAirlineType(String airlineType) { + this.airlineType = airlineType; + } + + public Date getTaskCreateTime() { + return taskCreateTime; + } + + public void setTaskCreateTime(Date taskCreateTime) { + this.taskCreateTime = taskCreateTime; + } + + public String getTaskCreateBy() { + return taskCreateBy; + } + + public void setTaskCreateBy(String taskCreateBy) { + this.taskCreateBy = taskCreateBy; + } +} diff --git a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskDTO.java b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskVO.java similarity index 95% rename from ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskDTO.java rename to ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskVO.java index 2cb5ecf..3e4793b 100644 --- a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskDTO.java +++ b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/domain/TaskVO.java @@ -13,7 +13,7 @@ import java.util.Date; * @author ruoyi * @date 2026-03-05 */ -public class TaskDTO { +public class TaskVO { /** 任务ID */ private Long id; @@ -42,6 +42,9 @@ public class TaskDTO { /** 状态 */ private StatusEnum status; + /** 错误是否恢复 */ + private Boolean recovery; + /** 开始时间 */ private Date startTime; @@ -136,6 +139,14 @@ public class TaskDTO { this.status = status; } + public Boolean getRecovery() { + return recovery; + } + + public void setRecovery(Boolean recovery) { + this.recovery = recovery; + } + public Date getStartTime() { return startTime; } diff --git a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/enums/StatusEnum.java b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/enums/StatusEnum.java index 17f9c12..fd59d38 100644 --- a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/enums/StatusEnum.java +++ b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/enums/StatusEnum.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonValue; public enum StatusEnum { PENDING("pending", "待执行"), + CHECKING("checking", "自检中"), RUNNING("running", "执行中"), COMPLETED("completed", "已完成"), FAILED("failed", "失败"), diff --git a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/factory/RemoteTaskFallbackFactory.java b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/factory/RemoteTaskFallbackFactory.java index f80d5e3..0675288 100644 --- a/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/factory/RemoteTaskFallbackFactory.java +++ b/ruoyi-api/tuoheng-api-task/src/main/java/com/ruoyi/task/api/factory/RemoteTaskFallbackFactory.java @@ -2,8 +2,7 @@ package com.ruoyi.task.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.task.api.RemoteTaskService; -import com.ruoyi.task.api.domain.TaskDTO; -import com.ruoyi.task.api.domain.TaskQueryVO; +import com.ruoyi.task.api.domain.TaskVO; import com.ruoyi.task.api.domain.TaskTempVO; import com.ruoyi.task.api.enums.StatusEnum; import org.slf4j.Logger; @@ -38,12 +37,12 @@ public class RemoteTaskFallbackFactory implements FallbackFactory createTaskWithoutPlan(TaskDTO taskDTO, String source) { + public R createTaskWithoutPlan(TaskVO taskVO, String source) { return R.fail("创建任务失败"); } @Override - public R getTaskById(Long taskId, String source) { + public R getTaskById(Long taskId, String source) { return R.fail("获取任务失败"); } @@ -53,7 +52,7 @@ public class RemoteTaskFallbackFactory implements FallbackFactory updateTask(TaskDTO taskDTO, String source) { + public R updateTask(TaskVO taskVO, String source) { return R.fail("更新任务失败"); } @@ -63,12 +62,12 @@ public class RemoteTaskFallbackFactory implements FallbackFactory> getTaskByUavId(String uavId, String source) { + public R> getTaskByUavId(String uavId, String source) { return R.ok(Collections.emptyList()); } @Override - public R getCurrentTaskByUavId(String uavId, String source) { + public R getCurrentTaskByUavId(String uavId, String source) { return R.fail("获取最新任务失败"); } @@ -78,6 +77,11 @@ public class RemoteTaskFallbackFactory implements FallbackFactory updateTaskStatus(Long taskId, StatusEnum status, String source) { return R.fail("修改执行状态失败"); } + + @Override + public R updateTaskRecovery(Long taskId, String source) { + return R.fail("设置recovery失败"); + } }; } } \ No newline at end of file