From e14672c2f0fd1190262e16b2de3fcb1b22b0b77c Mon Sep 17 00:00:00 2001 From: liweidong-hj Date: Tue, 19 May 2026 16:02:33 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E6=B5=81=E4=BB=BB=E5=8A=A1=E5=85=B3?= =?UTF-8?q?=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OrderBoxController.java | 11 +++++++ .../desk/logistics/service/ITaskService.java | 7 +++++ .../service/impl/TaskServiceImpl.java | 31 +++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java index de7dcc1a4..36d51187a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java @@ -172,5 +172,16 @@ public class OrderBoxController extends BladeController { } + @PostMapping("/task-closed") + @ApiOperationSupport(order = 11) + @Operation( + summary = "详情", + description = "显示任务对应的物料和执行记录" + ) + public R taskClosed(@RequestBody TaskDetailsDto taskDetailsDto) { + return R.data(taskService.taskClosed(taskDetailsDto)); + } + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskService.java index 1f4c3780e..0fa92dfd2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskService.java @@ -67,4 +67,11 @@ public interface ITaskService extends BaseService { * @return */ TaskDetailsVO taskDetails(TaskDetailsDto taskDetailsDto); + + /** + * 任务关闭 + * @param taskDetailsDto + * @return + */ + boolean taskClosed(TaskDetailsDto taskDetailsDto); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskServiceImpl.java index e7ddfbae1..412d424e5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskServiceImpl.java @@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import lombok.extern.slf4j.Slf4j; +import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.desk.basic.service.IWorkCenterService; @@ -94,6 +95,9 @@ public class TaskServiceImpl extends BaseServiceImpl implement @Autowired ILocationService locationService; + @Autowired + ITaskService taskService; + @Override public void savePipelineWeigh(String boxBarcode, BigDecimal actualWeight, Integer statusStart) { // 1.查询物料箱 筛选状态 @@ -230,6 +234,33 @@ public class TaskServiceImpl extends BaseServiceImpl implement return taskDetailsVO; } + @Override + public boolean taskClosed(TaskDetailsDto taskDetailsDto) { + // 1. 参数校验 + if (taskDetailsDto == null) { + throw new ServiceException("任务详情不能为空"); + } + if (taskDetailsDto.getTaskId() == null) { + throw new ServiceException("任务ID不能为空"); + } + + // 2. 查询任务 + Task task = taskService.getById(taskDetailsDto.getTaskId()); + if (task == null) { + throw new ServiceException("任务不存在, taskId: " + taskDetailsDto.getTaskId()); + } + + // 3. 状态校验 + if (Task.STATUS_FINISHED.equals(task.getTaskStatus()) + || Task.STATUS_FAILING.equals(task.getTaskStatus())) { + throw new ServiceException("任务状态为[结束]或[失败]无法关闭"); + } + + // 4. 关闭任务 + task.setTaskStatus(Task.STATUS_FINISHED); + return taskService.updateById(task); + } + /** * 格式化位置信息(提取公共逻辑) */