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},