diff --git a/src/main/java/com/ruoyi/task/service/api/ITaskService.java b/src/main/java/com/ruoyi/task/service/api/ITaskService.java index 95f7fea..3b2716e 100644 --- a/src/main/java/com/ruoyi/task/service/api/ITaskService.java +++ b/src/main/java/com/ruoyi/task/service/api/ITaskService.java @@ -48,4 +48,11 @@ public interface ITaskService { * @return 任务列表 */ List getTaskByUavId(Long uavId); + + /** + * 根据无人机ID获取最新的一条任务 + * @param uavId 无人机ID + * @return 最新的任务DTO + */ + TaskDTO getCurrentTaskByUavId(Long uavId); } diff --git a/src/main/java/com/ruoyi/task/service/impl/TaskServiceImpl.java b/src/main/java/com/ruoyi/task/service/impl/TaskServiceImpl.java index 81f775c..5572715 100644 --- a/src/main/java/com/ruoyi/task/service/impl/TaskServiceImpl.java +++ b/src/main/java/com/ruoyi/task/service/impl/TaskServiceImpl.java @@ -94,4 +94,31 @@ public class TaskServiceImpl implements ITaskService { List tasks = taskDomain.getTaskList(task); return TaskDTOConvert.toDTOList(tasks); } + + @Override + public TaskDTO getCurrentTaskByUavId(Long uavId) { + // 创建Task对象作为查询条件 + Task task = new Task(); + task.setUavId(uavId); + + List tasks = taskDomain.getTaskList(task); + + // 按照创建时间降序排序,取最新的一条 + if (!tasks.isEmpty()) { + tasks.sort((t1, t2) -> { + if (t1.getCreateTime() == null && t2.getCreateTime() == null) { + return 0; + } else if (t1.getCreateTime() == null) { + return 1; + } else if (t2.getCreateTime() == null) { + return -1; + } else { + return t2.getCreateTime().compareTo(t1.getCreateTime()); + } + }); + return TaskDTOConvert.toDTO(tasks.get(0)); + } + + return null; + } }