From 0c2bb6236abf11a654a9c99d2c9cdba2fee5b227 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期五, 08 五月 2026 12:19:26 +0800
Subject: [PATCH] 重发优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CloudWmsNotifyLogServiceImpl.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java | 23 +++++++++++
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/CloudWmsReportServiceImpl.java | 56 +++++++++++++++++++++------
3 files changed, 66 insertions(+), 15 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/CloudWmsReportServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/CloudWmsReportServiceImpl.java
index fa6f91e..17116cf 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/CloudWmsReportServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/CloudWmsReportServiceImpl.java
@@ -12,6 +12,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -31,6 +32,11 @@
private static final String DEFAULT_CLOUD_ORG_NO = "1";
/** 浜戜粨鍥為锛氶�氱煡鍗� inWarehouseNo / outWarehouseNo 涓虹┖鏃剁殑榛樿浠撶紪鐮� */
private static final String DEFAULT_CLOUD_WH_NO = "101";
+ /** 涓� CloudWmsErpFeignClient.stockTransferCompleted 璺緞涓�鑷� */
+ private static final String PATH_STOCK_TRANSFER_COMPLETED = "/dapilc/restful/service/ilcwmsplus/ICusStockService/stockTransferCompleted";
+
+ @Value("${platform.erp.base-url:http://127.0.0.1:8080}")
+ private String cloudWmsErpBaseUrl;
@Autowired
private RemotesInfoProperties erpApi;
@@ -58,10 +64,14 @@
log.warn("ErpApi(浜戜粨WMS) 鏈厤缃� host/base-url锛岃烦杩� 9.1 鍏�/鍑哄簱缁撴灉涓婃姤锛岃鍗曪細{}", param.getOrderNo());
return stubWithoutUpstream("浜戜粨鍦板潃鏈厤缃紝鏈疄闄呬笂鎶�");
}
- boolean inbound = param.getInbound() == null || Boolean.TRUE.equals(param.getInbound());
+ if (param.getInbound() == null) {
+ return resultMap(400, "inbound 涓嶈兘涓虹┖", null);
+ }
+ boolean inbound = param.getInbound();
DapIlcwmsCompletionRequest req = new DapIlcwmsCompletionRequest()
.setData(Collections.singletonList(buildInOutLine(param, inbound)));
- logOutboundPayload("IN_OUT_RESULT", inbound ? "stockInCompleted" : "stockOutCompleted", req);
+ String path = inbound ? erpApi.getApi().getStockInCompletedPath() : erpApi.getApi().getStockOutCompletedPath();
+ logOutboundPayload("IN_OUT_RESULT", inbound ? "stockInCompleted" : "stockOutCompleted", buildCloudWmsUrl(path), req);
Map<String, Object> raw = inbound
? cloudWmsErpFeignClient.cusInventoryCompletionReport(req)
: cloudWmsErpFeignClient.cusOutboundCompletionReport(req);
@@ -77,11 +87,15 @@
log.warn("ErpApi(浜戜粨WMS) 鏈厤缃� host/base-url锛岃烦杩� 9.1 鍏ュ嚭搴撳悎骞朵笂鎶�");
return stubWithoutUpstream("浜戜粨鍦板潃鏈厤缃紝鏈疄闄呬笂鎶�");
}
- InOutResultReportParam first = lines.get(0);
- boolean inbound = first.getInbound() == null || Boolean.TRUE.equals(first.getInbound());
for (InOutResultReportParam param : lines) {
- boolean rowIn = param.getInbound() == null || Boolean.TRUE.equals(param.getInbound());
- if (rowIn != inbound) {
+ if (param.getInbound() == null) {
+ return resultMap(400, "inbound 涓嶈兘涓虹┖", null);
+ }
+ }
+ InOutResultReportParam first = lines.get(0);
+ boolean inbound = first.getInbound();
+ for (InOutResultReportParam param : lines) {
+ if (param.getInbound() != inbound) {
return resultMap(400, "鍚堝苟涓婃姤椤诲悓涓哄叆搴撴垨鍚屼负鍑哄簱", null);
}
}
@@ -90,7 +104,8 @@
data.add(buildInOutLine(param, inbound));
}
DapIlcwmsCompletionRequest req = new DapIlcwmsCompletionRequest().setData(data);
- logOutboundPayload("IN_OUT_RESULT_BATCH", inbound ? "stockInCompleted" : "stockOutCompleted", req);
+ String path = inbound ? erpApi.getApi().getStockInCompletedPath() : erpApi.getApi().getStockOutCompletedPath();
+ logOutboundPayload("IN_OUT_RESULT_BATCH", inbound ? "stockInCompleted" : "stockOutCompleted", buildCloudWmsUrl(path), req);
Map<String, Object> raw = inbound
? cloudWmsErpFeignClient.cusInventoryCompletionReport(req)
: cloudWmsErpFeignClient.cusOutboundCompletionReport(req);
@@ -124,7 +139,8 @@
} else {
return resultMap(400, "涓嶆敮鎸佺殑 changeType锛�" + changeType, null);
}
- logOutboundPayload("INVENTORY_ADJUST", changeType == 3 ? "stockTransferCompleted" : "reportInventoryAdjust", req);
+ String adjPath = changeType == 3 ? PATH_STOCK_TRANSFER_COMPLETED : erpApi.getApi().getInventoryAdjustPath();
+ logOutboundPayload("INVENTORY_ADJUST", changeType == 3 ? "stockTransferCompleted" : "reportInventoryAdjust", buildCloudWmsUrl(adjPath), req);
Map<String, Object> raw = changeType == 3
? cloudWmsErpFeignClient.stockTransferCompleted(req)
: cloudWmsErpFeignClient.reportInventoryAdjust(req);
@@ -309,13 +325,27 @@
return map;
}
- private void logOutboundPayload(String reportType, String endpoint, DapIlcwmsCompletionRequest req) {
+ private String buildCloudWmsUrl(String path) {
+ String root = cloudWmsErpBaseUrl != null ? cloudWmsErpBaseUrl.trim() : "";
+ if (root.endsWith("/")) {
+ root = root.substring(0, root.length() - 1);
+ }
+ if (StringUtils.isBlank(path)) {
+ return root;
+ }
+ if (!path.startsWith("/")) {
+ path = "/" + path;
+ }
+ return root + path;
+ }
+
+ private void logOutboundPayload(String reportType, String endpoint, String requestUrl, DapIlcwmsCompletionRequest req) {
try {
- log.info("浜戜粨鐪熷疄璇锋眰鎶ユ枃锛宺eportType={}锛宔ndpoint={}锛宲ayload={}",
- reportType, endpoint, objectMapper.writeValueAsString(req));
+ log.info("浜戜粨鐪熷疄璇锋眰鎶ユ枃锛宺eportType={}锛宔ndpoint={}锛寀rl={}锛宲ayload={}",
+ reportType, endpoint, requestUrl, objectMapper.writeValueAsString(req));
} catch (Exception e) {
- log.warn("浜戜粨鐪熷疄璇锋眰鎶ユ枃搴忓垪鍖栧け璐ワ紝reportType={}锛宔ndpoint={}锛歿}",
- reportType, endpoint, e.getMessage());
+ log.warn("浜戜粨鐪熷疄璇锋眰鎶ユ枃搴忓垪鍖栧け璐ワ紝reportType={}锛宔ndpoint={}锛寀rl={}锛歿}",
+ reportType, endpoint, requestUrl, e.getMessage());
}
}
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java
index 875b320..ce8ec98 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java
@@ -249,7 +249,11 @@
List<InOutResultReportParam> lines = new ArrayList<>();
try {
for (CloudWmsNotifyLog row : group) {
- lines.addAll(cloudWmsNotifyLogService.parseInOutLinesFromRequestBody(row.getRequestBody()));
+ List<InOutResultReportParam> sub = cloudWmsNotifyLogService.parseInOutLinesFromRequestBody(row.getRequestBody());
+ for (InOutResultReportParam line : sub) {
+ applyInboundFromNotifyLogRow(row, line);
+ }
+ lines.addAll(sub);
}
} catch (IOException e) {
String msg = "鍙嶅簭鍒楀寲澶辫触: " + e.getMessage();
@@ -292,6 +296,17 @@
int nextRetry = (row.getRetryCount() == null ? 0 : row.getRetryCount()) + 1;
setFailResult(row, mergedBody, "璇锋眰寮傚父: " + e.getMessage(), nextRetry, now, row.getMaxRetryCount());
}
+ }
+ }
+
+ /** 浠ヨ〃瀛楁 inbound_flag 涓哄噯锛岄伩鍏� request_body 涓庤惤搴撲笉涓�鑷存椂璇皟 stockInCompleted */
+ private static void applyInboundFromNotifyLogRow(CloudWmsNotifyLog row, InOutResultReportParam param) {
+ if (row == null || param == null) {
+ return;
+ }
+ Integer flag = row.getInboundFlag();
+ if (flag != null) {
+ param.setInbound(flag == 1);
}
}
@@ -346,9 +361,15 @@
Map<String, Object> res;
if (root.has("lines") && root.get("lines").isArray()) {
InOutResultBatchPayload batch = objectMapper.readValue(requestBody, InOutResultBatchPayload.class);
+ if (batch.getLines() != null) {
+ for (InOutResultReportParam line : batch.getLines()) {
+ applyInboundFromNotifyLogRow(logRecord, line);
+ }
+ }
res = cloudWmsReportService.reportInOutResults(batch.getLines());
} else {
InOutResultReportParam param = objectMapper.readValue(requestBody, InOutResultReportParam.class);
+ applyInboundFromNotifyLogRow(logRecord, param);
res = cloudWmsReportService.reportInOutResult(param);
}
updateAfterNotify(logRecord, requestBody, res, nextRetry, now, effectiveMaxRetry);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CloudWmsNotifyLogServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CloudWmsNotifyLogServiceImpl.java
index 7f4e5a7..d70ef81 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CloudWmsNotifyLogServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CloudWmsNotifyLogServiceImpl.java
@@ -306,7 +306,7 @@
return null;
}
String wh = textNode(first, "wareHouseId");
- boolean inbound = !first.has("inbound") || first.get("inbound").isNull() || first.get("inbound").asBoolean();
+ boolean inbound = first.has("inbound") && !first.get("inbound").isNull() && first.get("inbound").asBoolean();
return orderNo + "\t" + inbound + "\t" + StringUtils.defaultString(wh);
} catch (Exception e) {
return null;
--
Gitblit v1.9.1