package com.ruoyi.task.service.impl; import com.ruoyi.task.api.enums.StatusEnum; import com.ruoyi.task.api.enums.TaskCategoryEnum; import com.ruoyi.task.api.enums.TaskTypeEnum; import com.ruoyi.task.domain.api.ITaskDomain; import com.ruoyi.task.domain.model.Task; import com.ruoyi.task.service.api.ITaskService; import com.ruoyi.task.service.convert.TaskDTOConvert; import com.ruoyi.task.service.dto.TaskDTO; import com.ruoyi.task.service.dto.TaskQueryDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class TaskServiceImpl implements ITaskService { @Autowired private ITaskDomain taskDomain; @Override public Long createTaskWithoutPlan(TaskDTO taskDTO) { Task task = TaskDTOConvert.toDomain(taskDTO); Task result = taskDomain.createTaskWithoutPlan(task); return result != null ? result.getId() : null; } @Override public TaskDTO getTaskById(Long taskId) { Task task = taskDomain.getTaskById(taskId); return TaskDTOConvert.toDTO(task); } @Override public List getTaskList(TaskQueryDTO queryDTO) { // 如果传递了id,功能就等同于用ID去获取值 if (queryDTO.getId() != null) { TaskDTO taskDTO = getTaskById(queryDTO.getId()); return taskDTO != null ? java.util.Collections.singletonList(taskDTO) : java.util.Collections.emptyList(); } // 创建Task对象作为查询条件 Task task = new Task(); task.setRouteId(queryDTO.getRouteId()); task.setUavId(queryDTO.getUavId()); task.setStatus(queryDTO.getStatus()); task.setTaskCategory(queryDTO.getTaskCategory()); task.setTaskType(queryDTO.getTaskType()); task.setExecuteType(queryDTO.getExecuteType()); // 这里需要注意:Task类中没有airportCode、PlanTypeEnum和CycleTypeEnum字段, // 这些字段可能需要通过关联查询来实现过滤, // 但目前我们先按照现有的结构实现基本过滤 List tasks = taskDomain.getTaskList(task); // 过滤时间范围(只有当startTimeStart和startTimeEnd都传时才使用) if (queryDTO.getStartTimeStart() != null && queryDTO.getStartTimeEnd() != null) { java.util.Date startTimeStart = queryDTO.getStartTimeStart(); java.util.Date startTimeEnd = queryDTO.getStartTimeEnd(); tasks = tasks.stream() .filter(t -> { java.util.Date taskStartTime = t.getStartTime(); return taskStartTime != null && !taskStartTime.before(startTimeStart) && !taskStartTime.after(startTimeEnd); }) .collect(java.util.stream.Collectors.toList()); } return TaskDTOConvert.toDTOList(tasks); } @Override public boolean updateTask(TaskDTO taskDTO) { Task task = TaskDTOConvert.toDomain(taskDTO); Task result = taskDomain.updateTask(task); return result != null; } @Override public boolean deleteTask(Long taskId) { return taskDomain.deleteTask(taskId); } }