diff --git a/src/main/java/com/ruoyi/task/service/ITaskPlanService.java b/src/main/java/com/ruoyi/task/service/ITaskPlanService.java new file mode 100644 index 0000000..84f275a --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/ITaskPlanService.java @@ -0,0 +1,51 @@ +package com.ruoyi.task.service; + +import com.ruoyi.task.service.dto.TaskPlanDTO; +import com.ruoyi.task.service.dto.TaskPlanQueryDTO; + +import java.util.List; + +public interface ITaskPlanService { + + /** + * 创建定时任务计划 + * @param taskPlanDTO 任务计划DTO + * @return 任务计划ID + */ + Long createTimedTaskPlan(TaskPlanDTO taskPlanDTO); + + /** + * 创建周期任务计划 + * @param taskPlanDTO 任务计划DTO + * @return 任务计划ID + */ + Long createCycleTaskPlan(TaskPlanDTO taskPlanDTO); + + /** + * 根据ID获取任务计划 + * @param planId 任务计划ID + * @return 任务计划DTO + */ + TaskPlanDTO getTaskPlanById(Long planId); + + /** + * 复杂条件查询任务计划列表 + * @param queryDTO 查询条件DTO + * @return 任务计划列表 + */ + List getTaskPlanList(TaskPlanQueryDTO queryDTO); + + /** + * 更新任务计划 + * @param taskPlanDTO 任务计划DTO + * @return 是否成功 + */ + boolean updateTaskPlan(TaskPlanDTO taskPlanDTO); + + /** + * 删除任务计划 + * @param planId 任务计划ID + * @return 是否成功 + */ + boolean deleteTaskPlan(Long planId); +} diff --git a/src/main/java/com/ruoyi/task/service/ITaskService.java b/src/main/java/com/ruoyi/task/service/ITaskService.java new file mode 100644 index 0000000..0ac07bd --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/ITaskService.java @@ -0,0 +1,44 @@ +package com.ruoyi.task.service; + +import com.ruoyi.task.service.dto.TaskDTO; +import com.ruoyi.task.service.dto.TaskQueryDTO; + +import java.util.List; + +public interface ITaskService { + + /** + * 创建无关联计划的任务 + * @param taskDTO 任务DTO + * @return 任务ID + */ + Long createTaskWithoutPlan(TaskDTO taskDTO); + + /** + * 根据ID获取任务 + * @param taskId 任务ID + * @return 任务DTO + */ + TaskDTO getTaskById(Long taskId); + + /** + * 复杂条件查询任务列表 + * @param queryDTO 查询条件DTO + * @return 任务列表 + */ + List getTaskList(TaskQueryDTO queryDTO); + + /** + * 更新任务 + * @param taskDTO 任务DTO + * @return 是否成功 + */ + boolean updateTask(TaskDTO taskDTO); + + /** + * 删除任务 + * @param taskId 任务ID + * @return 是否成功 + */ + boolean deleteTask(Long taskId); +} diff --git a/src/main/java/com/ruoyi/task/service/ITaskStatService.java b/src/main/java/com/ruoyi/task/service/ITaskStatService.java new file mode 100644 index 0000000..2e97524 --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/ITaskStatService.java @@ -0,0 +1,45 @@ +package com.ruoyi.task.service; + +import com.ruoyi.task.service.dto.TaskStatDTO; +import com.ruoyi.task.service.dto.TaskStatQueryDTO; + +import java.util.Date; +import java.util.List; + +public interface ITaskStatService { + + /** + * 根据时间范围获取任务统计 + * @param queryDTO 查询条件DTO + * @return 任务统计列表 + */ + List getTaskStatByTimeRange(TaskStatQueryDTO queryDTO); + + /** + * 按月获取任务统计 + * @param queryDTO 查询条件DTO + * @return 任务统计列表 + */ + List getTaskStatByMonth(TaskStatQueryDTO queryDTO); + + /** + * 按周获取任务统计 + * @param queryDTO 查询条件DTO + * @return 任务统计列表 + */ + List getTaskStatByWeek(TaskStatQueryDTO queryDTO); + + /** + * 按年获取任务统计 + * @param queryDTO 查询条件DTO + * @return 任务统计列表 + */ + List getTaskStatByYear(TaskStatQueryDTO queryDTO); + + /** + * 复杂条件查询任务统计 + * @param queryDTO 查询条件DTO + * @return 任务统计列表 + */ + List getTaskStatList(TaskStatQueryDTO queryDTO); +} diff --git a/src/main/java/com/ruoyi/task/service/convert/TaskDTOConvert.java b/src/main/java/com/ruoyi/task/service/convert/TaskDTOConvert.java new file mode 100644 index 0000000..83ae09a --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/convert/TaskDTOConvert.java @@ -0,0 +1,68 @@ +package com.ruoyi.task.service.convert; + +import com.ruoyi.task.domain.model.Task; +import com.ruoyi.task.service.dto.TaskDTO; + +import java.util.List; +import java.util.stream.Collectors; + +public class TaskDTOConvert { + + public static TaskDTO toDTO(Task task) { + if (task == null) { + return null; + } + + TaskDTO dto = new TaskDTO(); + dto.setId(task.getId()); + dto.setTaskName(task.getTaskName()); + dto.setPlanId(task.getPlanId()); + dto.setTaskCategory(task.getTaskCategory()); + dto.setTaskType(task.getTaskType()); + dto.setExecuteType(task.getExecuteType()); + dto.setRouteId(task.getRouteId()); + dto.setUavId(task.getUavId()); + dto.setStartTime(task.getStartTime()); + dto.setEndTime(task.getEndTime()); + dto.setStatus(task.getStatus()); + dto.setDescription(task.getDescription()); + dto.setRemark(task.getRemark()); + + return dto; + } + + public static Task toDomain(TaskDTO dto) { + if (dto == null) { + return null; + } + + Task task = new Task(); + task.setId(dto.getId()); + task.setTaskName(dto.getTaskName()); + task.setPlanId(dto.getPlanId()); + task.setTaskCategory(dto.getTaskCategory()); + task.setTaskType(dto.getTaskType()); + task.setExecuteType(dto.getExecuteType()); + task.setRouteId(dto.getRouteId()); + task.setUavId(dto.getUavId()); + task.setStartTime(dto.getStartTime()); + task.setEndTime(dto.getEndTime()); + task.setStatus(dto.getStatus()); + task.setDescription(dto.getDescription()); + task.setRemark(dto.getRemark()); + + return task; + } + + public static List toDTOList(List tasks) { + return tasks.stream() + .map(TaskDTOConvert::toDTO) + .collect(Collectors.toList()); + } + + public static List toDomainList(List dtos) { + return dtos.stream() + .map(TaskDTOConvert::toDomain) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/ruoyi/task/service/convert/TaskPlanDTOConvert.java b/src/main/java/com/ruoyi/task/service/convert/TaskPlanDTOConvert.java new file mode 100644 index 0000000..e934312 --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/convert/TaskPlanDTOConvert.java @@ -0,0 +1,70 @@ +package com.ruoyi.task.service.convert; + +import com.ruoyi.task.domain.model.TaskPlan; +import com.ruoyi.task.service.dto.TaskPlanDTO; + +import java.util.List; +import java.util.stream.Collectors; + +public class TaskPlanDTOConvert { + + public static TaskPlanDTO toDTO(TaskPlan taskPlan) { + if (taskPlan == null) { + return null; + } + + TaskPlanDTO dto = new TaskPlanDTO(); + dto.setId(taskPlan.getId()); + dto.setPlanName(taskPlan.getPlanName()); + dto.setPlanType(taskPlan.getPlanType()); + dto.setExecuteType(taskPlan.getExecuteType()); + dto.setCycleType(taskPlan.getCycleType()); + dto.setCycleValue(taskPlan.getCycleValue()); + dto.setStartDate(taskPlan.getStartDate()); + dto.setEndDate(taskPlan.getEndDate()); + dto.setExecuteTime(taskPlan.getExecuteTime()); + dto.setRouteId(taskPlan.getRouteId()); + dto.setUavId(taskPlan.getUavId()); + dto.setStatus(taskPlan.getStatus()); + dto.setDescription(taskPlan.getDescription()); + dto.setRemark(taskPlan.getRemark()); + + return dto; + } + + public static TaskPlan toDomain(TaskPlanDTO dto) { + if (dto == null) { + return null; + } + + TaskPlan taskPlan = new TaskPlan(); + taskPlan.setId(dto.getId()); + taskPlan.setPlanName(dto.getPlanName()); + taskPlan.setPlanType(dto.getPlanType()); + taskPlan.setExecuteType(dto.getExecuteType()); + taskPlan.setCycleType(dto.getCycleType()); + taskPlan.setCycleValue(dto.getCycleValue()); + taskPlan.setStartDate(dto.getStartDate()); + taskPlan.setEndDate(dto.getEndDate()); + taskPlan.setExecuteTime(dto.getExecuteTime()); + taskPlan.setRouteId(dto.getRouteId()); + taskPlan.setUavId(dto.getUavId()); + taskPlan.setStatus(dto.getStatus()); + taskPlan.setDescription(dto.getDescription()); + taskPlan.setRemark(dto.getRemark()); + + return taskPlan; + } + + public static List toDTOList(List taskPlans) { + return taskPlans.stream() + .map(TaskPlanDTOConvert::toDTO) + .collect(Collectors.toList()); + } + + public static List toDomainList(List dtos) { + return dtos.stream() + .map(TaskPlanDTOConvert::toDomain) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/ruoyi/task/service/convert/TaskStatDTOConvert.java b/src/main/java/com/ruoyi/task/service/convert/TaskStatDTOConvert.java new file mode 100644 index 0000000..7e84774 --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/convert/TaskStatDTOConvert.java @@ -0,0 +1,68 @@ +package com.ruoyi.task.service.convert; + +import com.ruoyi.task.domain.model.TaskStat; +import com.ruoyi.task.service.dto.TaskStatDTO; + +import java.util.List; +import java.util.stream.Collectors; + +public class TaskStatDTOConvert { + + public static TaskStatDTO toDTO(TaskStat taskStat) { + if (taskStat == null) { + return null; + } + + TaskStatDTO dto = new TaskStatDTO(); + dto.setId(taskStat.getId()); + dto.setAirportCode(taskStat.getAirportCode()); + dto.setRouteName(taskStat.getRouteName()); + dto.setTaskCategory(taskStat.getTaskCategory()); + dto.setTaskType(taskStat.getTaskType()); + dto.setTaskStatus(taskStat.getTaskStatus()); + dto.setYear(taskStat.getYear()); + dto.setMonth(taskStat.getMonth()); + dto.setDay(taskStat.getDay()); + dto.setTaskCount(taskStat.getTaskCount()); + dto.setCreateBy(taskStat.getCreateBy()); + dto.setUpdateBy(taskStat.getUpdateBy()); + dto.setRemark(taskStat.getRemark()); + + return dto; + } + + public static TaskStat toDomain(TaskStatDTO dto) { + if (dto == null) { + return null; + } + + TaskStat taskStat = new TaskStat(); + taskStat.setId(dto.getId()); + taskStat.setAirportCode(dto.getAirportCode()); + taskStat.setRouteName(dto.getRouteName()); + taskStat.setTaskCategory(dto.getTaskCategory()); + taskStat.setTaskType(dto.getTaskType()); + taskStat.setTaskStatus(dto.getTaskStatus()); + taskStat.setYear(dto.getYear()); + taskStat.setMonth(dto.getMonth()); + taskStat.setDay(dto.getDay()); + taskStat.setTaskCount(dto.getTaskCount()); + taskStat.setCreateBy(dto.getCreateBy()); + taskStat.setUpdateBy(dto.getUpdateBy()); + taskStat.setRemark(dto.getRemark()); + + return taskStat; + } + + public static List toDTOList(List taskStats) { + return taskStats.stream() + .map(TaskStatDTOConvert::toDTO) + .collect(Collectors.toList()); + } + + public static List toDomainList(List dtos) { + return dtos.stream() + .map(TaskStatDTOConvert::toDomain) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/com/ruoyi/task/service/dto/TaskDTO.java b/src/main/java/com/ruoyi/task/service/dto/TaskDTO.java new file mode 100644 index 0000000..c15630e --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/dto/TaskDTO.java @@ -0,0 +1,174 @@ +package com.ruoyi.task.service.dto; + +import java.util.Date; + +/** + * 任务数据传输对象 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskDTO { + + /** 任务ID */ + private Long id; + + /** 计划ID(可为空,如一键起飞) */ + private Long planId; + + /** 任务名称 */ + private String taskName; + + /** 任务类别(如人工执飞) */ + private String taskCategory; + + /** 任务类型(如一键起飞) */ + private String taskType; + + /** 执行类型(单次执行、连续执行) */ + private String executeType; + + /** 航线ID */ + private Long routeId; + + /** 无人机ID */ + private Long uavId; + + /** 状态(0待执行 1执行中 2已完成 3已取消) */ + private String status; + + /** 开始时间 */ + private Date startTime; + + /** 结束时间 */ + private Date endTime; + + /** 描述 */ + private String description; + + /** 备注 */ + private String remark; + + // Getters and Setters + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + 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 getTaskCategory() { + return taskCategory; + } + + public void setTaskCategory(String taskCategory) { + this.taskCategory = taskCategory; + } + + public String getTaskType() { + return taskType; + } + + public void setTaskType(String taskType) { + this.taskType = taskType; + } + + public String getExecuteType() { + return executeType; + } + + public void setExecuteType(String executeType) { + this.executeType = executeType; + } + + public Long getRouteId() { + return routeId; + } + + public void setRouteId(Long routeId) { + this.routeId = routeId; + } + + public Long getUavId() { + return uavId; + } + + public void setUavId(Long uavId) { + this.uavId = uavId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + 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 String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + @Override + public String toString() { + return "TaskDTO{" + + "id=" + id + + ", planId=" + planId + + ", taskName='" + taskName + '\'' + + ", taskCategory='" + taskCategory + '\'' + + ", taskType='" + taskType + '\'' + + ", executeType='" + executeType + '\'' + + ", routeId=" + routeId + + ", uavId=" + uavId + + ", status='" + status + '\'' + + ", startTime=" + startTime + + ", endTime=" + endTime + + ", description='" + description + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/service/dto/TaskPlanDTO.java b/src/main/java/com/ruoyi/task/service/dto/TaskPlanDTO.java new file mode 100644 index 0000000..f8fb6cf --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/dto/TaskPlanDTO.java @@ -0,0 +1,186 @@ +package com.ruoyi.task.service.dto; + +import java.util.Date; + +/** + * 任务计划数据传输对象 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskPlanDTO { + + /** 计划ID */ + private Long id; + + /** 计划名称 */ + private String planName; + + /** 计划类型(定时任务计划、周期任务计划) */ + private String planType; + + /** 执行类型(单次执行、连续执行) */ + private String executeType; + + /** 周期类型(日周期、周周期、月周期) */ + private String cycleType; + + /** 周期值(周周期:1-7多选,如"1,3,5";月周期:1-31多选,如"1,15,30") */ + private String cycleValue; + + /** 开始日期 */ + private Date startDate; + + /** 结束日期 */ + private Date endDate; + + /** 执行时间(仅在定义任务时有效) */ + private Date executeTime; + + /** 航线ID */ + private Long routeId; + + /** 无人机ID */ + private Long uavId; + + /** 状态(0待执行 1执行中 2已完成 3已取消) */ + private String status; + + /** 描述 */ + private String description; + + /** 备注 */ + private String remark; + + // Getters and Setters + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPlanName() { + return planName; + } + + public void setPlanName(String planName) { + this.planName = planName; + } + + public String getPlanType() { + return planType; + } + + public void setPlanType(String planType) { + this.planType = planType; + } + + public String getExecuteType() { + return executeType; + } + + public void setExecuteType(String executeType) { + this.executeType = executeType; + } + + public String getCycleType() { + return cycleType; + } + + public void setCycleType(String cycleType) { + this.cycleType = cycleType; + } + + public String getCycleValue() { + return cycleValue; + } + + public void setCycleValue(String cycleValue) { + this.cycleValue = cycleValue; + } + + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + + public Date getExecuteTime() { + return executeTime; + } + + public void setExecuteTime(Date executeTime) { + this.executeTime = executeTime; + } + + public Long getRouteId() { + return routeId; + } + + public void setRouteId(Long routeId) { + this.routeId = routeId; + } + + public Long getUavId() { + return uavId; + } + + public void setUavId(Long uavId) { + this.uavId = uavId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + @Override + public String toString() { + return "TaskPlanDTO{" + + "id=" + id + + ", planName='" + planName + '\'' + + ", planType='" + planType + '\'' + + ", executeType='" + executeType + '\'' + + ", cycleType='" + cycleType + '\'' + + ", cycleValue='" + cycleValue + '\'' + + ", startDate=" + startDate + + ", endDate=" + endDate + + ", executeTime=" + executeTime + + ", routeId=" + routeId + + ", uavId=" + uavId + + ", status='" + status + '\'' + + ", description='" + description + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/service/dto/TaskPlanQueryDTO.java b/src/main/java/com/ruoyi/task/service/dto/TaskPlanQueryDTO.java new file mode 100644 index 0000000..2a85a0b --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/dto/TaskPlanQueryDTO.java @@ -0,0 +1,211 @@ +package com.ruoyi.task.service.dto; + +import java.util.Date; + +/** + * 任务计划查询条件数据传输对象 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskPlanQueryDTO { + + /** 计划ID */ + private Long id; + + /** 计划名称 */ + private String planName; + + /** 计划类型(定时任务计划、周期任务计划) */ + private String planType; + + /** 执行类型(单次执行、连续执行) */ + private String executeType; + + /** 周期类型(日周期、周周期、月周期) */ + private String cycleType; + + /** 开始日期(开始范围) */ + private Date startDateStart; + + /** 开始日期(结束范围) */ + private Date startDateEnd; + + /** 结束日期(开始范围) */ + private Date endDateStart; + + /** 结束日期(结束范围) */ + private Date endDateEnd; + + /** 航线ID */ + private Long routeId; + + /** 无人机ID */ + private Long uavId; + + /** 状态(0待执行 1执行中 2已完成 3已取消) */ + private String status; + + /** 任务类别 */ + private String taskCategory; + + /** 任务类型 */ + private String taskType; + + /** 机场代码 */ + private String airportCode; + + /** 航线名称 */ + private String routeName; + + // Getters and Setters + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPlanName() { + return planName; + } + + public void setPlanName(String planName) { + this.planName = planName; + } + + public String getPlanType() { + return planType; + } + + public void setPlanType(String planType) { + this.planType = planType; + } + + public String getExecuteType() { + return executeType; + } + + public void setExecuteType(String executeType) { + this.executeType = executeType; + } + + public String getCycleType() { + return cycleType; + } + + public void setCycleType(String cycleType) { + this.cycleType = cycleType; + } + + public Date getStartDateStart() { + return startDateStart; + } + + public void setStartDateStart(Date startDateStart) { + this.startDateStart = startDateStart; + } + + public Date getStartDateEnd() { + return startDateEnd; + } + + public void setStartDateEnd(Date startDateEnd) { + this.startDateEnd = startDateEnd; + } + + public Date getEndDateStart() { + return endDateStart; + } + + public void setEndDateStart(Date endDateStart) { + this.endDateStart = endDateStart; + } + + public Date getEndDateEnd() { + return endDateEnd; + } + + public void setEndDateEnd(Date endDateEnd) { + this.endDateEnd = endDateEnd; + } + + public Long getRouteId() { + return routeId; + } + + public void setRouteId(Long routeId) { + this.routeId = routeId; + } + + public Long getUavId() { + return uavId; + } + + public void setUavId(Long uavId) { + this.uavId = uavId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTaskCategory() { + return taskCategory; + } + + public void setTaskCategory(String taskCategory) { + this.taskCategory = taskCategory; + } + + public String getTaskType() { + return taskType; + } + + public void setTaskType(String taskType) { + this.taskType = taskType; + } + + public String getAirportCode() { + return airportCode; + } + + public void setAirportCode(String airportCode) { + this.airportCode = airportCode; + } + + public String getRouteName() { + return routeName; + } + + public void setRouteName(String routeName) { + this.routeName = routeName; + } + + @Override + public String toString() { + return "TaskPlanQueryDTO{" + + "id=" + id + + ", planName='" + planName + '\'' + + ", planType='" + planType + '\'' + + ", executeType='" + executeType + '\'' + + ", cycleType='" + cycleType + '\'' + + ", startDateStart=" + startDateStart + + ", startDateEnd=" + startDateEnd + + ", endDateStart=" + endDateStart + + ", endDateEnd=" + endDateEnd + + ", routeId=" + routeId + + ", uavId=" + uavId + + ", status='" + status + '\'' + + ", taskCategory='" + taskCategory + '\'' + + ", taskType='" + taskType + '\'' + + ", airportCode='" + airportCode + '\'' + + ", routeName='" + routeName + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/service/dto/TaskQueryDTO.java b/src/main/java/com/ruoyi/task/service/dto/TaskQueryDTO.java new file mode 100644 index 0000000..5d1b610 --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/dto/TaskQueryDTO.java @@ -0,0 +1,199 @@ +package com.ruoyi.task.service.dto; + +import java.util.Date; + +/** + * 任务查询条件数据传输对象 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskQueryDTO { + + /** 任务ID */ + private Long id; + + /** 计划ID(可为空,如一键起飞) */ + private Long planId; + + /** 任务名称 */ + private String taskName; + + /** 任务类别(如人工执飞) */ + private String taskCategory; + + /** 任务类型(如一键起飞) */ + private String taskType; + + /** 执行类型(单次执行、连续执行) */ + private String executeType; + + /** 航线ID */ + private Long routeId; + + /** 无人机ID */ + private Long uavId; + + /** 状态(0待执行 1执行中 2已完成 3已取消) */ + private String status; + + /** 开始时间(开始范围) */ + private Date startTimeStart; + + /** 开始时间(结束范围) */ + private Date startTimeEnd; + + /** 结束时间(开始范围) */ + private Date endTimeStart; + + /** 结束时间(结束范围) */ + private Date endTimeEnd; + + /** 机场代码 */ + private String airportCode; + + /** 航线名称 */ + private String routeName; + + // Getters and Setters + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + 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 getTaskCategory() { + return taskCategory; + } + + public void setTaskCategory(String taskCategory) { + this.taskCategory = taskCategory; + } + + public String getTaskType() { + return taskType; + } + + public void setTaskType(String taskType) { + this.taskType = taskType; + } + + public String getExecuteType() { + return executeType; + } + + public void setExecuteType(String executeType) { + this.executeType = executeType; + } + + public Long getRouteId() { + return routeId; + } + + public void setRouteId(Long routeId) { + this.routeId = routeId; + } + + public Long getUavId() { + return uavId; + } + + public void setUavId(Long uavId) { + this.uavId = uavId; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public Date getStartTimeStart() { + return startTimeStart; + } + + public void setStartTimeStart(Date startTimeStart) { + this.startTimeStart = startTimeStart; + } + + public Date getStartTimeEnd() { + return startTimeEnd; + } + + public void setStartTimeEnd(Date startTimeEnd) { + this.startTimeEnd = startTimeEnd; + } + + public Date getEndTimeStart() { + return endTimeStart; + } + + public void setEndTimeStart(Date endTimeStart) { + this.endTimeStart = endTimeStart; + } + + public Date getEndTimeEnd() { + return endTimeEnd; + } + + public void setEndTimeEnd(Date endTimeEnd) { + this.endTimeEnd = endTimeEnd; + } + + public String getAirportCode() { + return airportCode; + } + + public void setAirportCode(String airportCode) { + this.airportCode = airportCode; + } + + public String getRouteName() { + return routeName; + } + + public void setRouteName(String routeName) { + this.routeName = routeName; + } + + @Override + public String toString() { + return "TaskQueryDTO{" + + "id=" + id + + ", planId=" + planId + + ", taskName='" + taskName + '\'' + + ", taskCategory='" + taskCategory + '\'' + + ", taskType='" + taskType + '\'' + + ", executeType='" + executeType + '\'' + + ", routeId=" + routeId + + ", uavId=" + uavId + + ", status='" + status + '\'' + + ", startTimeStart=" + startTimeStart + + ", startTimeEnd=" + startTimeEnd + + ", endTimeStart=" + endTimeStart + + ", endTimeEnd=" + endTimeEnd + + ", airportCode='" + airportCode + '\'' + + ", routeName='" + routeName + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/service/dto/TaskStatDTO.java b/src/main/java/com/ruoyi/task/service/dto/TaskStatDTO.java new file mode 100644 index 0000000..a6068e1 --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/dto/TaskStatDTO.java @@ -0,0 +1,122 @@ +package com.ruoyi.task.service.dto; + +public class TaskStatDTO { + + private Long id; + private String airportCode; + private String routeName; + private String taskCategory; + private String taskType; + private String taskStatus; + private Integer year; + private Integer month; + private Integer day; + private Integer taskCount; + private String createBy; + private String updateBy; + private String remark; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getAirportCode() { + return airportCode; + } + + public void setAirportCode(String airportCode) { + this.airportCode = airportCode; + } + + public String getRouteName() { + return routeName; + } + + public void setRouteName(String routeName) { + this.routeName = routeName; + } + + public String getTaskCategory() { + return taskCategory; + } + + public void setTaskCategory(String taskCategory) { + this.taskCategory = taskCategory; + } + + public String getTaskType() { + return taskType; + } + + public void setTaskType(String taskType) { + this.taskType = taskType; + } + + public String getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(String taskStatus) { + this.taskStatus = taskStatus; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public Integer getMonth() { + return month; + } + + public void setMonth(Integer month) { + this.month = month; + } + + public Integer getDay() { + return day; + } + + public void setDay(Integer day) { + this.day = day; + } + + public Integer getTaskCount() { + return taskCount; + } + + public void setTaskCount(Integer taskCount) { + this.taskCount = taskCount; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} diff --git a/src/main/java/com/ruoyi/task/service/dto/TaskStatQueryDTO.java b/src/main/java/com/ruoyi/task/service/dto/TaskStatQueryDTO.java new file mode 100644 index 0000000..3e9c927 --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/dto/TaskStatQueryDTO.java @@ -0,0 +1,151 @@ +package com.ruoyi.task.service.dto; + +import java.util.Date; + +/** + * 任务统计查询条件数据传输对象 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskStatQueryDTO { + + /** 年份 */ + private Integer year; + + /** 月份 */ + private Integer month; + + /** 周数 */ + private Integer week; + + /** 日期 */ + private Integer day; + + /** 开始时间 */ + private Date startTime; + + /** 结束时间 */ + private Date endTime; + + /** 机场代码 */ + private String airportCode; + + /** 航线名称 */ + private String routeName; + + /** 任务类别 */ + private String taskCategory; + + /** 任务类型 */ + private String taskType; + + /** 任务状态 */ + private String taskStatus; + + // Getters and Setters + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public Integer getMonth() { + return month; + } + + public void setMonth(Integer month) { + this.month = month; + } + + public Integer getWeek() { + return week; + } + + public void setWeek(Integer week) { + this.week = week; + } + + public Integer getDay() { + return day; + } + + public void setDay(Integer day) { + this.day = day; + } + + 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 String getAirportCode() { + return airportCode; + } + + public void setAirportCode(String airportCode) { + this.airportCode = airportCode; + } + + public String getRouteName() { + return routeName; + } + + public void setRouteName(String routeName) { + this.routeName = routeName; + } + + public String getTaskCategory() { + return taskCategory; + } + + public void setTaskCategory(String taskCategory) { + this.taskCategory = taskCategory; + } + + public String getTaskType() { + return taskType; + } + + public void setTaskType(String taskType) { + this.taskType = taskType; + } + + public String getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(String taskStatus) { + this.taskStatus = taskStatus; + } + + @Override + public String toString() { + return "TaskStatQueryDTO{" + + "year=" + year + + ", month=" + month + + ", week=" + week + + ", day=" + day + + ", startTime=" + startTime + + ", endTime=" + endTime + + ", airportCode='" + airportCode + '\'' + + ", routeName='" + routeName + '\'' + + ", taskCategory='" + taskCategory + '\'' + + ", taskType='" + taskType + '\'' + + ", taskStatus='" + taskStatus + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/service/impl/TaskPlanServiceImpl.java b/src/main/java/com/ruoyi/task/service/impl/TaskPlanServiceImpl.java new file mode 100644 index 0000000..a0d9ed0 --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/impl/TaskPlanServiceImpl.java @@ -0,0 +1,63 @@ +package com.ruoyi.task.service.impl; + +import com.ruoyi.task.domain.api.ITaskPlanDomain; +import com.ruoyi.task.domain.model.TaskPlan; +import com.ruoyi.task.service.ITaskPlanService; +import com.ruoyi.task.service.convert.TaskPlanDTOConvert; +import com.ruoyi.task.service.dto.TaskPlanDTO; +import com.ruoyi.task.service.dto.TaskPlanQueryDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class TaskPlanServiceImpl implements ITaskPlanService { + + @Autowired + private ITaskPlanDomain taskPlanDomain; + + @Override + public Long createTimedTaskPlan(TaskPlanDTO taskPlanDTO) { + TaskPlan taskPlan = TaskPlanDTOConvert.toDomain(taskPlanDTO); + TaskPlan result = taskPlanDomain.createTimedTaskPlan(taskPlan); + return result != null ? result.getId() : null; + } + + @Override + public Long createCycleTaskPlan(TaskPlanDTO taskPlanDTO) { + TaskPlan taskPlan = TaskPlanDTOConvert.toDomain(taskPlanDTO); + TaskPlan result = taskPlanDomain.createCycleTaskPlan(taskPlan); + return result != null ? result.getId() : null; + } + + @Override + public TaskPlanDTO getTaskPlanById(Long planId) { + TaskPlan taskPlan = taskPlanDomain.getTaskPlanById(planId); + return TaskPlanDTOConvert.toDTO(taskPlan); + } + + @Override + public List getTaskPlanList(TaskPlanQueryDTO queryDTO) { + // 创建TaskPlan对象作为查询条件 + TaskPlan taskPlan = new TaskPlan(); + taskPlan.setRouteId(queryDTO.getRouteId()); + taskPlan.setStatus(queryDTO.getStatus()); + taskPlan.setPlanType(queryDTO.getPlanType()); + + List taskPlans = taskPlanDomain.getTaskPlanList(taskPlan); + return TaskPlanDTOConvert.toDTOList(taskPlans); + } + + @Override + public boolean updateTaskPlan(TaskPlanDTO taskPlanDTO) { + TaskPlan taskPlan = TaskPlanDTOConvert.toDomain(taskPlanDTO); + TaskPlan result = taskPlanDomain.updateTaskPlan(taskPlan); + return result != null; + } + + @Override + public boolean deleteTaskPlan(Long planId) { + return taskPlanDomain.deleteTaskPlan(planId); + } +} diff --git a/src/main/java/com/ruoyi/task/service/impl/TaskServiceImpl.java b/src/main/java/com/ruoyi/task/service/impl/TaskServiceImpl.java new file mode 100644 index 0000000..8b11852 --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/impl/TaskServiceImpl.java @@ -0,0 +1,57 @@ +package com.ruoyi.task.service.impl; + +import com.ruoyi.task.domain.api.ITaskDomain; +import com.ruoyi.task.domain.model.Task; +import com.ruoyi.task.service.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) { + // 创建Task对象作为查询条件 + Task task = new Task(); + task.setRouteId(queryDTO.getRouteId()); + task.setStatus(queryDTO.getStatus()); + task.setTaskCategory(queryDTO.getTaskCategory()); + task.setTaskType(queryDTO.getTaskType()); + + List tasks = taskDomain.getTaskList(task); + 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); + } +} diff --git a/src/main/java/com/ruoyi/task/service/impl/TaskStatServiceImpl.java b/src/main/java/com/ruoyi/task/service/impl/TaskStatServiceImpl.java new file mode 100644 index 0000000..f48930a --- /dev/null +++ b/src/main/java/com/ruoyi/task/service/impl/TaskStatServiceImpl.java @@ -0,0 +1,90 @@ +package com.ruoyi.task.service.impl; + +import com.ruoyi.task.domain.api.ITaskStatDomain; +import com.ruoyi.task.domain.model.TaskStat; +import com.ruoyi.task.service.ITaskStatService; +import com.ruoyi.task.service.convert.TaskStatDTOConvert; +import com.ruoyi.task.service.dto.TaskStatDTO; +import com.ruoyi.task.service.dto.TaskStatQueryDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +@Service +public class TaskStatServiceImpl implements ITaskStatService { + + @Autowired + private ITaskStatDomain taskStatDomain; + + @Override + public List getTaskStatByTimeRange(TaskStatQueryDTO queryDTO) { + List taskStats = taskStatDomain.getTaskStatByTimeRange( + queryDTO.getStartTime(), + queryDTO.getEndTime(), + queryDTO.getAirportCode(), + queryDTO.getRouteName(), + queryDTO.getTaskCategory(), + queryDTO.getTaskType(), + queryDTO.getTaskStatus() + ); + return TaskStatDTOConvert.toDTOList(taskStats); + } + + @Override + public List getTaskStatByMonth(TaskStatQueryDTO queryDTO) { + List taskStats = taskStatDomain.getTaskStatByMonth( + queryDTO.getYear(), + queryDTO.getMonth(), + queryDTO.getAirportCode(), + queryDTO.getRouteName(), + queryDTO.getTaskCategory(), + queryDTO.getTaskType(), + queryDTO.getTaskStatus() + ); + return TaskStatDTOConvert.toDTOList(taskStats); + } + + @Override + public List getTaskStatByWeek(TaskStatQueryDTO queryDTO) { + List taskStats = taskStatDomain.getTaskStatByWeek( + queryDTO.getYear(), + queryDTO.getWeek(), + queryDTO.getAirportCode(), + queryDTO.getRouteName(), + queryDTO.getTaskCategory(), + queryDTO.getTaskType(), + queryDTO.getTaskStatus() + ); + return TaskStatDTOConvert.toDTOList(taskStats); + } + + @Override + public List getTaskStatByYear(TaskStatQueryDTO queryDTO) { + List taskStats = taskStatDomain.getTaskStatByYear( + queryDTO.getYear(), + queryDTO.getAirportCode(), + queryDTO.getRouteName(), + queryDTO.getTaskCategory(), + queryDTO.getTaskType(), + queryDTO.getTaskStatus() + ); + return TaskStatDTOConvert.toDTOList(taskStats); + } + + @Override + public List getTaskStatList(TaskStatQueryDTO queryDTO) { + // 使用时间范围查询作为默认实现 + List taskStats = taskStatDomain.getTaskStatByTimeRange( + queryDTO.getStartTime(), + queryDTO.getEndTime(), + queryDTO.getAirportCode(), + queryDTO.getRouteName(), + queryDTO.getTaskCategory(), + queryDTO.getTaskType(), + queryDTO.getTaskStatus() + ); + return TaskStatDTOConvert.toDTOList(taskStats); + } +}