Browse Source

更新库存

master
常熟吴彦祖 1 month ago
parent
commit
f87a8f77c4
  1. 13
      src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java
  2. 74
      src/main/java/com/gaotao/modules/warehouse/service/impl/HandlingUnitSpecialServiceImpl.java

13
src/main/java/com/gaotao/modules/api/service/impl/WmsMessageServiceImpl.java

@ -1557,6 +1557,7 @@ public class WmsMessageServiceImpl implements WmsMessageService {
// 记录IFS调用成功和失败的标签 - rqrq
List<HandlingUnit> ifsSuccessHUs = new ArrayList<>();
List<String> ifsFailedUnitIds = new ArrayList<>();
String firstErrorReason = null; // 记录第一个失败原因 - rqrq
// 遍历每个分组调用IFS接口 - rqrq
for (Map.Entry<String, List<HandlingUnit>> 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("个标签");
}

74
src/main/java/com/gaotao/modules/warehouse/service/impl/HandlingUnitSpecialServiceImpl.java

@ -365,6 +365,34 @@ public class HandlingUnitSpecialServiceImpl extends ServiceImpl<HandlingUnitSpec
return result;
}
/**
* @Description 从处理结果中提取错误原因 - rqrq
* 格式...错误原因xxx...
* @param processResult 处理结果字符串
* @return 错误原因如果没有则返回默认值
* @author rqrq
* @date 2025/12/03
*/
private String extractErrorReason(String processResult) {
String defaultReason = "IFS修改WDR失败";
if (processResult == null) {
return defaultReason;
}
int startIdx = processResult.indexOf("【错误原因:");
if (startIdx < 0) {
return defaultReason;
}
int endIdx = processResult.indexOf("】", startIdx);
if (endIdx < 0) {
return defaultReason;
}
String reason = processResult.substring(startIdx + 6, endIdx);
return StringUtils.hasText(reason) ? reason : defaultReason;
}
/**
* @Description 将日期格式从 yyyy-MM-dd 转换为 MM/dd/yyyyIFS格式- rqrq
* @param dateStr 日期字符串yyyy-MM-dd格式
@ -467,17 +495,26 @@ public class HandlingUnitSpecialServiceImpl extends ServiceImpl<HandlingUnitSpec
result.setFailedUnitIds(new ArrayList<>());
result.setFailedReasons(new ArrayList<>());
} else if (processResult.contains("所有标签IFS修改WDR失败")) {
// 全部失败的情况格式所有标签IFS修改WDR失败xxx, xxx- rqrq
// 全部失败的情况格式所有标签IFS修改WDR失败xxx, xxx错误原因xxx- rqrq
List<String> failedUnitIds = new ArrayList<>();
List<String> 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<HandlingUnitSpec
result.setFailedUnitIds(failedUnitIds);
result.setFailedReasons(failedReasons);
log.warn("全部标签IFS修改WDR失败 - rqrq,失败列表:{}", failedUnitIds);
log.warn("全部标签IFS修改WDR失败 - rqrq,失败列表:{},错误原因:{}", failedUnitIds, errorReason);
} else if (processResult.contains("IFS修改WDR失败")) {
// 部分失败的情况格式以下标签IFS修改WDR失败xxx, xxx成功处理X个标签- rqrq
// 部分失败的情况格式以下标签IFS修改WDR失败xxx, xxx错误原因xxx成功处理X个标签- rqrq
List<String> failedUnitIds = new ArrayList<>();
List<String> 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<HandlingUnitSpec
result.setFailedUnitIds(failedUnitIds);
result.setFailedReasons(failedReasons);
log.warn("部分标签IFS修改WDR失败 - rqrq,失败列表:{}", failedUnitIds);
log.warn("部分标签IFS修改WDR失败 - rqrq,失败列表:{},错误原因:{}", failedUnitIds, errorReason);
} else {
// 未知情况按全部失败处理 - rqrq
List<String> failedUnitIds = new ArrayList<>();

Loading…
Cancel
Save