From 0d49292f712b2851105c69eed255f95cf2184187 Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期五, 17 四月 2026 10:25:23 +0800
Subject: [PATCH] lsh#

---
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/ErpReportServiceImpl.java |   62 ++++++++++++++++++++++++++++++-
 1 files changed, 60 insertions(+), 2 deletions(-)

diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/ErpReportServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/ErpReportServiceImpl.java
index 7c96629..dbe9b05 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/ErpReportServiceImpl.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/ErpReportServiceImpl.java
@@ -459,12 +459,19 @@
             return CommonResponse.error("鍥炰紶鏄庣粏涓虹┖");
         }
 
+        // 瀵瑰洖浼犳暟鎹仛鍙嶆槧灏勶紙WMS瀛楁鍚� 鈫� ERP瀛楁鍚嶏級
+        JSONObject mappedRoot = ParamsMapUtils.reverseApiMaps("erp", "orderId", root);
+        JSONArray mappedDataArray = pickArray(mappedRoot, "Data", "data");
+        if (Objects.isNull(mappedDataArray) || mappedDataArray.isEmpty()) {
+            mappedDataArray = dataArray;
+        }
+
         int allocateCount = 0;
         int erpReportCount = 0;
         List<String> errors = new ArrayList<>();
 
-        for (int i = 0; i < dataArray.size(); i++) {
-            JSONObject row = dataArray.getJSONObject(i);
+        for (int i = 0; i < mappedDataArray.size(); i++) {
+            JSONObject row = mappedDataArray.getJSONObject(i);
             String orderNo = pickString(row, "WMSNO", "wmsNo", "orderNo", "OrderNo");
             String matnrCode = pickString(row, "ItemCode", "itemCode", "matNr", "MatNr");
             String batch = pickString(row, "Batch", "batch", "GoodsNO", "goodsNo");
@@ -486,6 +493,21 @@
             }
         }
 
+        // 鍙嶆槧灏勫悗缁勮ReportParams锛屽弬鐓ф棫閾捐矾涓婃姤ERP
+        try {
+            ReportParams erpReportParams = buildReportParamsFromMappedData(mappedRoot, mappedDataArray);
+            CommonResponse erpResp = wmsErpService.reportOrders(erpReportParams);
+            if (Objects.nonNull(erpResp) && Objects.equals(erpResp.getCode(), 200)) {
+                log.info("鍙嶆槧灏勪笂鎶RP鎴愬姛锛宱rderNo={}", pickString(root, "orderNo", "WMSNO"));
+            } else {
+                String msg = Objects.isNull(erpResp) ? "ERP鍝嶅簲涓虹┖" : erpResp.getMsg();
+                errors.add("涓婃姤ERP澶辫触锛�" + msg);
+            }
+        } catch (Exception e) {
+            log.error("鍙嶆槧灏勪笂鎶RP寮傚父", e);
+            errors.add("涓婃姤ERP寮傚父锛�" + e.getMessage());
+        }
+
         if (!errors.isEmpty()) {
             reportEvent.setStatus(2);
             openApiOrderReportEventMapper.updateById(reportEvent);
@@ -500,6 +522,42 @@
         return CommonResponse.ok(result);
     }
 
+    /**
+     * 鏍规嵁鍙嶆槧灏勫悗鐨勬暟鎹粍瑁匯eportParams锛屽弬鐓ф棫閾捐矾wmsErpService.reportOrders鏍煎紡涓婃姤ERP
+     */
+    private ReportParams buildReportParamsFromMappedData(JSONObject root, JSONArray dataArray) {
+        String orderType = pickString(root, "OrderType", "orderType", "type", "wkType");
+
+        List<ReportDataParam> reportDataList = new ArrayList<>();
+        for (int i = 0; i < dataArray.size(); i++) {
+            JSONObject row = dataArray.getJSONObject(i);
+            ReportDataParam dataParam = new ReportDataParam()
+                    .setWMSNO(pickString(row, "WMSNO", "wmsNo", "orderNo", "OrderNo"))
+                    .setPONO(pickString(row, "PONO", "poNo"))
+                    .setOrderNO(pickString(row, "OrderNO", "orderNo"))
+                    .setGoodsNO(pickString(row, "GoodsNO", "goodsNo", "batch", "Batch"))
+                    .setItemCode(pickString(row, "ItemCode", "itemCode", "matNr", "MatNr"))
+                    .setEditUser(pickString(row, "EditUser", "editUser"))
+                    .setMemoDtl(pickString(row, "MemoDtl", "memoDtl", "memo"));
+
+            BigDecimal inQty = pickDecimal(row, "InQty", "inQty");
+            BigDecimal outQty = pickDecimal(row, "OutQty", "outQty");
+            if (Objects.nonNull(inQty) && inQty.compareTo(ZERO) > 0) {
+                dataParam.setInQty(inQty.doubleValue());
+            }
+            if (Objects.nonNull(outQty) && outQty.compareTo(ZERO) > 0) {
+                dataParam.setOutQty(outQty.doubleValue());
+            }
+
+            reportDataList.add(dataParam);
+        }
+
+        return new ReportParams()
+                .setOrderType(orderType)
+                .setAction("Update")
+                .setData(reportDataList);
+    }
+
     private OpenApiOrder saveOpenApiOrder(Order order) {
         OpenApiOrder existing = openApiOrderMapper.selectOne(new LambdaQueryWrapper<OpenApiOrder>()
                 .eq(OpenApiOrder::getCode, order.getOrderNo())

--
Gitblit v1.9.1