修改代码

This commit is contained in:
孙小云 2026-03-14 10:49:47 +08:00
parent df6487f4fa
commit 711e19f527
5 changed files with 32 additions and 28 deletions

View File

@ -59,4 +59,12 @@ public interface ITaskDomain {
* @return 任务列表 * @return 任务列表
*/ */
List<Task> getTaskByPlanId(Long planId); List<Task> getTaskByPlanId(Long planId);
/**
* 查询指定无人机 actualStartTime 离现在最近的任务
*
* @param uavId 无人机ID
* @return 任务领域模型
*/
Task getCurrentTaskByUavId(String uavId);
} }

View File

@ -86,4 +86,10 @@ public class TaskDomainImpl implements ITaskDomain {
.map(TaskConvert::toModel) .map(TaskConvert::toModel)
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Override
public Task getCurrentTaskByUavId(String uavId) {
TaskInfoEntity entity = taskInfoMapper.selectCurrentTaskByUavId(uavId);
return TaskConvert.toModel(entity);
}
} }

View File

@ -57,4 +57,12 @@ public interface TaskInfoMapper {
* @return 影响行数 * @return 影响行数
*/ */
int deleteTaskInfoByIds(Long[] ids); int deleteTaskInfoByIds(Long[] ids);
/**
* 查询指定无人机 actualStartTime 离现在最近的任务
*
* @param uavId 无人机ID
* @return 任务信息
*/
TaskInfoEntity selectCurrentTaskByUavId(String uavId);
} }

View File

@ -117,34 +117,8 @@ public class TaskServiceImpl implements ITaskService {
@Override @Override
public TaskDTO getCurrentTaskByUavId(String uavId) { public TaskDTO getCurrentTaskByUavId(String uavId) {
// 创建Task对象作为查询条件 Task task = taskDomain.getCurrentTaskByUavId(uavId);
Task task = new Task(); return TaskDTOConvert.toDTO(task);
task.setUavId(uavId);
List<Task> tasks = taskDomain.getTaskList(task);
// 只取状态为RUNNING的任务
tasks = tasks.stream()
.filter(t -> t.getStatus() == StatusEnum.RUNNING)
.collect(java.util.stream.Collectors.toList());
// 按照实际执行时间降序排序取最新的一条
if (!tasks.isEmpty()) {
tasks.sort((t1, t2) -> {
if (t1.getActualStartTime() == null && t2.getActualStartTime() == null) {
return 0;
} else if (t1.getActualStartTime() == null) {
return 1;
} else if (t2.getActualStartTime() == null) {
return -1;
} else {
return t2.getActualStartTime().compareTo(t1.getActualStartTime());
}
});
return TaskDTOConvert.toDTO(tasks.get(0));
}
return null;
} }
// //
// @Override // @Override

View File

@ -146,4 +146,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach> </foreach>
</delete> </delete>
<select id="selectCurrentTaskByUavId" parameterType="String" resultMap="TaskInfoResult">
<include refid="selectTaskInfoVo"/>
where uav_id = #{uavId}
and actual_start_time is not null
order by abs(timestampdiff(second, actual_start_time, now()))
limit 1
</select>
</mapper> </mapper>