From 25e26b1b9fc221bc9b80d927832d15fc6aa8ea23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Thu, 5 Mar 2026 16:53:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A2=86=E5=9F=9F=E5=B1=82?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 + .../ruoyi/task/domain/api/ITaskDomain.java | 62 +++++ .../task/domain/api/ITaskPlanDomain.java | 79 ++++++ .../task/domain/api/ITaskStatDomain.java | 100 ++++++++ .../task/domain/convert/TaskConvert.java | 79 ++++++ .../task/domain/convert/TaskPlanConvert.java | 81 ++++++ .../task/domain/convert/TaskStatConvert.java | 71 ++++++ .../task/domain/impl/TaskDomainImpl.java | 90 +++++++ .../task/domain/impl/TaskPlanDomainImpl.java | 115 +++++++++ .../task/domain/impl/TaskStatDomainImpl.java | 146 +++++++++++ .../com/ruoyi/task/domain/model/Task.java | 218 +++++++++++++++++ .../com/ruoyi/task/domain/model/TaskPlan.java | 230 ++++++++++++++++++ .../com/ruoyi/task/domain/model/TaskStat.java | 170 +++++++++++++ 13 files changed, 1447 insertions(+) create mode 100644 src/main/java/com/ruoyi/task/domain/api/ITaskDomain.java create mode 100644 src/main/java/com/ruoyi/task/domain/api/ITaskPlanDomain.java create mode 100644 src/main/java/com/ruoyi/task/domain/api/ITaskStatDomain.java create mode 100644 src/main/java/com/ruoyi/task/domain/convert/TaskConvert.java create mode 100644 src/main/java/com/ruoyi/task/domain/convert/TaskPlanConvert.java create mode 100644 src/main/java/com/ruoyi/task/domain/convert/TaskStatConvert.java create mode 100644 src/main/java/com/ruoyi/task/domain/impl/TaskDomainImpl.java create mode 100644 src/main/java/com/ruoyi/task/domain/impl/TaskPlanDomainImpl.java create mode 100644 src/main/java/com/ruoyi/task/domain/impl/TaskStatDomainImpl.java create mode 100644 src/main/java/com/ruoyi/task/domain/model/Task.java create mode 100644 src/main/java/com/ruoyi/task/domain/model/TaskPlan.java create mode 100644 src/main/java/com/ruoyi/task/domain/model/TaskStat.java diff --git a/pom.xml b/pom.xml index b695359..21ac47c 100644 --- a/pom.xml +++ b/pom.xml @@ -71,6 +71,12 @@ ruoyi-common-swagger + + + com.ruoyi + ruoyi-common-core + + com.ruoyi diff --git a/src/main/java/com/ruoyi/task/domain/api/ITaskDomain.java b/src/main/java/com/ruoyi/task/domain/api/ITaskDomain.java new file mode 100644 index 0000000..0e5f1de --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/api/ITaskDomain.java @@ -0,0 +1,62 @@ +package com.ruoyi.task.domain.api; + +import com.ruoyi.task.domain.model.Task; + +import java.util.List; + +/** + * 任务领域接口 + * + * @author ruoyi + * @date 2026-03-05 + */ +public interface ITaskDomain { + + /** + * 创建无关联计划的飞行任务 + * + * @param task 任务领域模型 + * @return 创建后的任务 + */ + Task createTaskWithoutPlan(Task task); + + /** + * 更新任务 + * + * @param task 任务领域模型 + * @return 更新后的任务 + */ + Task updateTask(Task task); + + /** + * 删除任务 + * + * @param taskId 任务ID + * @return 是否删除成功 + */ + boolean deleteTask(Long taskId); + + /** + * 根据ID获取任务 + * + * @param taskId 任务ID + * @return 任务领域模型 + */ + Task getTaskById(Long taskId); + + /** + * 根据条件查询任务列表 + * + * @param task 查询条件 + * @return 任务列表 + */ + List getTaskList(Task task); + + /** + * 根据计划ID获取任务 + * + * @param planId 计划ID + * @return 任务列表 + */ + List getTaskByPlanId(Long planId); +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/domain/api/ITaskPlanDomain.java b/src/main/java/com/ruoyi/task/domain/api/ITaskPlanDomain.java new file mode 100644 index 0000000..84eafa9 --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/api/ITaskPlanDomain.java @@ -0,0 +1,79 @@ +package com.ruoyi.task.domain.api; + +import com.ruoyi.task.domain.model.TaskPlan; +import com.ruoyi.task.mapper.entity.TaskPlanEntity; + +import java.util.List; + +/** + * 任务计划领域接口 + * + * @author ruoyi + * @date 2026-03-05 + */ +public interface ITaskPlanDomain { + + /** + * 创建定时任务计划 + * + * @param taskPlan 任务计划领域模型 + * @return 创建后的任务计划 + */ + TaskPlan createTimedTaskPlan(TaskPlan taskPlan); + + /** + * 创建周期任务计划 + * + * @param taskPlan 任务计划领域模型 + * @return 创建后的任务计划 + */ + TaskPlan createCycleTaskPlan(TaskPlan taskPlan); + + /** + * 更新任务计划 + * + * @param taskPlan 任务计划领域模型 + * @return 更新后的任务计划 + */ + TaskPlan updateTaskPlan(TaskPlan taskPlan); + + /** + * 删除任务计划 + * + * @param planId 计划ID + * @return 是否删除成功 + */ + boolean deleteTaskPlan(Long planId); + + /** + * 根据ID获取任务计划 + * + * @param planId 计划ID + * @return 任务计划领域模型 + */ + TaskPlan getTaskPlanById(Long planId); + + /** + * 根据条件查询任务计划列表 + * + * @param taskPlan 查询条件 + * @return 任务计划列表 + */ + List getTaskPlanList(TaskPlan taskPlan); + + /** + * 根据计划类型获取任务计划 + * + * @param planType 计划类型 + * @return 任务计划列表 + */ + List getTaskPlanByType(String planType); + + /** + * 根据状态获取任务计划 + * + * @param status 状态 + * @return 任务计划列表 + */ + List getTaskPlanByStatus(String status); +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/domain/api/ITaskStatDomain.java b/src/main/java/com/ruoyi/task/domain/api/ITaskStatDomain.java new file mode 100644 index 0000000..004dc61 --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/api/ITaskStatDomain.java @@ -0,0 +1,100 @@ +package com.ruoyi.task.domain.api; + +import com.ruoyi.task.domain.model.TaskStat; + +import java.util.Date; +import java.util.List; + +/** + * 任务统计领域接口 + * + * @author ruoyi + * @date 2026-03-05 + */ +public interface ITaskStatDomain { + + /** + * 根据时间范围获取任务统计 + * + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param airportCode 机场代码 + * @param routeName 航线名称 + * @param taskCategory 任务类别 + * @param taskType 任务类型 + * @param taskStatus 任务状态 + * @return 任务统计列表 + */ + List getTaskStatByTimeRange(Date startTime, Date endTime, String airportCode, String routeName, String taskCategory, String taskType, String taskStatus); + + /** + * 按月获取任务统计 + * + * @param year 年份 + * @param month 月份 + * @param airportCode 机场代码 + * @param routeName 航线名称 + * @param taskCategory 任务类别 + * @param taskType 任务类型 + * @param taskStatus 任务状态 + * @return 任务统计列表 + */ + List getTaskStatByMonth(int year, int month, String airportCode, String routeName, String taskCategory, String taskType, String taskStatus); + + /** + * 按周获取任务统计 + * + * @param year 年份 + * @param week 周数 + * @param airportCode 机场代码 + * @param routeName 航线名称 + * @param taskCategory 任务类别 + * @param taskType 任务类型 + * @param taskStatus 任务状态 + * @return 任务统计列表 + */ + List getTaskStatByWeek(int year, int week, String airportCode, String routeName, String taskCategory, String taskType, String taskStatus); + + /** + * 按年获取任务统计 + * + * @param year 年份 + * @param airportCode 机场代码 + * @param routeName 航线名称 + * @param taskCategory 任务类别 + * @param taskType 任务类型 + * @param taskStatus 任务状态 + * @return 任务统计列表 + */ + List getTaskStatByYear(int year, String airportCode, String routeName, String taskCategory, String taskType, String taskStatus); + + /** + * 按任务类别获取统计 + * + * @param taskCategory 任务类别 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 任务统计列表 + */ + List getTaskStatByCategory(String taskCategory, Date startTime, Date endTime); + + /** + * 按任务类型获取统计 + * + * @param taskType 任务类型 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 任务统计列表 + */ + List getTaskStatByType(String taskType, Date startTime, Date endTime); + + /** + * 按任务状态获取统计 + * + * @param taskStatus 任务状态 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 任务统计列表 + */ + List getTaskStatByStatus(String taskStatus, Date startTime, Date endTime); +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/domain/convert/TaskConvert.java b/src/main/java/com/ruoyi/task/domain/convert/TaskConvert.java new file mode 100644 index 0000000..f8d0d27 --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/convert/TaskConvert.java @@ -0,0 +1,79 @@ +package com.ruoyi.task.domain.convert; + +import com.ruoyi.task.domain.model.Task; +import com.ruoyi.task.mapper.entity.TaskInfoEntity; + +/** + * 任务转换类 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskConvert { + + /** + * 将实体转换为领域模型 + * + * @param entity 任务信息实体 + * @return 任务领域模型 + */ + public static Task toModel(TaskInfoEntity entity) { + if (entity == null) { + return null; + } + + Task model = new Task(); + model.setId(entity.getId()); + model.setPlanId(entity.getPlanId()); + model.setTaskName(entity.getTaskName()); + model.setTaskCategory(entity.getTaskCategory()); + model.setTaskType(entity.getTaskType()); + model.setExecuteType(entity.getExecuteType()); + model.setRouteId(entity.getRouteId()); + model.setUavId(entity.getUavId()); + model.setStatus(entity.getStatus()); + model.setStartTime(entity.getStartTime()); + model.setEndTime(entity.getEndTime()); + model.setDescription(entity.getDescription()); + model.setCreateBy(entity.getCreateBy()); + model.setCreateTime(entity.getCreateTime()); + model.setUpdateBy(entity.getUpdateBy()); + model.setUpdateTime(entity.getUpdateTime()); + model.setRemark(entity.getRemark()); + + return model; + } + + /** + * 将领域模型转换为实体 + * + * @param model 任务领域模型 + * @return 任务信息实体 + */ + public static TaskInfoEntity toEntity(Task model) { + if (model == null) { + return null; + } + + TaskInfoEntity entity = new TaskInfoEntity(); + entity.setId(model.getId()); + entity.setPlanId(model.getPlanId()); + entity.setTaskName(model.getTaskName()); + entity.setTaskCategory(model.getTaskCategory()); + entity.setTaskType(model.getTaskType()); + entity.setExecuteType(model.getExecuteType()); + entity.setRouteId(model.getRouteId()); + entity.setUavId(model.getUavId()); + entity.setStatus(model.getStatus()); + entity.setStartTime(model.getStartTime()); + entity.setEndTime(model.getEndTime()); + entity.setDescription(model.getDescription()); + entity.setCreateBy(model.getCreateBy()); + entity.setCreateTime(model.getCreateTime()); + entity.setUpdateBy(model.getUpdateBy()); + entity.setUpdateTime(model.getUpdateTime()); + entity.setRemark(model.getRemark()); + + return entity; + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/domain/convert/TaskPlanConvert.java b/src/main/java/com/ruoyi/task/domain/convert/TaskPlanConvert.java new file mode 100644 index 0000000..d1e9ec9 --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/convert/TaskPlanConvert.java @@ -0,0 +1,81 @@ +package com.ruoyi.task.domain.convert; + +import com.ruoyi.task.domain.model.TaskPlan; +import com.ruoyi.task.mapper.entity.TaskPlanEntity; + +/** + * 任务计划转换类 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskPlanConvert { + + /** + * 将实体转换为领域模型 + * + * @param entity 任务计划实体 + * @return 任务计划领域模型 + */ + public static TaskPlan toModel(TaskPlanEntity entity) { + if (entity == null) { + return null; + } + + TaskPlan model = new TaskPlan(); + model.setId(entity.getId()); + model.setPlanName(entity.getPlanName()); + model.setPlanType(entity.getPlanType()); + model.setExecuteType(entity.getExecuteType()); + model.setCycleType(entity.getCycleType()); + model.setCycleValue(entity.getCycleValue()); + model.setStartDate(entity.getStartDate()); + model.setEndDate(entity.getEndDate()); + model.setExecuteTime(entity.getExecuteTime()); + model.setRouteId(entity.getRouteId()); + model.setUavId(entity.getUavId()); + model.setStatus(entity.getStatus()); + model.setDescription(entity.getDescription()); + model.setCreateBy(entity.getCreateBy()); + model.setCreateTime(entity.getCreateTime()); + model.setUpdateBy(entity.getUpdateBy()); + model.setUpdateTime(entity.getUpdateTime()); + model.setRemark(entity.getRemark()); + + return model; + } + + /** + * 将领域模型转换为实体 + * + * @param model 任务计划领域模型 + * @return 任务计划实体 + */ + public static TaskPlanEntity toEntity(TaskPlan model) { + if (model == null) { + return null; + } + + TaskPlanEntity entity = new TaskPlanEntity(); + entity.setId(model.getId()); + entity.setPlanName(model.getPlanName()); + entity.setPlanType(model.getPlanType()); + entity.setExecuteType(model.getExecuteType()); + entity.setCycleType(model.getCycleType()); + entity.setCycleValue(model.getCycleValue()); + entity.setStartDate(model.getStartDate()); + entity.setEndDate(model.getEndDate()); + entity.setExecuteTime(model.getExecuteTime()); + entity.setRouteId(model.getRouteId()); + entity.setUavId(model.getUavId()); + entity.setStatus(model.getStatus()); + entity.setDescription(model.getDescription()); + entity.setCreateBy(model.getCreateBy()); + entity.setCreateTime(model.getCreateTime()); + entity.setUpdateBy(model.getUpdateBy()); + entity.setUpdateTime(model.getUpdateTime()); + entity.setRemark(model.getRemark()); + + return entity; + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/domain/convert/TaskStatConvert.java b/src/main/java/com/ruoyi/task/domain/convert/TaskStatConvert.java new file mode 100644 index 0000000..2cae5eb --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/convert/TaskStatConvert.java @@ -0,0 +1,71 @@ +package com.ruoyi.task.domain.convert; + +import com.ruoyi.task.domain.model.TaskStat; +import com.ruoyi.task.mapper.entity.TaskStatEntity; + +/** + * 任务统计转换类 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskStatConvert { + + /** + * 将实体转换为领域模型 + * + * @param entity 任务统计实体 + * @return 任务统计领域模型 + */ + public static TaskStat toModel(TaskStatEntity entity) { + if (entity == null) { + return null; + } + + TaskStat model = new TaskStat(); + model.setId(entity.getId()); + model.setAirportCode(entity.getAirportCode()); + model.setRouteName(entity.getRouteName()); + model.setTaskCategory(entity.getTaskCategory()); + model.setTaskType(entity.getTaskType()); + model.setTaskStatus(entity.getTaskStatus()); + model.setYear(entity.getYear()); + model.setMonth(entity.getMonth()); + model.setDay(entity.getDay()); + model.setTaskCount(entity.getTaskCount()); + model.setCreateBy(entity.getCreateBy()); + model.setUpdateBy(entity.getUpdateBy()); + model.setRemark(entity.getRemark()); + + return model; + } + + /** + * 将领域模型转换为实体 + * + * @param model 任务统计领域模型 + * @return 任务统计实体 + */ + public static TaskStatEntity toEntity(TaskStat model) { + if (model == null) { + return null; + } + + TaskStatEntity entity = new TaskStatEntity(); + entity.setId(model.getId()); + entity.setAirportCode(model.getAirportCode()); + entity.setRouteName(model.getRouteName()); + entity.setTaskCategory(model.getTaskCategory()); + entity.setTaskType(model.getTaskType()); + entity.setTaskStatus(model.getTaskStatus()); + entity.setYear(model.getYear()); + entity.setMonth(model.getMonth()); + entity.setDay(model.getDay()); + entity.setTaskCount(model.getTaskCount()); + entity.setCreateBy(model.getCreateBy()); + entity.setUpdateBy(model.getUpdateBy()); + entity.setRemark(model.getRemark()); + + return entity; + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/domain/impl/TaskDomainImpl.java b/src/main/java/com/ruoyi/task/domain/impl/TaskDomainImpl.java new file mode 100644 index 0000000..3c0d643 --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/impl/TaskDomainImpl.java @@ -0,0 +1,90 @@ +package com.ruoyi.task.domain.impl; + +import com.ruoyi.task.domain.api.ITaskDomain; +import com.ruoyi.task.domain.convert.TaskConvert; +import com.ruoyi.task.domain.model.Task; +import com.ruoyi.task.mapper.TaskInfoMapper; +import com.ruoyi.task.mapper.entity.TaskInfoEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 任务领域实现类 + * + * @author ruoyi + * @date 2026-03-05 + */ +@Component +public class TaskDomainImpl implements ITaskDomain { + + @Autowired + private TaskInfoMapper taskInfoMapper; + + @Override + public Task createTaskWithoutPlan(Task task) { + // 确保planId为null,表示无关联计划 + task.setPlanId(null); + // 转换为实体 + TaskInfoEntity entity = TaskConvert.toEntity(task); + // 插入数据库 + taskInfoMapper.insertTaskInfo(entity); + // 转换回领域模型并返回 + return TaskConvert.toModel(entity); + } + + @Override + public Task updateTask(Task task) { + // 转换为实体 + TaskInfoEntity entity = TaskConvert.toEntity(task); + // 更新数据库 + taskInfoMapper.updateTaskInfo(entity); + // 查询更新后的实体 + TaskInfoEntity updatedEntity = taskInfoMapper.selectTaskInfoById(task.getId()); + // 转换回领域模型并返回 + return TaskConvert.toModel(updatedEntity); + } + + @Override + public boolean deleteTask(Long taskId) { + // 删除数据库记录 + int result = taskInfoMapper.deleteTaskInfoById(taskId); + // 返回删除结果 + return result > 0; + } + + @Override + public Task getTaskById(Long taskId) { + // 查询数据库 + TaskInfoEntity entity = taskInfoMapper.selectTaskInfoById(taskId); + // 转换为领域模型并返回 + return TaskConvert.toModel(entity); + } + + @Override + public List getTaskList(Task task) { + // 转换为实体作为查询条件 + TaskInfoEntity entity = TaskConvert.toEntity(task); + // 查询数据库 + List entityList = taskInfoMapper.selectTaskInfoList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskConvert::toModel) + .collect(Collectors.toList()); + } + + @Override + public List getTaskByPlanId(Long planId) { + // 创建查询条件 + TaskInfoEntity entity = new TaskInfoEntity(); + entity.setPlanId(planId); + // 查询数据库 + List entityList = taskInfoMapper.selectTaskInfoList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskConvert::toModel) + .collect(Collectors.toList()); + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/domain/impl/TaskPlanDomainImpl.java b/src/main/java/com/ruoyi/task/domain/impl/TaskPlanDomainImpl.java new file mode 100644 index 0000000..088af30 --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/impl/TaskPlanDomainImpl.java @@ -0,0 +1,115 @@ +package com.ruoyi.task.domain.impl; + +import com.ruoyi.task.domain.api.ITaskPlanDomain; +import com.ruoyi.task.domain.convert.TaskPlanConvert; +import com.ruoyi.task.domain.model.TaskPlan; +import com.ruoyi.task.mapper.TaskPlanMapper; +import com.ruoyi.task.mapper.entity.TaskPlanEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 任务计划领域实现类 + * + * @author ruoyi + * @date 2026-03-05 + */ +@Component +public class TaskPlanDomainImpl implements ITaskPlanDomain { + + @Autowired + private TaskPlanMapper taskPlanMapper; + + @Override + public TaskPlan createTimedTaskPlan(TaskPlan taskPlan) { + // 设置计划类型为定时任务计划 + taskPlan.setPlanType("定时任务计划"); + // 转换为实体 + TaskPlanEntity entity = TaskPlanConvert.toEntity(taskPlan); + // 插入数据库 + taskPlanMapper.insertTaskPlan(entity); + // 转换回领域模型并返回 + return TaskPlanConvert.toModel(entity); + } + + @Override + public TaskPlan createCycleTaskPlan(TaskPlan taskPlan) { + // 设置计划类型为周期任务计划 + taskPlan.setPlanType("周期任务计划"); + // 转换为实体 + TaskPlanEntity entity = TaskPlanConvert.toEntity(taskPlan); + // 插入数据库 + taskPlanMapper.insertTaskPlan(entity); + // 转换回领域模型并返回 + return TaskPlanConvert.toModel(entity); + } + + @Override + public TaskPlan updateTaskPlan(TaskPlan taskPlan) { + // 转换为实体 + TaskPlanEntity entity = TaskPlanConvert.toEntity(taskPlan); + // 更新数据库 + taskPlanMapper.updateTaskPlan(entity); + // 查询更新后的实体 + TaskPlanEntity updatedEntity = taskPlanMapper.selectTaskPlanById(taskPlan.getId()); + // 转换回领域模型并返回 + return TaskPlanConvert.toModel(updatedEntity); + } + + @Override + public boolean deleteTaskPlan(Long planId) { + // 删除数据库记录 + int result = taskPlanMapper.deleteTaskPlanById(planId); + // 返回删除结果 + return result > 0; + } + + @Override + public TaskPlan getTaskPlanById(Long planId) { + // 查询数据库 + TaskPlanEntity entity = taskPlanMapper.selectTaskPlanById(planId); + // 转换为领域模型并返回 + return TaskPlanConvert.toModel(entity); + } + + @Override + public List getTaskPlanList(TaskPlan taskPlan) { + // 转换为实体作为查询条件 + TaskPlanEntity entity = TaskPlanConvert.toEntity(taskPlan); + // 查询数据库 + List entityList = taskPlanMapper.selectTaskPlanList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskPlanConvert::toModel) + .collect(Collectors.toList()); + } + + @Override + public List getTaskPlanByType(String planType) { + // 创建查询条件 + TaskPlanEntity entity = new TaskPlanEntity(); + entity.setPlanType(planType); + // 查询数据库 + List entityList = taskPlanMapper.selectTaskPlanList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskPlanConvert::toModel) + .collect(Collectors.toList()); + } + + @Override + public List getTaskPlanByStatus(String status) { + // 创建查询条件 + TaskPlanEntity entity = new TaskPlanEntity(); + entity.setStatus(status); + // 查询数据库 + List entityList = taskPlanMapper.selectTaskPlanList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskPlanConvert::toModel) + .collect(Collectors.toList()); + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/domain/impl/TaskStatDomainImpl.java b/src/main/java/com/ruoyi/task/domain/impl/TaskStatDomainImpl.java new file mode 100644 index 0000000..13149db --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/impl/TaskStatDomainImpl.java @@ -0,0 +1,146 @@ +package com.ruoyi.task.domain.impl; + +import com.ruoyi.task.domain.api.ITaskStatDomain; +import com.ruoyi.task.domain.convert.TaskStatConvert; +import com.ruoyi.task.domain.model.TaskStat; +import com.ruoyi.task.mapper.TaskStatMapper; +import com.ruoyi.task.mapper.entity.TaskStatEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 任务统计领域实现类 + * + * @author ruoyi + * @date 2026-03-05 + */ +@Component +public class TaskStatDomainImpl implements ITaskStatDomain { + + @Autowired + private TaskStatMapper taskStatMapper; + + @Override + public List getTaskStatByTimeRange(Date startTime, Date endTime, String airportCode, String routeName, String taskCategory, String taskType, String taskStatus) { + // 创建查询条件 + TaskStatEntity entity = new TaskStatEntity(); + // 这里需要根据实际的数据库查询逻辑来设置条件 + // 由于TaskStatMapper的selectTaskStatList方法支持的条件有限, + // 实际实现中可能需要扩展Mapper接口或使用其他方式实现复杂查询 + // 这里仅作为示例 + entity.setAirportCode(airportCode); + entity.setTaskCategory(taskCategory); + entity.setTaskType(taskType); + entity.setTaskStatus(taskStatus); + + // 查询数据库 + List entityList = taskStatMapper.selectTaskStatList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskStatConvert::toModel) + .collect(Collectors.toList()); + } + + @Override + public List getTaskStatByMonth(int year, int month, String airportCode, String routeName, String taskCategory, String taskType, String taskStatus) { + // 创建查询条件 + TaskStatEntity entity = new TaskStatEntity(); + entity.setYear(year); + entity.setMonth(month); + entity.setAirportCode(airportCode); + entity.setTaskCategory(taskCategory); + entity.setTaskType(taskType); + entity.setTaskStatus(taskStatus); + + // 查询数据库 + List entityList = taskStatMapper.selectTaskStatList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskStatConvert::toModel) + .collect(Collectors.toList()); + } + + @Override + public List getTaskStatByWeek(int year, int week, String airportCode, String routeName, String taskCategory, String taskType, String taskStatus) { + // 创建查询条件 + TaskStatEntity entity = new TaskStatEntity(); + // 周统计需要根据实际的周计算逻辑来设置条件 + // 这里仅作为示例 + entity.setYear(year); + entity.setAirportCode(airportCode); + entity.setTaskCategory(taskCategory); + entity.setTaskType(taskType); + entity.setTaskStatus(taskStatus); + + // 查询数据库 + List entityList = taskStatMapper.selectTaskStatList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskStatConvert::toModel) + .collect(Collectors.toList()); + } + + @Override + public List getTaskStatByYear(int year, String airportCode, String routeName, String taskCategory, String taskType, String taskStatus) { + // 创建查询条件 + TaskStatEntity entity = new TaskStatEntity(); + entity.setYear(year); + entity.setAirportCode(airportCode); + entity.setTaskCategory(taskCategory); + entity.setTaskType(taskType); + entity.setTaskStatus(taskStatus); + + // 查询数据库 + List entityList = taskStatMapper.selectTaskStatList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskStatConvert::toModel) + .collect(Collectors.toList()); + } + + @Override + public List getTaskStatByCategory(String taskCategory, Date startTime, Date endTime) { + // 创建查询条件 + TaskStatEntity entity = new TaskStatEntity(); + entity.setTaskCategory(taskCategory); + + // 查询数据库 + List entityList = taskStatMapper.selectTaskStatList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskStatConvert::toModel) + .collect(Collectors.toList()); + } + + @Override + public List getTaskStatByType(String taskType, Date startTime, Date endTime) { + // 创建查询条件 + TaskStatEntity entity = new TaskStatEntity(); + entity.setTaskType(taskType); + + // 查询数据库 + List entityList = taskStatMapper.selectTaskStatList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskStatConvert::toModel) + .collect(Collectors.toList()); + } + + @Override + public List getTaskStatByStatus(String taskStatus, Date startTime, Date endTime) { + // 创建查询条件 + TaskStatEntity entity = new TaskStatEntity(); + entity.setTaskStatus(taskStatus); + + // 查询数据库 + List entityList = taskStatMapper.selectTaskStatList(entity); + // 转换为领域模型列表并返回 + return entityList.stream() + .map(TaskStatConvert::toModel) + .collect(Collectors.toList()); + } +} \ No newline at end of file diff --git a/src/main/java/com/ruoyi/task/domain/model/Task.java b/src/main/java/com/ruoyi/task/domain/model/Task.java new file mode 100644 index 0000000..a2b9e9e --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/model/Task.java @@ -0,0 +1,218 @@ +package com.ruoyi.task.domain.model; + +import java.util.Date; + +/** + * 任务领域模型 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class Task { + + /** 任务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 createBy; + + /** 创建时间 */ + private Date createTime; + + /** 更新者 */ + private String updateBy; + + /** 更新时间 */ + private Date updateTime; + + /** 备注 */ + 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 getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + @Override + public String toString() { + return "Task{" + + "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/domain/model/TaskPlan.java b/src/main/java/com/ruoyi/task/domain/model/TaskPlan.java new file mode 100644 index 0000000..33ea024 --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/model/TaskPlan.java @@ -0,0 +1,230 @@ +package com.ruoyi.task.domain.model; + +import java.util.Date; + +/** + * 任务计划领域模型 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskPlan { + + /** 计划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 createBy; + + /** 创建时间 */ + private Date createTime; + + /** 更新者 */ + private String updateBy; + + /** 更新时间 */ + private Date updateTime; + + /** 备注 */ + 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 getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + @Override + public String toString() { + return "TaskPlan{" + + "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/domain/model/TaskStat.java b/src/main/java/com/ruoyi/task/domain/model/TaskStat.java new file mode 100644 index 0000000..bd6c450 --- /dev/null +++ b/src/main/java/com/ruoyi/task/domain/model/TaskStat.java @@ -0,0 +1,170 @@ +package com.ruoyi.task.domain.model; + +/** + * 任务统计领域模型 + * + * @author ruoyi + * @date 2026-03-05 + */ +public class TaskStat { + + /** 统计ID */ + private Long id; + + /** 机场代码 */ + private String airportCode; + + /** 航线名称 */ + private String routeName; + + /** 任务类别(如人工执飞) */ + private String taskCategory; + + /** 任务类型(如一键起飞) */ + private String taskType; + + /** 任务状态(0待执行 1执行中 2已完成 3已取消) */ + private String taskStatus; + + /** 年份 */ + private Integer year; + + /** 月份 */ + private Integer month; + + /** 日期 */ + private Integer day; + + /** 任务数量 */ + private Integer taskCount; + + /** 创建者 */ + private String createBy; + + /** 更新者 */ + private String updateBy; + + /** 备注 */ + private String remark; + + // Getters and Setters + 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; + } + + @Override + public String toString() { + return "TaskStat{" + + "id=" + id + + ", airportCode='" + airportCode + '\'' + + ", routeName='" + routeName + '\'' + + ", taskCategory='" + taskCategory + '\'' + + ", taskType='" + taskType + '\'' + + ", taskStatus='" + taskStatus + '\'' + + ", year=" + year + + ", month=" + month + + ", day=" + day + + ", taskCount=" + taskCount + + '}'; + } +} \ No newline at end of file