diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java index b06d876..5b2b0c2 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/WcsIntegrationMapper.java @@ -845,6 +845,18 @@ public interface WcsIntegrationMapper { void updateTransportTaskSourceInfo(@Param("site") String site, @Param("palletId") String palletId, @Param("sourceBillNo") String sourceBillNo, @Param("sourceLineId") Integer sourceLineId); + /** + * @Description 根据任务编号更新运输任务的来源单据信息(优化版本)- rqrq + * @param taskNo 运输任务编号 + * @param sourceBillNo 来源单号 + * @param sourceLineId 来源行号 + * @author rqrq + * @date 2025/11/22 + */ + void updateTransportTaskSourceInfoByTaskNo(@Param("taskNo") String taskNo, + @Param("sourceBillNo") String sourceBillNo, + @Param("sourceLineId") Integer sourceLineId); + // ==================== 调度发货任务相关方法 - rqrq ==================== /** diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/AutoTaskService.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/AutoTaskService.java index e7b0a63..985cbcf 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/AutoTaskService.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/AutoTaskService.java @@ -8,10 +8,23 @@ import com.gaotao.modules.automatedWarehouse.entity.WmsTransportTask; * 自动化任务专用服务类 */ public interface AutoTaskService { - void autoNeedPalletTask(NeedPalletTask inData); + /** + * @Description 栈板万能预约任务 - rqrq + * @param inData 预约任务参数 + * @return 创建的运输任务编号 + * @author rqrq + */ + String autoNeedPalletTask(NeedPalletTask inData); + void processNeedPalletTask(WmsTransportTask wmsTransportTask); - void scheduleDeliveryTask(ScheduleDeliveryTask inData); + /** + * @Description 调度发货任务 - rqrq + * @param inData 发货任务参数 + * @return 创建的运输任务编号 + * @author rqrq + */ + String scheduleDeliveryTask(ScheduleDeliveryTask inData); /** * @Description 处理预约运输栈板任务 - rqrq diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoTaskServiceImpl.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoTaskServiceImpl.java index 30a96b6..a9d5d1e 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoTaskServiceImpl.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoTaskServiceImpl.java @@ -41,10 +41,15 @@ public class AutoTaskServiceImpl implements AutoTaskService { @Autowired private AgvTaskMapper agvTaskMapper; // 添加AgvTaskMapper注入 - rqrq - //栈板万能预约任务 + /** + * @Description 栈板万能预约任务 - rqrq + * @param inData 预约任务参数 + * @return 创建的运输任务编号 + * @author rqrq + */ @Override @Transactional - public void autoNeedPalletTask(NeedPalletTask inData){ + public String autoNeedPalletTask(NeedPalletTask inData){ if(inData==null){ throw new RuntimeException("参数验证失败:参数不能为空"); @@ -123,18 +128,23 @@ public class AutoTaskServiceImpl implements AutoTaskService { wcsIntegrationMapper.insertTransportTask(task); // wcsIntegrationMapper.insertWmsTransportTaskDetail(detail); + + // 返回创建的任务编号 - rqrq + System.out.println("创建预约取托盘任务成功 - rqrq,taskNo=" + task.getTaskNo()); + return task.getTaskNo(); } /** * @Description 调度发货任务 - rqrq * @Title scheduleDeliveryTask * @param inData 发货任务参数 + * @return 创建的运输任务编号 * @author rqrq * @date 2025/10/18 */ @Override @Transactional(rollbackFor = Exception.class) - public void scheduleDeliveryTask(ScheduleDeliveryTask inData){ + public String scheduleDeliveryTask(ScheduleDeliveryTask inData){ System.out.println("开始调度发货任务 - rqrq"); // 1. 参数校验 - rqrq @@ -147,15 +157,17 @@ public class AutoTaskServiceImpl implements AutoTaskService { String targetLocation = determineTargetLocation(inData); // 4. 判断是创建预约任务还是直接创建运输任务 - rqrq + String taskNo; if(targetLocation == null){ // 没有空闲点位,创建预约任务 - rqrq - createScheduledTask(inData); + taskNo = createScheduledTask(inData); } else { // 有空闲点位,直接创建运输任务 - rqrq - createImmediateTransportTask(inData, targetLocation); + taskNo = createImmediateTransportTask(inData, targetLocation); } - System.out.println("调度发货任务完成 - rqrq"); + System.out.println("调度发货任务完成 - rqrq,taskNo=" + taskNo); + return taskNo; } /** @@ -483,10 +495,11 @@ public class AutoTaskServiceImpl implements AutoTaskService { * @Description 创建预约任务 - rqrq * @Title createScheduledTask * @param inData 发货任务参数 + * @return 创建的任务编号 * @author rqrq * @date 2025/10/18 */ - private void createScheduledTask(ScheduleDeliveryTask inData){ + private String createScheduledTask(ScheduleDeliveryTask inData){ System.out.println("开始创建预约运输任务 - rqrq"); // 生成运输任务编号 - rqrq @@ -570,6 +583,7 @@ public class AutoTaskServiceImpl implements AutoTaskService { // 预约任务不创建明细记录 - rqrq System.out.println("预约运输任务创建完成 - rqrq,taskNo=" + task.getTaskNo()); + return task.getTaskNo(); } /** @@ -577,10 +591,11 @@ public class AutoTaskServiceImpl implements AutoTaskService { * @Title createImmediateTransportTask * @param inData 发货任务参数 * @param targetLocation 目标位置 + * @return 创建的任务编号 * @author rqrq * @date 2025/10/18 */ - private void createImmediateTransportTask(ScheduleDeliveryTask inData, String targetLocation){ + private String createImmediateTransportTask(ScheduleDeliveryTask inData, String targetLocation){ System.out.println("开始创建立即执行运输任务 - rqrq,targetLocation=" + targetLocation); // 生成运输任务编号 - rqrq @@ -636,6 +651,7 @@ public class AutoTaskServiceImpl implements AutoTaskService { wcsIntegrationMapper.insertWmsTransportTaskDetail(detail); System.out.println("立即执行运输任务创建完成 - rqrq,taskNo=" + task.getTaskNo()); + return task.getTaskNo(); } diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java index c48a306..995d020 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java @@ -2355,10 +2355,8 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService { needPalletTask.setStationCode(finalTargetStation); needPalletTask.setUsername(username); - autoTaskService.autoNeedPalletTask(needPalletTask); - System.out.println("预约取盘任务创建成功 - rqrq"); - - System.out.println("Call料到指定位置完成 - rqrq"); + String transportTaskNo = autoTaskService.autoNeedPalletTask(needPalletTask); + System.out.println("预约取盘任务创建成功 - rqrq,transportTaskNo=" + transportTaskNo); // 3. 第一步:执行原来的Call料方法(callPalletFromWcsNew)- rqrq System.out.println("开始执行Call料 - rqrq"); @@ -2389,30 +2387,30 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService { System.out.println("Call料成功 - rqrq"); - // 5. 第三步:查询Call料后生成的OrderTask,并更新TransportTask的来源单据信息 - rqrq + // 5. 第三步:查询Call料后生成的OrderTask,并更新TransportTask的来源单据信息(优化版本)- rqrq System.out.println("开始关联OrderTask和TransportTask - rqrq"); try { - // 查询最新的OrderTask(手工Call料生成的)- rqrq + // 查询最新的OrderTask(立库取货生成的,agvFlag='Y'时sourceType为'立库取货')- rqrq WmsOrderTask latestOrderTask = wcsIntegrationMapper.findLatestOrderTaskByPallet( site, palletId, - "手工Call料" + "立库取货" ); if (latestOrderTask != null) { - System.out.println("查询到OrderTask - rqrq,taskNo=" + latestOrderTask.getTaskNo() + + System.out.println("查询到OrderTask - rqrq,orderTaskNo=" + latestOrderTask.getTaskNo() + ", itemNo=" + latestOrderTask.getItemNo()); - // 更新TransportTask的source_bill_no和source_line_id - rqrq - wcsIntegrationMapper.updateTransportTaskSourceInfo( - site, - palletId, + // 【优化】直接使用返回的transportTaskNo更新,避免通过site+palletId查询 - rqrq + wcsIntegrationMapper.updateTransportTaskSourceInfoByTaskNo( + transportTaskNo, latestOrderTask.getTaskNo(), latestOrderTask.getItemNo() ); - System.out.println("已更新TransportTask的来源单据信息 - rqrq,sourceBillNo=" + - latestOrderTask.getTaskNo() + ", sourceLineId=" + latestOrderTask.getItemNo()); + System.out.println("已更新TransportTask的来源单据信息 - rqrq,transportTaskNo=" + transportTaskNo + + ", sourceBillNo=" + latestOrderTask.getTaskNo() + + ", sourceLineId=" + latestOrderTask.getItemNo()); } else { System.out.println("警告:未找到对应的OrderTask - rqrq"); } @@ -2421,7 +2419,7 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService { System.out.println("关联OrderTask和TransportTask失败 - rqrq:" + e.getMessage()); } - System.out.println("Call料到指定位置完成 - rqrq"); + System.out.println("Call料到指定位置完成 - rqrq,transportTaskNo=" + transportTaskNo); } diff --git a/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml b/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml index a7f7d58..bef113b 100644 --- a/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml +++ b/src/main/resources/mapper/automatedWarehouse/WcsIntegrationMapper.xml @@ -1571,6 +1571,15 @@ ORDER BY created_time DESC ) + + + + UPDATE wms_transport_task + SET source_bill_no = #{sourceBillNo}, + source_line_id = #{sourceLineId}, + updated_time = GETDATE() + WHERE task_no = #{taskNo} +