From 878014fe71ae76d4bfbc885f1daab8921c60f6ac Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期六, 13 十二月 2025 17:26:24 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java |  100 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 81 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
index 0f92365..69f920a 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
@@ -36,6 +36,10 @@
 
     @Value("${erp.address.imPurinbillAdd}")
     private String imPurinbillAdd;
+    @Value("${erp.address.imOtheroutbill}")
+    private String imOtheroutbill;
+    @Value("${erp.address.imOtherinbill}")
+    private String imOtherinbill;
 
     @Autowired
     private OrderService orderService;
@@ -82,7 +86,10 @@
 
     private JSONObject buildRequestParams(Order order, KingDeeUtilType kingDeeUtilType, SimpleDateFormat sdf1, SimpleDateFormat sdf2) {
         List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",order.getOrderNo()));
-
+        if (kingDeeUtilType == null || kingDeeUtilType.formId == null) {
+            log.warn("kingDeeUtilType 涓虹┖锛屽凡璺宠繃鏈鍚屾锛�");
+            return null;
+        }
         switch (kingDeeUtilType.formId) {
             case "PUR_RECEIVEBIll": // 杩涗粨閫氱煡鍗�
                 path = imPurinbillAdd;
@@ -90,19 +97,20 @@
                 JSONArray billentryArray = new JSONArray();  // 鐢ㄤ簬瀛樺偍 billentry 瀵硅薄
                 String suppCode = null;  // 渚涘簲鍟�
                 String boxType2 = null;  // 璐т富/璐ф簮
-
                 // 閬嶅巻璁㈠崟璇︽儏
+                Date now = new Date();
+
                 for (OrderDetl orderDetl : orderDetlList) {
                     suppCode = orderDetl.getSuppCode();
                     boxType2 = orderDetl.getBoxType2();
                     if (orderDetl.getQty() == 0) {
                         continue;
                     }
-                    JSONArray idArr = new JSONArray();
-                    idArr.add(0L);   // 鉁� 娉ㄦ剰蹇呴』鏄� Long 绫诲瀷鐨� 0L
+//                    JSONArray idArr = new JSONArray();
+//                    idArr.add(0L);
                     // 鍒涘缓 billentry_lk 瀵硅薄
                     JSONObject billentryLk = new JSONObject()
-                            .fluentPut("id", idArr)
+                            .fluentPut("id", 0L)
                             .fluentPut("seq", orderDetl.getLineNumber())
                             .fluentPut("billentry_lk_stableid", 677270092232273922L)
                             .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName()))  // 涓诲崟ID
@@ -112,7 +120,7 @@
                     billentryLkArray.add(billentryLk);
                     // 鍒涘缓 billentry 瀵硅薄锛屽~鍏呯己澶辩殑瀛楁
                     JSONObject billentry = new JSONObject()
-                            .fluentPut("id", idArr)
+                            .fluentPut("id", 0L)
                             .fluentPut("warehouse_number", orderDetl.getManu())  // 浠撳簱缂栧彿
                             .fluentPut("invstatus_number", "110")  // 搴撳瓨鐘舵��
                             .fluentPut("invtype_number", "110")  // 搴撳瓨绫诲瀷
@@ -124,7 +132,6 @@
 
                     billentryArray.add(billentry);
                 }
-                Date now = new Date();
                 return new JSONObject()
                         .fluentPut("data", new JSONArray(Arrays.asList(
                                 new JSONObject()
@@ -142,9 +149,73 @@
                                         .fluentPut("supplier_number", suppCode)  // 渚涘簲鍟嗙紪鍙�
                                         .fluentPut("billentry", billentryArray)  // 灏� billentry 鏁扮粍娣诲姞鍒拌姹傚弬鏁�
                         )));
