|
|
|
@ -44,32 +44,43 @@ public class PalletCancelServiceImpl implements PalletCancelService { |
|
|
|
String site = data.getSite(); |
|
|
|
String palletId = data.getPalletId(); |
|
|
|
|
|
|
|
System.out.println("开始取消WCS组盘 - rqrq,palletId=" + palletId); |
|
|
|
log.info("开始取消WCS组盘 - rqrq,palletId={}", palletId); |
|
|
|
|
|
|
|
// 检查栈板是否有AGV调度任务 - rqrq |
|
|
|
// ⚠️ 前置校验:检查栈板是否已呼叫AGV送入立库(wms_transport_task表)- rqrq |
|
|
|
WmsTransportTask unfinishedTask = wcsIntegrationMapper.getUnfinishedTransportTaskByPallet(site, palletId); |
|
|
|
if (unfinishedTask != null) { |
|
|
|
String taskNo = unfinishedTask.getTaskNo(); |
|
|
|
String status = unfinishedTask.getStatus(); |
|
|
|
log.warn("托盘已呼叫AGV送入立库,无法取消 - rqrq:palletId={}, taskNo={}, status={}", palletId, taskNo, status); |
|
|
|
throw new RuntimeException("该托盘已经呼叫AGV送入立库,无法取消托盘,请先取消AGV任务(任务号:" + taskNo + ",状态:" + status + ")"); |
|
|
|
} |
|
|
|
|
|
|
|
log.info("wms_transport_task表检查通过,无未完成任务 - rqrq"); |
|
|
|
|
|
|
|
// 检查栈板是否有AGV调度任务(这个是旧逻辑,保留兼容性)- rqrq |
|
|
|
WmsTransportTask transportTask = wcsIntegrationMapper.getActivePalletTransportTask(site, palletId); |
|
|
|
if (transportTask != null) { |
|
|
|
String taskStatus = transportTask.getStatus(); |
|
|
|
String taskNo = transportTask.getTaskNo(); |
|
|
|
System.out.println("栈板存在运输任务 - rqrq,taskNo=" + taskNo + ",status=" + taskStatus); |
|
|
|
log.info("栈板存在运输任务 - rqrq,taskNo={}, status={}", taskNo, taskStatus); |
|
|
|
|
|
|
|
if ("已下达".equals(taskStatus)) { |
|
|
|
// 任务已下达到AGV,不允许取消组盘 - rqrq |
|
|
|
System.out.println("任务已下达到AGV,无法取消组盘 - rqrq"); |
|
|
|
log.warn("任务已下达到AGV,无法取消组盘 - rqrq,taskNo={}", taskNo); |
|
|
|
throw new RuntimeException("已有AGV来提取,无法取消组盘"); |
|
|
|
} else if ("已预约".equals(taskStatus) || "已创建".equals(taskStatus)) { |
|
|
|
// 任务未下达到AGV,先取消AGV任务 - rqrq |
|
|
|
System.out.println("任务状态为" + taskStatus + ",先取消AGV任务 - rqrq"); |
|
|
|
log.info("任务状态为{},先取消AGV任务 - rqrq,taskNo={}", taskStatus, taskNo); |
|
|
|
try { |
|
|
|
agvTaskService.cancelAgvTask(site, taskNo); |
|
|
|
System.out.println("AGV任务取消成功 - rqrq"); |
|
|
|
log.info("AGV任务取消成功 - rqrq,taskNo={}", taskNo); |
|
|
|
} catch (Exception e) { |
|
|
|
System.out.println("AGV任务取消失败 - rqrq:" + e.getMessage()); |
|
|
|
log.error("AGV任务取消失败 - rqrq,taskNo={},error={}", taskNo, e.getMessage()); |
|
|
|
throw new RuntimeException("取消AGV任务失败:" + e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
System.out.println("栈板不存在运输任务,继续取消组盘 - rqrq"); |
|
|
|
log.info("栈板不存在运输任务,继续取消组盘 - rqrq"); |
|
|
|
} |
|
|
|
|
|
|
|
// 获取当前用户 - rqrq |
|
|
|
@ -77,11 +88,11 @@ public class PalletCancelServiceImpl implements PalletCancelService { |
|
|
|
|
|
|
|
// 1. 更新pallet_detail的wcs_flag=1 - rqrq |
|
|
|
wcsIntegrationMapper.updateAllPalletDetailWcsFlagToOne(site, palletId); |
|
|
|
System.out.println("已更新栈板明细wcs_flag为1 - rqrq"); |
|
|
|
log.info("已更新栈板明细wcs_flag为1 - rqrq,palletId={}", palletId); |
|
|
|
|
|
|
|
// 2. 更新pallet的calling_flag=N - rqrq |
|
|
|
wcsIntegrationMapper.updatePalletCallingFlag(site, palletId, "N", username); |
|
|
|
System.out.println("已更新栈板calling_flag为N - rqrq"); |
|
|
|
log.info("已更新栈板calling_flag为N - rqrq,palletId={}", palletId); |
|
|
|
|
|
|
|
// 3. 调用WCS API通知取消组盘 - rqrq |
|
|
|
SpecialPalletTask pushData = new SpecialPalletTask(); |
|
|
|
@ -90,7 +101,7 @@ public class PalletCancelServiceImpl implements PalletCancelService { |
|
|
|
pushData.setOperationType(1); |
|
|
|
wcsApiService.SpecialPalletTask(pushData); |
|
|
|
|
|
|
|
System.out.println("取消WCS组盘完成 - rqrq"); |
|
|
|
log.info("取消WCS组盘完成 - rqrq,palletId={}", palletId); |
|
|
|
} |
|
|
|
} |
|
|
|
|