From c59ca56d97477eb4f7b81eb0ecd5319faf1f0189 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Fri, 6 Mar 2026 13:41:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/domain/convert/TaskPlanConvert.java | 2 ++ .../com/ruoyi/task/domain/model/TaskPlan.java | 14 +++++++++++- .../task/mapper/entity/TaskPlanEntity.java | 12 ++++++++++ .../service/convert/TaskPlanDTOConvert.java | 2 ++ .../ruoyi/task/service/dto/TaskPlanDTO.java | 14 ++++++++++++ .../service/impl/TaskPlanServiceImpl.java | 22 +++++++++++++++---- .../db/migration/V3__Add_duration_column.sql | 5 +++++ .../resources/mapper/task/TaskPlanMapper.xml | 6 ++++- 8 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/db/migration/V3__Add_duration_column.sql diff --git a/src/main/java/com/ruoyi/task/domain/convert/TaskPlanConvert.java b/src/main/java/com/ruoyi/task/domain/convert/TaskPlanConvert.java index 23cb3bc..7fcf6f8 100644 --- a/src/main/java/com/ruoyi/task/domain/convert/TaskPlanConvert.java +++ b/src/main/java/com/ruoyi/task/domain/convert/TaskPlanConvert.java @@ -36,6 +36,7 @@ public class TaskPlanConvert { model.setStartDate(entity.getStartDate()); model.setEndDate(entity.getEndDate()); model.setExecuteTime(entity.getExecuteTime()); + model.setDuration(entity.getDuration()); model.setRouteId(entity.getRouteId()); model.setUavId(entity.getUavId()); model.setStatus(StatusEnum.getByCode(entity.getStatus())); @@ -70,6 +71,7 @@ public class TaskPlanConvert { entity.setStartDate(model.getStartDate()); entity.setEndDate(model.getEndDate()); entity.setExecuteTime(model.getExecuteTime()); + entity.setDuration(model.getDuration()); entity.setRouteId(model.getRouteId()); entity.setUavId(model.getUavId()); entity.setStatus(model.getStatus() != null ? model.getStatus().getCode() : null); diff --git a/src/main/java/com/ruoyi/task/domain/model/TaskPlan.java b/src/main/java/com/ruoyi/task/domain/model/TaskPlan.java index b48b3b8..7b2c6ec 100644 --- a/src/main/java/com/ruoyi/task/domain/model/TaskPlan.java +++ b/src/main/java/com/ruoyi/task/domain/model/TaskPlan.java @@ -54,9 +54,12 @@ public class TaskPlan { * * 对于定时任务 * executeTime 就是执行时间 - */ + /** 执行时间(仅在定义任务时有效) */ private Date executeTime; + /** 执行时长 秒 */ + private Integer duration; + /** 航线ID */ private Long routeId; @@ -157,6 +160,14 @@ public class TaskPlan { this.executeTime = executeTime; } + public Integer getDuration() { + return duration; + } + + public void setDuration(Integer duration) { + this.duration = duration; + } + public Long getRouteId() { return routeId; } @@ -241,6 +252,7 @@ public class TaskPlan { ", startDate=" + startDate + ", endDate=" + endDate + ", executeTime=" + executeTime + + ", duration=" + duration + ", routeId=" + routeId + ", uavId=" + uavId + ", status=" + status + diff --git a/src/main/java/com/ruoyi/task/mapper/entity/TaskPlanEntity.java b/src/main/java/com/ruoyi/task/mapper/entity/TaskPlanEntity.java index 0b01b3a..56f3ab0 100644 --- a/src/main/java/com/ruoyi/task/mapper/entity/TaskPlanEntity.java +++ b/src/main/java/com/ruoyi/task/mapper/entity/TaskPlanEntity.java @@ -35,6 +35,9 @@ public class TaskPlanEntity extends BaseEntity { /** 执行时间 */ private Date executeTime; + /** 执行时长 秒 */ + private Integer duration; + /** 开始日期 */ private Date startDate; @@ -109,6 +112,14 @@ public class TaskPlanEntity extends BaseEntity { this.executeTime = executeTime; } + public Integer getDuration() { + return duration; + } + + public void setDuration(Integer duration) { + this.duration = duration; + } + public Date getStartDate() { return startDate; } @@ -167,6 +178,7 @@ public class TaskPlanEntity extends BaseEntity { ", cycleValue='" + cycleValue + '\'' + ", executeType='" + executeType + '\'' + ", executeTime=" + executeTime + + ", duration=" + duration + ", startDate=" + startDate + ", endDate=" + endDate + ", routeId=" + routeId + diff --git a/src/main/java/com/ruoyi/task/service/convert/TaskPlanDTOConvert.java b/src/main/java/com/ruoyi/task/service/convert/TaskPlanDTOConvert.java index d90d07a..bd247ff 100644 --- a/src/main/java/com/ruoyi/task/service/convert/TaskPlanDTOConvert.java +++ b/src/main/java/com/ruoyi/task/service/convert/TaskPlanDTOConvert.java @@ -27,6 +27,7 @@ public class TaskPlanDTOConvert { dto.setStartDate(taskPlan.getStartDate()); dto.setEndDate(taskPlan.getEndDate()); dto.setExecuteTime(taskPlan.getExecuteTime()); + dto.setDuration(taskPlan.getDuration()); dto.setRouteId(taskPlan.getRouteId()); dto.setUavId(taskPlan.getUavId()); dto.setStatus(taskPlan.getStatus()); @@ -51,6 +52,7 @@ public class TaskPlanDTOConvert { taskPlan.setStartDate(dto.getStartDate()); taskPlan.setEndDate(dto.getEndDate()); taskPlan.setExecuteTime(dto.getExecuteTime()); + taskPlan.setDuration(dto.getDuration()); taskPlan.setRouteId(dto.getRouteId()); taskPlan.setUavId(dto.getUavId()); taskPlan.setStatus(dto.getStatus()); diff --git a/src/main/java/com/ruoyi/task/service/dto/TaskPlanDTO.java b/src/main/java/com/ruoyi/task/service/dto/TaskPlanDTO.java index eb96323..0a1ad77 100644 --- a/src/main/java/com/ruoyi/task/service/dto/TaskPlanDTO.java +++ b/src/main/java/com/ruoyi/task/service/dto/TaskPlanDTO.java @@ -42,6 +42,11 @@ public class TaskPlanDTO { /** 执行时间(仅在定义任务时有效) */ private Date executeTime; + /** + * 执行时长 秒 + */ + private Integer duration; + /** 航线ID */ private Long routeId; @@ -130,6 +135,14 @@ public class TaskPlanDTO { this.executeTime = executeTime; } + public Integer getDuration() { + return duration; + } + + public void setDuration(Integer duration) { + this.duration = duration; + } + public Long getRouteId() { return routeId; } @@ -182,6 +195,7 @@ public class TaskPlanDTO { ", startDate=" + startDate + ", endDate=" + endDate + ", executeTime=" + executeTime + + ", duration=" + duration + ", routeId=" + routeId + ", uavId=" + uavId + ", status=" + status + diff --git a/src/main/java/com/ruoyi/task/service/impl/TaskPlanServiceImpl.java b/src/main/java/com/ruoyi/task/service/impl/TaskPlanServiceImpl.java index 1c83f2c..6577732 100644 --- a/src/main/java/com/ruoyi/task/service/impl/TaskPlanServiceImpl.java +++ b/src/main/java/com/ruoyi/task/service/impl/TaskPlanServiceImpl.java @@ -94,6 +94,15 @@ public class TaskPlanServiceImpl implements ITaskPlanService { task.setRouteId(taskPlan.getRouteId()); task.setUavId(taskPlan.getUavId()); task.setStartTime(taskPlan.getExecuteTime()); + + // 设置结束时间:开始时间 + 执行时长 + if (taskPlan.getExecuteTime() != null && taskPlan.getDuration() != null) { + java.util.Calendar endTaskCalendar = java.util.Calendar.getInstance(); + endTaskCalendar.setTime(taskPlan.getExecuteTime()); + endTaskCalendar.add(java.util.Calendar.SECOND, taskPlan.getDuration()); + task.setEndTime(endTaskCalendar.getTime()); + } + task.setStatus(StatusEnum.PENDING); // 待执行 task.setDescription("由任务计划自动创建"); @@ -164,10 +173,15 @@ public class TaskPlanServiceImpl implements ITaskPlanService { taskCalendar.set(java.util.Calendar.SECOND, executeTimeCalendar.get(java.util.Calendar.SECOND)); task.setStartTime(taskCalendar.getTime()); - // 简单设置结束时间为开始时间后1小时(可根据实际需求调整) -// java.util.Calendar endTaskCalendar = (java.util.Calendar) taskCalendar.clone(); -// endTaskCalendar.add(java.util.Calendar.HOUR_OF_DAY, 1); -// task.setEndTime(endTaskCalendar.getTime()); + // 设置结束时间:开始时间 + 执行时长 + java.util.Calendar endTaskCalendar = (java.util.Calendar) taskCalendar.clone(); + if (taskPlan.getDuration() != null) { + endTaskCalendar.add(java.util.Calendar.SECOND, taskPlan.getDuration()); + } else { + // 如果没有设置执行时长,默认1小时 + endTaskCalendar.add(java.util.Calendar.HOUR_OF_DAY, 1); + } + task.setEndTime(endTaskCalendar.getTime()); } else { // 如果没有设置执行时间,使用日历时间作为开始和结束时间 task.setStartTime(calendar.getTime()); diff --git a/src/main/resources/db/migration/V3__Add_duration_column.sql b/src/main/resources/db/migration/V3__Add_duration_column.sql new file mode 100644 index 0000000..168239d --- /dev/null +++ b/src/main/resources/db/migration/V3__Add_duration_column.sql @@ -0,0 +1,5 @@ +-- ---------------------------- +-- 添加任务计划执行时长字段 +-- ---------------------------- +ALTER TABLE task_plan +ADD COLUMN duration INT(11) DEFAULT NULL COMMENT '执行时长(秒)' AFTER execute_time; \ No newline at end of file diff --git a/src/main/resources/mapper/task/TaskPlanMapper.xml b/src/main/resources/mapper/task/TaskPlanMapper.xml index ff31406..eb5c39e 100644 --- a/src/main/resources/mapper/task/TaskPlanMapper.xml +++ b/src/main/resources/mapper/task/TaskPlanMapper.xml @@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -27,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, plan_name, plan_type, cycle_type, cycle_value, execute_type, - execute_time, start_date, end_date, route_id, uav_id, status, + execute_time, duration, start_date, end_date, route_id, uav_id, status, description, create_by, create_time, update_by, update_time, remark from task_plan @@ -73,6 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" cycle_value, execute_type, execute_time, + duration, start_date, end_date, route_id, @@ -90,6 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{cycleValue}, #{executeType}, #{executeTime}, + #{duration}, #{startDate}, #{endDate}, #{routeId}, @@ -111,6 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" cycle_value = #{cycleValue}, execute_type = #{executeType}, execute_time = #{executeTime}, + duration = #{duration}, start_date = #{startDate}, end_date = #{endDate}, route_id = #{routeId},