From e23efd75ca74df6b35a0c03b8e8fc0712c9d4544 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期五, 01 五月 2026 15:30:54 +0800
Subject: [PATCH] 多加入参数和修改规则
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/CloudWmsReportServiceImpl.java | 109 ++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 76 insertions(+), 33 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 8fd8bab..fa6f91e 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
@@ -8,6 +8,7 @@
import com.vincent.rsf.server.api.feign.CloudWmsErpFeignClient;
import com.vincent.rsf.server.api.integration.dap.DapIlcwmsResponseNormalizer;
import com.vincent.rsf.server.api.service.CloudWmsReportService;
+import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -26,17 +27,24 @@
@Service
public class CloudWmsReportServiceImpl implements CloudWmsReportService {
+ /** 浜戜粨鍥為锛氶�氱煡鍗� orgNo 涓虹┖鏃剁殑榛樿缁勭粐 */
+ private static final String DEFAULT_CLOUD_ORG_NO = "1";
+ /** 浜戜粨鍥為锛氶�氱煡鍗� inWarehouseNo / outWarehouseNo 涓虹┖鏃剁殑榛樿浠撶紪鐮� */
+ private static final String DEFAULT_CLOUD_WH_NO = "101";
+
@Autowired
private RemotesInfoProperties erpApi;
@Autowired
private CloudWmsErpFeignClient cloudWmsErpFeignClient;
+ @Autowired
+ private ObjectMapper objectMapper;
@Override
public Map<String, Object> syncMatnrsToCloud(Object body) {
if (!isCloudWmsConfigured()) {
- log.warn("ErpApi(浜戜粨WMS) 鏈厤缃� host锛岃烦杩囩墿鏂欏熀纭�淇℃伅鍚屾");
- return stubSuccess("浜戜粨鍦板潃鏈厤缃紝鏈疄闄呭悓姝�");
+ log.warn("ErpApi(浜戜粨WMS) 鏈厤缃� host/base-url锛岃烦杩囩墿鏂欏熀纭�淇℃伅鍚屾");
+ return stubWithoutUpstream("浜戜粨鍦板潃鏈厤缃紝鏈疄闄呭悓姝�");
}
return cloudWmsErpFeignClient.syncMatnrs(body != null ? body : new HashMap<>());
}
@@ -47,16 +55,42 @@
return resultMap(400, "鍙傛暟涓嶈兘涓虹┖", null);
}
if (!isCloudWmsConfigured()) {
- log.warn("ErpApi(浜戜粨WMS) 鏈厤缃� host锛岃烦杩� 9.1 鍏�/鍑哄簱缁撴灉涓婃姤锛岃鍗曪細{}", param.getOrderNo());
- return stubSuccess("浜戜粨鍦板潃鏈厤缃紝鏈疄闄呬笂鎶�");
- }
- String err = validateDapBase();
- if (err != null) {
- return resultMap(400, err, null);
+ log.warn("ErpApi(浜戜粨WMS) 鏈厤缃� host/base-url锛岃烦杩� 9.1 鍏�/鍑哄簱缁撴灉涓婃姤锛岃鍗曪細{}", param.getOrderNo());
+ return stubWithoutUpstream("浜戜粨鍦板潃鏈厤缃紝鏈疄闄呬笂鎶�");
}
boolean inbound = param.getInbound() == null || Boolean.TRUE.equals(param.getInbound());
DapIlcwmsCompletionRequest req = new DapIlcwmsCompletionRequest()
.setData(Collections.singletonList(buildInOutLine(param, inbound)));
+ logOutboundPayload("IN_OUT_RESULT", inbound ? "stockInCompleted" : "stockOutCompleted", req);
+ Map<String, Object> raw = inbound
+ ? cloudWmsErpFeignClient.cusInventoryCompletionReport(req)
+ : cloudWmsErpFeignClient.cusOutboundCompletionReport(req);
+ return DapIlcwmsResponseNormalizer.toNotifyFormat(raw);
+ }
+
+ @Override
+ public Map<String, Object> reportInOutResults(List<InOutResultReportParam> lines) {
+ if (lines == null || lines.isEmpty()) {
+ return resultMap(400, "鏄庣粏涓嶈兘涓虹┖", null);
+ }
+ if (!isCloudWmsConfigured()) {
+ 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) {
+ return resultMap(400, "鍚堝苟涓婃姤椤诲悓涓哄叆搴撴垨鍚屼负鍑哄簱", null);
+ }
+ }
+ List<DapIlcwmsCompletionLine> data = new ArrayList<>(lines.size());
+ for (InOutResultReportParam param : lines) {
+ data.add(buildInOutLine(param, inbound));
+ }
+ DapIlcwmsCompletionRequest req = new DapIlcwmsCompletionRequest().setData(data);
+ logOutboundPayload("IN_OUT_RESULT_BATCH", inbound ? "stockInCompleted" : "stockOutCompleted", req);
Map<String, Object> raw = inbound
? cloudWmsErpFeignClient.cusInventoryCompletionReport(req)
: cloudWmsErpFeignClient.cusOutboundCompletionReport(req);
@@ -69,12 +103,8 @@
return resultMap(400, "鍙傛暟涓嶈兘涓虹┖", null);
}
if (!isCloudWmsConfigured()) {
- log.warn("ErpApi(浜戜粨WMS) 鏈厤缃� host锛岃烦杩� 9.2 搴撳瓨璋冩暣涓婃姤锛岀墿鏂欙細{}", param.getMatNr());
- return stubSuccess("浜戜粨鍦板潃鏈厤缃紝鏈疄闄呬笂鎶�");
- }
- String err = validateDapBase();
- if (err != null) {
- return resultMap(400, err, null);
+ log.warn("ErpApi(浜戜粨WMS) 鏈厤缃� host/base-url锛岃烦杩� 9.2 搴撳瓨璋冩暣涓婃姤锛岀墿鏂欙細{}", param.getMatNr());
+ return stubWithoutUpstream("浜戜粨鍦板潃鏈厤缃紝鏈疄闄呬笂鎶�");
}
Integer changeType = param.getChangeType();
if (changeType == null) {
@@ -94,6 +124,7 @@
} else {
return resultMap(400, "涓嶆敮鎸佺殑 changeType锛�" + changeType, null);
}
+ logOutboundPayload("INVENTORY_ADJUST", changeType == 3 ? "stockTransferCompleted" : "reportInventoryAdjust", req);
Map<String, Object> raw = changeType == 3
? cloudWmsErpFeignClient.stockTransferCompleted(req)
: cloudWmsErpFeignClient.reportInventoryAdjust(req);
@@ -103,14 +134,18 @@
}
private DapIlcwmsCompletionLine buildInOutLine(InOutResultReportParam param, boolean inbound) {
- RemotesInfoProperties.Dap dap = erpApi.getDap();
CloudMatnrParts matnrParts = parseCloudMatnr(param.getMatNr());
String docType = StringUtils.isNotBlank(param.getWkType())
? param.getWkType()
: (inbound ? "IN" : "OUT");
- String unitNo = StringUtils.isNotBlank(param.getUnitNo()) ? param.getUnitNo() : "PCS";
+ String unitNo = StringUtils.isNotBlank(param.getUnitNo()) ? param.getUnitNo().trim() : "PCS";
+ String orgNoLine = StringUtils.isNotBlank(param.getOrgNo()) ? param.getOrgNo().trim() : DEFAULT_CLOUD_ORG_NO;
+ String docWh = StringUtils.trimToNull(param.getDocWarehouseNo());
+ String inWhLine = StringUtils.isNotBlank(param.getInWarehouseNo()) ? param.getInWarehouseNo().trim() : DEFAULT_CLOUD_WH_NO;
+ String outWhLine = StringUtils.isNotBlank(param.getOutWarehouseNo()) ? param.getOutWarehouseNo().trim() : DEFAULT_CLOUD_WH_NO;
DapIlcwmsCompletionLine line = new DapIlcwmsCompletionLine()
- .setOrgNo(dap.getOrgNo())
+ .setOrgNo(orgNoLine)
+ .setDocWarehouseNo(docWh)
.setDocType(docType)
.setDocNo(param.getOrderNo())
.setDocSeqNo(StringUtils.isNotBlank(param.getLineId()) ? param.getLineId() : "1")
@@ -121,9 +156,11 @@
.setCombinationLotNo(matnrParts.getCombinationLotNo())
.setBarcode(matnrParts.getBarcode());
if (inbound) {
- line.setInWarehouseNo(param.getWareHouseId()).setInCellNo(param.getLocId());
+ line.setInWarehouseNo(inWhLine).setInCellNo(inWhLine);
+ // line.setInWarehouseNo(inWhLine).setInCellNo(param.getLocId());
} else {
- line.setOutWarehouseNo(param.getWareHouseId()).setOutCellNo(param.getLocId());
+ line.setOutWarehouseNo(outWhLine).setOutCellNo(outWhLine);
+ // line.setOutWarehouseNo(outWhLine).setOutCellNo(param.getLocId());
}
return line;
}
@@ -134,7 +171,6 @@
* @param docSeqOverride 闈炵┖鏃剁敤浣滈」娆★紙绉诲簱绗簩琛岀瓑锛�
*/
private DapIlcwmsCompletionLine buildAdjustLine(InventoryAdjustReportParam param, boolean fillIn, boolean fillOut, String docSeqOverride) {
- RemotesInfoProperties.Dap dap = erpApi.getDap();
String docType = resolveAdjustDocType(param);
String docNo = StringUtils.isNotBlank(param.getDocNo()) ? param.getDocNo() : "ADJ";
String docSeq = docSeqOverride != null ? docSeqOverride
@@ -142,7 +178,7 @@
String unit = StringUtils.isNotBlank(param.getUnitNo()) ? param.getUnitNo() : "PCS";
CloudMatnrParts matnrParts = parseCloudMatnr(param.getMatNr());
DapIlcwmsCompletionLine line = new DapIlcwmsCompletionLine()
- .setOrgNo(dap.getOrgNo())
+ .setOrgNo(DEFAULT_CLOUD_ORG_NO)
.setDocType(docType)
.setDocNo(docNo)
.setDocSeqNo(docSeq)
@@ -249,23 +285,20 @@
}
}
- private String validateDapBase() {
- RemotesInfoProperties.Dap d = erpApi.getDap();
- if (d == null || StringUtils.isBlank(d.getOrgNo())) {
- return "鏈厤缃� platform.erp.dap.org-no";
- }
- return null;
- }
-
private boolean isCloudWmsConfigured() {
String host = erpApi.getHost();
- return host != null && !host.trim().isEmpty();
+ if (host != null && !host.trim().isEmpty()) {
+ return true;
+ }
+ String baseUrl = erpApi.getBaseUrl();
+ return baseUrl != null && !baseUrl.trim().isEmpty();
}
- private Map<String, Object> stubSuccess(String msg) {
+ /** 鏈蛋浜戜粨 HTTP锛宑ode 闈� 200锛岄伩鍏嶈皟搴﹁鍒ゆ垚鍔� */
+ private Map<String, Object> stubWithoutUpstream(String msg) {
Map<String, Object> data = new HashMap<>();
- data.put("result", "SUCCESS");
- return resultMap(200, msg, data);
+ data.put("result", "SKIPPED");
+ return resultMap(503, msg, data);
}
private Map<String, Object> resultMap(int code, String msg, Map<String, Object> data) {
@@ -275,4 +308,14 @@
map.put("data", data);
return map;
}
+
+ private void logOutboundPayload(String reportType, String endpoint, DapIlcwmsCompletionRequest req) {
+ try {
+ log.info("浜戜粨鐪熷疄璇锋眰鎶ユ枃锛宺eportType={}锛宔ndpoint={}锛宲ayload={}",
+ reportType, endpoint, objectMapper.writeValueAsString(req));
+ } catch (Exception e) {
+ log.warn("浜戜粨鐪熷疄璇锋眰鎶ユ枃搴忓垪鍖栧け璐ワ紝reportType={}锛宔ndpoint={}锛歿}",
+ reportType, endpoint, e.getMessage());
+ }
+ }
}
--
Gitblit v1.9.1