From a52149750f36b9ca93fd7ee2227a2c968e66ba1b Mon Sep 17 00:00:00 2001 From: Yxq <2290299376@qq.com> Date: Fri, 2 Jan 2026 16:23:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TaskControllerServiceImpl.java | 104 ++++++++++++++++-- 1 file changed, 97 insertions(+), 7 deletions(-) diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java index e59a1e1..73ab654 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java +++ b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java @@ -993,22 +993,48 @@ public class TaskControllerServiceImpl implements ITaskControllerService { @Override @Transactional(rollbackFor = Exception.class) public BaseWcsApiResponse sendTaskResult(WcsTaskResultRequest wcsTaskResultRequest) { + int maxRetries = 3; + int retryCount = 0; + + while (retryCount < maxRetries) { + try { + return performSendTaskResult(wcsTaskResultRequest); + } catch (Exception e) { + if (e.getMessage().contains("Deadlock found when trying to get lock") && retryCount < maxRetries - 1) { + retryCount++; + log.warn("死锁异常,正在进行第{}次重试,任务ID: {}", retryCount, wcsTaskResultRequest.getTaskId()); + try { + Thread.sleep(50L * retryCount); // 递增延迟 + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + throw new RuntimeException("重试过程被中断", ie); + } + continue; + } + throw e; + } + } + return BaseWcsApiResponse.error("处理任务状态反馈失败,已重试" + maxRetries + "次"); + } + + + private BaseWcsApiResponse performSendTaskResult(WcsTaskResultRequest wcsTaskResultRequest) { if (StringUtils.isEmpty(wcsTaskResultRequest.getTaskId()) || wcsTaskResultRequest.getTaskStatus() == null) { return BaseWcsApiResponse.error("请求缺少关键信息:任务号、任务状态。"); } + // 查询对应的wcs任务 - TAppWcsTask wcsTask = appWcsTaskService.getOne( - new LambdaQueryWrapper() - .eq(TAppWcsTask::getWcsTaskId, wcsTaskResultRequest.getTaskId()) - ); + TAppWcsTask wcsTask = appWcsTaskService.getById(wcsTaskResultRequest.getTaskId()); if (wcsTask == null) { return BaseWcsApiResponse.error("未找到对应的wcs任务。"); } + // 转换堆垛机任务状态 int wmsTaskStatus = ConvertUtils.convertWcsStackerTaskStatusToWmsTaskStatus(wcsTaskResultRequest.getTaskStatus()); if (wmsTaskStatus == -1) { return BaseWcsApiResponse.error("反馈的任务状态值无效。"); } + // 判断反馈的任务状态是否是「已完成」 if (Objects.equals(wcsTaskResultRequest.getTaskStatus(), WcsStackerTaskStatusEnums.FINISH.getCode())) { // 更新wms任务状态 @@ -1051,6 +1077,67 @@ public class TaskControllerServiceImpl implements ITaskControllerService { return BaseWcsApiResponse.success("处理任务状态反馈成功。"); } + + + +// @Override +// @Transactional(rollbackFor = Exception.class) +// public BaseWcsApiResponse sendTaskResult(WcsTaskResultRequest wcsTaskResultRequest) { +// if (StringUtils.isEmpty(wcsTaskResultRequest.getTaskId()) || wcsTaskResultRequest.getTaskStatus() == null) { +// return BaseWcsApiResponse.error("请求缺少关键信息:任务号、任务状态。"); +// } +// // 查询对应的wcs任务 +// TAppWcsTask wcsTask = appWcsTaskService.getById(wcsTaskResultRequest.getTaskId()); +// if (wcsTask == null) { +// return BaseWcsApiResponse.error("未找到对应的wcs任务。"); +// } +// // 转换堆垛机任务状态 +// int wmsTaskStatus = ConvertUtils.convertWcsStackerTaskStatusToWmsTaskStatus(wcsTaskResultRequest.getTaskStatus()); +// if (wmsTaskStatus == -1) { +// return BaseWcsApiResponse.error("反馈的任务状态值无效。"); +// } +// // 判断反馈的任务状态是否是「已完成」 +// if (Objects.equals(wcsTaskResultRequest.getTaskStatus(), WcsStackerTaskStatusEnums.FINISH.getCode())) { +// // 更新wms任务状态 +// appWmsTaskService.update( +// new LambdaUpdateWrapper() +// .set(TAppTask::getTaskStatus, WmsStackerTaskStatusEnums.FINISH.getCode()) +// .set(TAppTask::getFinishTime, LocalDateTime.now()) +// .eq(TAppTask::getWcsTaskId, wcsTaskResultRequest.getTaskId()) +// ); +// // 移除wcs任务,并向wcs备份表添加记录 +// TAppWcsTaskBak wcsTaskBak = new TAppWcsTaskBak( +// wcsTask.getWcsTaskId(), +// wcsTask.getWcsTaskStatus(), +// wcsTask.getWcsTaskType(), +// wcsTask.getTaskPriority(), +// wcsTask.getVehicleId(), +// wcsTask.getOrigin(), +// wcsTask.getDestination(), +// wcsTask.getCreateTime(), +// wcsTask.getSendTime(), +// wcsTask.getFinishTime(), +// wcsTask.getRemark() +// ); +// appWcsTaskService.removeById(wcsTask.getWcsTaskId()); +// appWcsTaskBakService.save(wcsTaskBak); +// } else { +// // 更新wms任务状态 +// appWmsTaskService.update( +// new LambdaUpdateWrapper() +// .set(TAppTask::getTaskStatus, wmsTaskStatus) +// .eq(TAppTask::getWcsTaskId, wcsTaskResultRequest.getTaskId()) +// ); +// // 更新wcs任务状态 +// appWcsTaskService.update( +// new LambdaUpdateWrapper() +// .set(TAppWcsTask::getWcsTaskStatus, wcsTaskResultRequest.getTaskStatus()) +// .eq(TAppWcsTask::getWcsTaskId, wcsTaskResultRequest.getTaskId()) +// ); +// } +// return BaseWcsApiResponse.success("处理任务状态反馈成功。"); +// } + /** * 实现 * 调用EWM系统获取入库具体信息 @@ -2354,6 +2441,9 @@ public class TaskControllerServiceImpl implements ITaskControllerService { if (inventoryConfirmRequest == null) { return BaseWmsApiResponse.error("请求信息为空。"); } + if (StringUtils.isEmpty(inventoryConfirmRequest.getInventoryId())) { + return BaseWmsApiResponse.error("请求信息缺少关键信息,请刷新后重试!"); + } if (StringUtils.isEmpty(inventoryConfirmRequest.getStandId())) { return BaseWmsApiResponse.error("请求信息缺少站台号。"); } @@ -2437,9 +2527,9 @@ public class TaskControllerServiceImpl implements ITaskControllerService { } } // 查询库存获得当前载具中存储的库存列表 - LambdaQueryWrapper stockQueryWrapper = new LambdaQueryWrapper() - .eq(TAppStock::getVehicleId, thisPickTask.getVehicleId()); - List stockList = appStockService.list(stockQueryWrapper); +// LambdaQueryWrapper stockQueryWrapper = new LambdaQueryWrapper() +// .eq(TAppStock::getVehicleId, thisPickTask.getVehicleId()); + //List stockList = appStockService.list(stockQueryWrapper); // // 界面直接点击确认/放行 // if (!stockList.isEmpty()) { // // 判断是否还有其他盘点任务