From f87a8f77c437bcdcf47d117db2f7892a16a87e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Wed, 3 Dec 2025 10:31:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BA=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WmsMessageServiceImpl.java | 13 ++++ .../impl/HandlingUnitSpecialServiceImpl.java | 74 ++++++++++++++++--- 2 files changed, 77 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java b/src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java index 94740a3..2101076 100644 --- a/src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java +++ b/src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java @@ -1557,6 +1557,7 @@ public class WmsMessageServiceImpl implements WmsMessageService { // 记录IFS调用成功和失败的标签 - rqrq List ifsSuccessHUs = new ArrayList<>(); List ifsFailedUnitIds = new ArrayList<>(); + String firstErrorReason = null; // 记录第一个失败原因 - rqrq // 遍历每个分组调用IFS接口 - rqrq for (Map.Entry> entry : ifsGroupedHUs.entrySet()) { @@ -1601,6 +1602,10 @@ public class WmsMessageServiceImpl implements WmsMessageService { log.error("IFS修改WDR失败 - rqrq,partNo={},batchNo={},locationId={},fromWdr={},toWdr={},错误类型={},错误信息:{}", firstHU.getPartNo(), firstHU.getBatchNo(), firstHU.getLocationId(), fromWdr, toWdr, e.getClass().getSimpleName(), e.getMessage()); + // 记录第一个失败原因 - rqrq + if (firstErrorReason == null) { + firstErrorReason = e.getMessage(); + } for (HandlingUnit hu : groupHUs) { ifsFailedUnitIds.add(hu.getUnitId()); log.warn("标签{}加入失败列表 - rqrq", hu.getUnitId()); @@ -1614,7 +1619,11 @@ public class WmsMessageServiceImpl implements WmsMessageService { // 如果没有成功的标签,直接返回 - rqrq if (ifsSuccessHUs.isEmpty()) { + // 格式:所有标签IFS修改WDR失败:xxx, xxx【错误原因:xxx】 - rqrq String failedMsg = "所有标签IFS修改WDR失败:" + String.join(", ", ifsFailedUnitIds); + if (firstErrorReason != null) { + failedMsg += "【错误原因:" + firstErrorReason + "】"; + } log.warn(failedMsg + " - rqrq"); return failedMsg; } @@ -1719,7 +1728,11 @@ public class WmsMessageServiceImpl implements WmsMessageService { if (ifsFailedUnitIds.isEmpty()) { result.append("WDR修改全部完成,共处理").append(ifsSuccessHUs.size()).append("个标签"); } else { + // 格式:以下标签IFS修改WDR失败:xxx, xxx【错误原因:xxx】;成功处理X个标签 - rqrq result.append("以下标签IFS修改WDR失败:").append(String.join(", ", ifsFailedUnitIds)); + if (firstErrorReason != null) { + result.append("【错误原因:").append(firstErrorReason).append("】"); + } result.append(";成功处理").append(ifsSuccessHUs.size()).append("个标签"); } diff --git a/src/main/java/com/gaotao/modules/warehouse/service/impl/HandlingUnitSpecialServiceImpl.java b/src/main/java/com/gaotao/modules/warehouse/service/impl/HandlingUnitSpecialServiceImpl.java index 97621c2..f45f92c 100644 --- a/src/main/java/com/gaotao/modules/warehouse/service/impl/HandlingUnitSpecialServiceImpl.java +++ b/src/main/java/com/gaotao/modules/warehouse/service/impl/HandlingUnitSpecialServiceImpl.java @@ -365,6 +365,34 @@ public class HandlingUnitSpecialServiceImpl extends ServiceImpl()); result.setFailedReasons(new ArrayList<>()); } else if (processResult.contains("所有标签IFS修改WDR失败")) { - // 全部失败的情况(格式:所有标签IFS修改WDR失败:xxx, xxx)- rqrq + // 全部失败的情况(格式:所有标签IFS修改WDR失败:xxx, xxx【错误原因:xxx】)- rqrq List failedUnitIds = new ArrayList<>(); List failedReasons = new ArrayList<>(); + // 提取错误原因 - rqrq + String errorReason = extractErrorReason(processResult); + int startIdx = processResult.indexOf(":"); + int endIdx = processResult.indexOf("【"); if (startIdx > 0) { - String failedPart = processResult.substring(startIdx + 1); + String failedPart = endIdx > startIdx ? + processResult.substring(startIdx + 1, endIdx) : + processResult.substring(startIdx + 1); String[] failedIds = failedPart.split(", "); for (String id : failedIds) { - failedUnitIds.add(id.trim()); - failedReasons.add("IFS修改WDR失败"); + String trimmedId = id.trim(); + if (!trimmedId.isEmpty()) { + failedUnitIds.add(trimmedId); + failedReasons.add(errorReason); + } } } @@ -486,20 +523,37 @@ public class HandlingUnitSpecialServiceImpl extends ServiceImpl failedUnitIds = new ArrayList<>(); List failedReasons = new ArrayList<>(); + // 提取错误原因 - rqrq + String errorReason = extractErrorReason(processResult); + int startIdx = processResult.indexOf(":"); - int endIdx = processResult.indexOf(";"); + // 找到【或;的位置,取较小者 - rqrq + int endIdx1 = processResult.indexOf("【"); + int endIdx2 = processResult.indexOf(";"); + int endIdx = -1; + if (endIdx1 > 0 && endIdx2 > 0) { + endIdx = Math.min(endIdx1, endIdx2); + } else if (endIdx1 > 0) { + endIdx = endIdx1; + } else if (endIdx2 > 0) { + endIdx = endIdx2; + } + if (startIdx > 0 && endIdx > startIdx) { String failedPart = processResult.substring(startIdx + 1, endIdx); String[] failedIds = failedPart.split(", "); for (String id : failedIds) { - failedUnitIds.add(id.trim()); - failedReasons.add("IFS修改WDR失败"); + String trimmedId = id.trim(); + if (!trimmedId.isEmpty()) { + failedUnitIds.add(trimmedId); + failedReasons.add(errorReason); + } } } @@ -508,7 +562,7 @@ public class HandlingUnitSpecialServiceImpl extends ServiceImpl failedUnitIds = new ArrayList<>();