diff --git a/src/main/java/com/ruoyi/task/controller/TaskPlanController.java b/src/main/java/com/ruoyi/task/controller/TaskPlanController.java index eb8daa9..512d954 100644 --- a/src/main/java/com/ruoyi/task/controller/TaskPlanController.java +++ b/src/main/java/com/ruoyi/task/controller/TaskPlanController.java @@ -53,7 +53,7 @@ public class TaskPlanController extends BaseController { taskPlanDTO.setPlanType(PlanTypeEnum.TIMED); setDefaultPlan(taskPlanDTO); - Long planId = taskPlanService.createTimedTaskPlan(TaskPlanControllerConvert.to(taskPlanDTO)); + Long planId = taskPlanService.createTimedTaskPlan(TaskPlanControllerConvert.to(taskPlanDTO),true); return R.ok(planId); } @@ -65,7 +65,7 @@ public class TaskPlanController extends BaseController { taskPlanDTO.setPlanType(PlanTypeEnum.CYCLE); setDefaultPlan(taskPlanDTO); - Long planId = taskPlanService.createCycleTaskPlan(TaskPlanControllerConvert.to(taskPlanDTO)); + Long planId = taskPlanService.createCycleTaskPlan(TaskPlanControllerConvert.to(taskPlanDTO),true); return R.ok(planId); } diff --git a/src/main/java/com/ruoyi/task/domain/impl/TaskPlanDomainImpl.java b/src/main/java/com/ruoyi/task/domain/impl/TaskPlanDomainImpl.java index 6eca2f2..beb7ba8 100644 --- a/src/main/java/com/ruoyi/task/domain/impl/TaskPlanDomainImpl.java +++ b/src/main/java/com/ruoyi/task/domain/impl/TaskPlanDomainImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.task.domain.impl; +import com.ruoyi.task.api.enums.ExecuteTypeEnum; import com.ruoyi.task.api.enums.PlanTypeEnum; import com.ruoyi.task.domain.api.ITaskPlanDomain; import com.ruoyi.task.domain.convert.TaskPlanConvert; @@ -10,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -50,6 +52,9 @@ public class TaskPlanDomainImpl implements ITaskPlanDomain { @Override public TaskPlan updateTaskPlan(TaskPlan taskPlan) { + + + // 转换为实体 TaskPlanEntity entity = TaskPlanConvert.toEntity(taskPlan); // 更新数据库 diff --git a/src/main/java/com/ruoyi/task/service/api/ITaskPlanService.java b/src/main/java/com/ruoyi/task/service/api/ITaskPlanService.java index a227d53..fbbcea4 100644 --- a/src/main/java/com/ruoyi/task/service/api/ITaskPlanService.java +++ b/src/main/java/com/ruoyi/task/service/api/ITaskPlanService.java @@ -12,14 +12,14 @@ public interface ITaskPlanService { * @param taskPlanDTO 任务计划DTO * @return 任务计划ID */ - Long createTimedTaskPlan(TaskPlanDTO taskPlanDTO); + Long createTimedTaskPlan(TaskPlanDTO taskPlanDTO,boolean create); /** * 创建周期任务计划 * @param taskPlanDTO 任务计划DTO * @return 任务计划ID */ - Long createCycleTaskPlan(TaskPlanDTO taskPlanDTO); + Long createCycleTaskPlan(TaskPlanDTO taskPlanDTO,boolean create); /** * 根据ID获取任务计划 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 c90f19e..54408b7 100644 --- a/src/main/java/com/ruoyi/task/service/impl/TaskPlanServiceImpl.java +++ b/src/main/java/com/ruoyi/task/service/impl/TaskPlanServiceImpl.java @@ -25,7 +25,7 @@ public class TaskPlanServiceImpl implements ITaskPlanService { private ITaskDomain taskDomain; @Override - public Long createTimedTaskPlan(TaskPlanDTO taskPlanDTO) { + public Long createTimedTaskPlan(TaskPlanDTO taskPlanDTO,boolean create) { TaskPlan taskPlan = TaskPlanDTOConvert.toDomain(taskPlanDTO); // 校验PlanTypeEnum @@ -44,16 +44,22 @@ public class TaskPlanServiceImpl implements ITaskPlanService { taskPlan.setEndDate(taskPlan.getExecuteTime()); } + if(create){ + TaskPlan result = taskPlanDomain.createTimedTaskPlan(taskPlan); + // 创建对应的任务记录 + createTaskFromPlan(result); + return result.getId(); + }else { + taskPlanDomain.updateTaskPlan(taskPlan); + createTaskFromPlan(taskPlan); + return taskPlan.getId(); + } + - TaskPlan result = taskPlanDomain.createTimedTaskPlan(taskPlan); - - // 创建对应的任务记录 - createTaskFromPlan(result); - return result.getId(); } @Override - public Long createCycleTaskPlan(TaskPlanDTO taskPlanDTO) { + public Long createCycleTaskPlan(TaskPlanDTO taskPlanDTO,boolean create) { TaskPlan taskPlan = TaskPlanDTOConvert.toDomain(taskPlanDTO); // 校验PlanTypeEnum @@ -65,13 +71,19 @@ public class TaskPlanServiceImpl implements ITaskPlanService { if (taskPlan.getPlanType() == null) { taskPlan.setPlanType(PlanTypeEnum.CYCLE); } - - TaskPlan result = taskPlanDomain.createCycleTaskPlan(taskPlan); - - // 创建对应的任务记录 - createTaskFromPlan(result); - - return result.getId(); + + + if(create){ + TaskPlan result = taskPlanDomain.createCycleTaskPlan(taskPlan); + // 创建对应的任务记录 + createTaskFromPlan(result); + return result.getId(); + }else { + taskPlanDomain.updateTaskPlan(taskPlan); + createTaskFromPlan(taskPlan); + return taskPlan.getId(); + } + } /** @@ -264,8 +276,31 @@ public class TaskPlanServiceImpl implements ITaskPlanService { @Override public boolean updateTaskPlan(TaskPlanDTO taskPlanDTO) { - TaskPlan taskPlan = TaskPlanDTOConvert.toDomain(taskPlanDTO); - TaskPlan result = taskPlanDomain.updateTaskPlan(taskPlan); + // 先查询原始数据 + TaskPlan existingTaskPlan = taskPlanDomain.getTaskPlanById(taskPlanDTO.getId()); + if (existingTaskPlan == null) { + throw new IllegalArgumentException("任务计划不存在"); + } + + // 将传入的非空字段覆盖到原始数据 + TaskPlan updateTaskPlan = TaskPlanDTOConvert.toDomain(taskPlanDTO); + if (updateTaskPlan.getPlanName() != null) existingTaskPlan.setPlanName(updateTaskPlan.getPlanName()); + if (updateTaskPlan.getPlanType() != null) existingTaskPlan.setPlanType(updateTaskPlan.getPlanType()); + if (updateTaskPlan.getCycleType() != null) existingTaskPlan.setCycleType(updateTaskPlan.getCycleType()); + if (updateTaskPlan.getCycleValue() != null) existingTaskPlan.setCycleValue(updateTaskPlan.getCycleValue()); + if (updateTaskPlan.getExecuteType() != null) existingTaskPlan.setExecuteType(updateTaskPlan.getExecuteType()); + if (updateTaskPlan.getExecuteTime() != null) existingTaskPlan.setExecuteTime(updateTaskPlan.getExecuteTime()); + if (updateTaskPlan.getDuration() != null) existingTaskPlan.setDuration(updateTaskPlan.getDuration()); + if (updateTaskPlan.getStartDate() != null) existingTaskPlan.setStartDate(updateTaskPlan.getStartDate()); + if (updateTaskPlan.getEndDate() != null) existingTaskPlan.setEndDate(updateTaskPlan.getEndDate()); + if (updateTaskPlan.getRouteId() != null) existingTaskPlan.setRouteId(updateTaskPlan.getRouteId()); + if (updateTaskPlan.getUavId() != null) existingTaskPlan.setUavId(updateTaskPlan.getUavId()); + if (updateTaskPlan.getStatus() != null) existingTaskPlan.setStatus(updateTaskPlan.getStatus()); + if (updateTaskPlan.getDescription() != null) existingTaskPlan.setDescription(updateTaskPlan.getDescription()); + if (updateTaskPlan.getRouteUrl() != null) existingTaskPlan.setRouteUrl(updateTaskPlan.getRouteUrl()); + if (updateTaskPlan.getRemark() != null) existingTaskPlan.setRemark(updateTaskPlan.getRemark()); + + TaskPlan result = taskPlanDomain.updateTaskPlan(existingTaskPlan); if (result != null) { // 先删除该计划下的所有未执行任务 @@ -275,16 +310,10 @@ public class TaskPlanServiceImpl implements ITaskPlanService { taskDomain.deleteTask(task.getId()); } } - - if(Objects.equals(taskPlan.getPlanType(),PlanTypeEnum.TIMED)){ - createTimedTaskPlan(taskPlanDTO); - }else { - createCycleTaskPlan(taskPlanDTO); - } - - } + createTaskFromPlan(existingTaskPlan); + return result != null; }