From d4fc949106c9dc68b48e4e1941aaef3e8e283b33 Mon Sep 17 00:00:00 2001 From: liweidong-hj Date: Tue, 10 Mar 2026 11:35:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TaskExecuteRecordServiceImpl.java | 196 +++++++++++++----- 1 file changed, 148 insertions(+), 48 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java index 8752e271..6c7e90e0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java @@ -275,48 +275,104 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl 0; } + @Override public boolean containerToCtu(String taskCode) { + log.info("开始执行containerToCtu,taskCode:{}", taskCode); - TaskExecuteRecord taskExecuteRecord = taskExecuteRecordMapper.selectByTaskCode(taskCode); - if(null == taskExecuteRecord){ - log.error("未根据taskCode查询到有效数据,请求参数:{}", taskCode); - return false; - } + try { + // 1. 查询任务执行记录 + TaskExecuteRecord taskExecuteRecord = taskExecuteRecordMapper.selectByTaskCode(taskCode); + if(null == taskExecuteRecord){ + log.error("未根据taskCode查询到有效数据,请求参数:{}", taskCode); + return false; + } - Task task = taskService.getById(taskExecuteRecord.getTaskId()); - if(null == task){ - log.error("查询不到Task数据,请求参数:{}", taskExecuteRecord.getTaskId()); - return false; - } - if(null == task.getLocationId()){ - //证明不需要送到库位 - //更新task状态 根据taskCode查询 - task.setTaskStatus(Task.STATUS_FINISHED); - boolean taskUpdate = taskService.updateById(task); - if(!taskUpdate){ - log.error("Task状态修改失败"); + // 2. 查询任务 + Task task = taskService.getById(taskExecuteRecord.getTaskId()); + if(null == task){ + log.error("查询不到Task数据,请求参数:{}", taskExecuteRecord.getTaskId()); + return false; } - return true; - } - Location location = locationService.getById(task.getLocationId()); + // 3. 检查是否需要送到库位 + if(null == task.getLocationId()){ + log.info("任务{}不需要送到库位,直接完成", taskCode); + + // 直接更新任务状态为完成 + task.setTaskStatus(Task.STATUS_FINISHED); + boolean taskUpdate = taskService.updateById(task); + + if(taskUpdate){ + log.info("Task状态修改成功,taskCode:{}", taskCode); + return true; + } else { + log.error("Task状态修改失败,taskCode:{}", taskCode); + return false; + } + } - AgvSchedulingTaskVO ctuSchedulingTask = genCtuSchedulingTask - (AgvConstant.CTU_TASK_TYP, AgvConstant.CTU_CTNR_TYP, task.getBoxBarcode(), taskExecuteRecord.getEndPos(), location.getLocationCode(), AgvConstant.EQUIPMENT_TYPE_CTU); + // 4. 查询目标库位信息 + Location location = locationService.getById(task.getLocationId()); + if(null == location){ + log.error("根据locationId未查询到位置信息,locationId:{}", task.getLocationId()); + return false; + } + + // 5. 校验必要参数 + if(StringUtils.isEmpty(task.getBoxBarcode())){ + log.error("任务箱码为空,taskCode:{}", taskCode); + return false; + } + + if(StringUtils.isEmpty(taskExecuteRecord.getEndPos())){ + log.error("任务执行记录的终点位置为空,taskCode:{}", taskCode); + return false; + } + + // 6. 生成CTU调度任务 + AgvSchedulingTaskVO ctuSchedulingTask = genCtuSchedulingTask( + AgvConstant.CTU_TASK_TYP, + AgvConstant.CTU_CTNR_TYP, + task.getBoxBarcode(), + taskExecuteRecord.getEndPos(), + location.getLocationCode(), + AgvConstant.EQUIPMENT_TYPE_CTU + ); - if(null != ctuSchedulingTask){ + if(null == ctuSchedulingTask){ + log.error("生成CTU调度任务失败,taskCode:{}", taskCode); + return false; + } + + // 7. 添加入库记录 + boolean record = inboundRecord(ctuSchedulingTask, task); + if(!record){ + log.error("添加入库记录失败,taskCode:{}", taskCode); + return false; + } + + // 8. 所有操作成功后,更新任务状态 task.setTaskStatus(Task.STATUS_FINISHED); boolean taskUpdate = taskService.updateById(task); + if(!taskUpdate){ - log.error("Task状态修改失败"); + log.error("Task状态修改失败,但CTU调度已成功,taskCode:{}", taskCode); } - // 添加任务 - boolean record = inboundRecord(ctuSchedulingTask, task); + + log.info("CTU调度成功,taskCode:{},from:{},to:{}", + taskCode, taskExecuteRecord.getEndPos(), location.getLocationCode()); + + return true; + + } catch (Exception e) { + log.error("containerToCtu执行异常,taskCode:{}", taskCode, e); + return false; } - return true; } + + @Override public AgvSchedulingTaskVO genCtuSchedulingTask(String taskTyp, String ctnrTyp, String ctnrCode, String startPos, String endPos, String type) { @@ -391,49 +447,93 @@ public class TaskExecuteRecordServiceImpl extends BaseServiceImpl