-
+            case "STK_MISCELLANEOUS": // 鍏朵粬鍏ュ簱鍗�
+                path = imOtherinbill;
+                billentryArray = new JSONArray();
+                for (OrderDetl orderDetl : orderDetlList) {
+                    if (orderDetl.getQty() == 0) {
+                        continue;
+                    }
+                    JSONObject billentry = new JSONObject()
+                            .fluentPut("id", 0L)
+                            .fluentPut("material_number", orderDetl.getMatnr())       // 鐗╂枡缂栫爜
+                            .fluentPut("qty", orderDetl.getQty())                    // 鏁伴噺
+                            .fluentPut("warehouse_number", "CK001")     // 浠撳簱
+                            .fluentPut("invstatus_number", "110")
+                            .fluentPut("invtype_number", "110")
+                            .fluentPut("outinvstatus_number", "110")
+                            .fluentPut("outinvtype_number", "110")
+                            .fluentPut("linetype_number", "010");
+                    billentryArray.add(billentry);
+                }
+                Date nowMis = new Date();
+                return new JSONObject()
+                        .fluentPut("data", new JSONArray(Arrays.asList(
+                                new JSONObject()
+//                                        .fluentPut("id", 0L)
+                                        .fluentPut("billno", order.getOrderNo())
+//                                        .fluentPut("bookdate", sdf1.format(nowMis))
+                                        .fluentPut("biztime", sdf1.format(nowMis))
+                                        .fluentPut("biztype_number", "354")
+                                        .fluentPut("billtype_number", "im_OtherInBill_STD_BT_S")
+                                        .fluentPut("org_number", "BU-00001")
+                                        .fluentPut("invscheme_number", "354")
+                                        .fluentPut("billentry", billentryArray)
+                        )));
+            case "STK_MisDelivery": // 鍏朵粬鍑哄簱鍗�
+                path = imOtheroutbill;
+                billentryArray = new JSONArray();
+                Date nowOut = new Date();
+                for (OrderDetl orderDetl : orderDetlList) {
+                    if (orderDetl.getQty() == 0) {
+                        continue;
+                    }
+                    JSONObject billentry = new JSONObject()
+                            .fluentPut("id", 0L)
+                            .fluentPut("material_number", orderDetl.getMatnr())       // 鐗╂枡缂栫爜
+                            .fluentPut("qty", orderDetl.getQty())                    // 鏁伴噺
+                            .fluentPut("warehouse_number", "CK001")     // 浠撳簱
+                            .fluentPut("invstatus_number", "110")
+                            .fluentPut("invtype_number", "110")
+                            .fluentPut("outinvstatus_number", "110")
+                            .fluentPut("outinvtype_number", "110")
+                            .fluentPut("linetype_number", "010");
+                    billentryArray.add(billentry);
+                }
+                return new JSONObject()
+                        .fluentPut("data", new JSONArray(Arrays.asList(
+                                new JSONObject()
+//                                        .fluentPut("id", 0L)
+                                        .fluentPut("billno", order.getOrderNo())
+//                                        .fluentPut("bookdate", sdf1.format(nowMis))
+                                        .fluentPut("biztime", sdf1.format(nowOut))
+                                        .fluentPut("biztype_number", "354")
+                                        .fluentPut("billtype_number", "im_OtherInBill_STD_BT_S")
+                                        .fluentPut("org_number", "BU-00001")
+                                        .fluentPut("invscheme_number", "354")
+                                        .fluentPut("billentry", billentryArray)
+                        )));
             default:
-                // 榛樿澶勭悊锛氬彲浠ユ姏鍑哄紓甯告垨杩斿洖绌哄璞�
                 throw new IllegalArgumentException("Unsupported formId: " + kingDeeUtilType.formId);
         }
     }
@@ -153,11 +224,9 @@
     private ReturnT<String> sendRequestAndProcessResponse(Order order, ErpSecret erpSecret, JSONObject add) {
         String response = "";
         boolean success = false;
-
         try {
             // 璁剧疆璇锋眰澶�
             HashMap<String, Object> headers = buildRequestHeaders(erpSecret);
-
             // 鍙戦�佽姹傦紝灏� JSONObject 杞崲涓� String
             response = new HttpHandler.Builder()
                     .setHeaders(headers)
@@ -166,10 +235,8 @@
                     .setJson(add.toJSONString()) // 灏� JSONObject 杞崲涓� String
                     .build()
                     .doPost();
-
             // 瑙f瀽鍝嶅簲
             JSONObject jsonResponse = JSON.parseObject(response);
-
             // 鍒ゆ柇鏄惁鍥犱负 token 杩囨湡 (errorCode = 401)
             if ("401".equals(jsonResponse.getString("errorCode"))) {
                 log.error("璁よ瘉澶辫触锛屽皾璇曢噸鏂拌幏鍙� Token");
@@ -186,18 +253,15 @@
                         .build()
                         .doPost();
             }
-
             // 瑙f瀽杩斿洖鐨勫搷搴�
             JSONObject data = jsonResponse.getJSONObject("data");
             String errorCode = jsonResponse.getString("errorCode");
             boolean status = jsonResponse.getBooleanValue("status");
-
             // 妫�鏌ユ帴鍙h皟鐢ㄧ殑鏁翠綋鐘舵��
             if ("0".equals(errorCode) && status) {
                 // 鑾峰彇鎴愬姛涓庡け璐ョ殑鏁伴噺
                 int successCount = data.getInteger("successCount");
                 int failCount = data.getInteger("failCount");
-
                 if (failCount == 0) {
                     success = true;
                     log.info("鎺ュ彛璋冪敤鎴愬姛锛屾垚鍔熺殑鎿嶄綔鏁伴噺: {}", successCount);
@@ -207,7 +271,6 @@
                         JSONObject resultItem = resultArray.getJSONObject(i);
                         String billNo = resultItem.getString("number");  // 鑾峰彇杩斿洖鐨勫崟鎹彿
                         String billId = resultItem.getString("id");      // 鑾峰彇杩斿洖鐨処D
-
                         // 鍒ゆ柇杩斿洖鐨勫崟鎹彿涓庤鍗曞彿鏄惁涓�鑷�
                         if (billNo != null && billNo.equals(order.getOrderNo())) {
                             // 濡傛灉涓�鑷达紝璁剧疆璁㈠崟鐨� number
@@ -241,7 +304,6 @@
             // 淇濆瓨鎺ュ彛鏃ュ織
             saveApiLog(add, response, success);
         }
-
         return success ? SUCCESS : FAIL;
     }
 
@@ -255,7 +317,7 @@
     private void saveApiLog(JSONObject add, String response, boolean success) {
         try {
             apiLogService.save(
-                    "杩涗粨閫氱煡鍗曚笂鎶ユ柊澧�",
+                    "鍏ュ簱涓婃姤鏂板",
                     URL + path,
                     null,
                     "127.0.0.1",

--
Gitblit v1.9.1