From 33686e35470b3548053d03532fbefa40f2470a2b Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期四, 07 五月 2026 09:56:04 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java |  139 +++++++++++++++++++++++++++++++--------------
 1 files changed, 95 insertions(+), 44 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
index 9cdf5dc..6a46b23 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -155,7 +155,7 @@
                     path = orgAddress;
                     break;
                 case "PUR_RECEIVEBIll": //宸插鏍告敹鏂欏崟鏌ヨ
-                    jsonObject.put("start_biztime",  latestUpdateTime);//涓氬姟璧峰鏃ユ湡
+                    jsonObject.put("start_biztime",  "2026-03-28");//涓氬姟璧峰鏃ユ湡
                     jsonObject.put("end_biztime", sdf1.format(now));//涓氬姟缁撴潫鏃ユ湡
                     jsonObject.put("billno", null);
                     jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
@@ -262,20 +262,36 @@
                         .setJson(add)
                         .build()
                         .doPost();
+                if (response == null || response.trim().isEmpty()) {
+                    log.error("妫�绱㈠け璐ワ細杩斿洖绌哄搷搴旓紝path={}", path);
+                    continue;
+                }
                 JSONObject jsonResponse = JSON.parseObject(response);
-                if(jsonResponse.getString("errorCode").equals("401")){
+                if (jsonResponse == null) {
+                    log.error("妫�绱㈠け璐ワ細鍝嶅簲鏃犳硶瑙f瀽涓篔SON锛宲ath={}锛宺esponse={}", path, response);
+                    continue;
+                }
+                if ("401".equals(jsonResponse.getString("errorCode"))) {
                     log.error("妫�绱㈠け璐ラ敊璇俊鎭細{}", jsonResponse.getString("message"));
                     loginAuthenticationHandler.start();
                     continue;
                 }
-                JSONArray data = jsonResponse.getJSONObject("data").getJSONArray("rows");
+                JSONObject dataObj = jsonResponse.getJSONObject("data");
+                if (dataObj == null) {
+                    log.error("妫�绱㈠け璐ワ細鍝嶅簲data涓虹┖锛宲ath={}锛宺esponse={}", path, response);
+                    continue;
+                }
+                JSONArray data = dataObj.getJSONArray("rows");
+                if (data == null) {
+                    continue;
+                }
                 if(data.size()<=0)  continue;
                 //鍟嗗搧妗f鍚屾
                 if(kingDeeUtilType.formId.equals("BD_MATERIAL")) {
                     Tag tag = tagService.selectByName("鍏ㄩ儴", 1);
                     // 澶勭悊鍒嗛〉锛氭牴鎹繑鍥炵殑totalCount鍜宲ageSize璁$畻椤垫暟
-                    int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize");
-                    int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount");
+                    int pageSize = dataObj.getIntValue("pageSize");
+                    int totalCount = dataObj.getIntValue("totalCount");
                     int totalPages = (int) Math.ceil((double) totalCount / pageSize);
 
                     for (int page = 1; page <= totalPages; page++) {
@@ -290,8 +306,24 @@
                                 .build()
                                 .doPost();
 
+                        if (response == null || response.trim().isEmpty()) {
+                            log.error("妫�绱㈠け璐ワ細鍒嗛〉杩斿洖绌哄搷搴旓紝path={}锛宲ageNo={}", path, page);
+                            continue;
+                        }
                         jsonResponse = JSON.parseObject(response);
-                        data = jsonResponse.getJSONObject("data").getJSONArray("rows");
+                        if (jsonResponse == null) {
+                            log.error("妫�绱㈠け璐ワ細鍒嗛〉鍝嶅簲鏃犳硶瑙f瀽涓篔SON锛宲ath={}锛宲ageNo={}锛宺esponse={}", path, page, response);
+                            continue;
+                        }
+                        dataObj = jsonResponse.getJSONObject("data");
+                        if (dataObj == null) {
+                            log.error("妫�绱㈠け璐ワ細鍒嗛〉鍝嶅簲data涓虹┖锛宲ath={}锛宲ageNo={}锛宺esponse={}", path, page, response);
+                            continue;
+                        }
+                        data = dataObj.getJSONArray("rows");
+                        if (data == null) {
+                            continue;
+                        }
                         for (int j = 0; j < data.size(); j++) {
                             JSONObject jsonObjectNew = data.getJSONObject(j);
                             Date modifyTime = sdf1.parse(jsonObjectNew.get("modifytime").toString());
@@ -336,7 +368,7 @@
                                 if (mat.getUpdateTime().compareTo(modifyTime) != 0) {
                                     // 鏇存柊瀛楁
                                     if (!mat.getMaktx().equals(name)) mat.setMaktx(name);
-                                    if (!mat.getMemo().equals(memo)) mat.setMemo(memo);
+                                    if (mat.getMemo() == null || !mat.getMemo().equals(memo)) mat.setMemo(memo);
                                     if (mat.getWeight().compareTo(grossweight) != 0) mat.setWeight(grossweight);
                                     if (mat.getUnits().compareTo(netweight) != 0) mat.setUnits(netweight);
                                     if (mat.getSafeQty().compareTo(unit) != 0) mat.setSafeQty(unit);
@@ -463,11 +495,11 @@
                             String ownerUuid = jsonObjectNew.get("org_number").toString();//erp璐т富缂栧彿
                             String orderId = jsonObjectNew.get("id").toString();
                             JSONObject detailParam = new JSONObject();
-                            JSONObject dataObj = new JSONObject();
-                            dataObj.put("billno", billNo);
+                            JSONObject billnoParam = new JSONObject();
+                            billnoParam.put("billno", billNo);
                             detailParam.put("pageNo", 1);
                             detailParam.put("pageSize", 100);
-                            detailParam.put("data", dataObj);
+                            detailParam.put("data", billnoParam);
                             boolean hasNext = true;
                             while (hasNext) {
                                 String reqJson = detailParam.toJSONString();
@@ -489,14 +521,14 @@
                                     JSONObject jsonObjectNew2 = rows.getJSONObject(i);
                                     Order order = orderService.selectByNo(billNo);//妫�绱㈠崟鎹�
                                     LocOwner locOwner = null;
-                                    if (ownerUuid != null) {
-                                        locOwner = locOwnerService.selectByUuid(ownerUuid);
-                                        if (locOwner == null) {
-                                            callApiLogSaveOwner(locOwner,kingDeeUtilType, "璐т富妫�绱㈠け璐ワ紝璇峰厛娣诲姞瀵瑰簲璐т富缂栧彿锛�"+ownerUuid+"鍚嶇О"+owner, false);continue;
-                                        }
-                                    } else{
-                                        callApiLogSaveOwner(locOwner,kingDeeUtilType, "璐т富妫�绱㈠け璐ワ紝鏈煡璇㈠埌璐т富缂栧彿锛�", false);continue;
-                                    }
+//                                    if (ownerUuid != null) {
+//                                        locOwner = locOwnerService.selectByUuid(ownerUuid);
+//                                        if (locOwner == null) {
+//                                            callApiLogSaveOwner(locOwner,kingDeeUtilType, "璐т富妫�绱㈠け璐ワ紝璇峰厛娣诲姞瀵瑰簲璐т富缂栧彿锛�"+ownerUuid+"鍚嶇О"+owner, false);continue;
+//                                        }
+//                                    } else{
+//                                        callApiLogSaveOwner(locOwner,kingDeeUtilType, "璐т富妫�绱㈠け璐ワ紝鏈煡璇㈠埌璐т富缂栧彿锛�", false);continue;
+//                                    }
                                     if (Cools.isEmpty(order)) {
                                         // 鍗曟嵁涓绘。
                                         order = new Order(
@@ -577,17 +609,14 @@
                                         }
                                         Double erpAnfme = anfme*mat.getSafeQty();
                                         Order order1 = orderService.selectByNo( billNo);
-                                        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order1.getId());
-                                        boolean sign = false;
-                                        for (OrderDetl orderDetl : orderDetls){
-                                            if (orderDetl.getMatnr().equals(matnr)){
-                                                sign = true;
-                                                break;
-                                            }
-                                        }
-                                        if (sign){
-                                            continue;
-                                        }
+                                        List<OrderDetl> orderDetls =
+                                                orderDetlService.selectByOrderId(order.getId());
+                                        boolean exists = orderDetls.stream()
+                                                .anyMatch(o ->
+                                                        o.getMatnr().equals(matnr) &&
+                                                                o.getBoxType3().equals(pOrderNo)
+                                                );
+                                        if (exists) continue;
                                         LocSupp locSupp = null;
                                         String supp =null;
                                         locSupp = locSuppService.selectByUuid(suppCode);
@@ -767,7 +796,10 @@
                                         orderDetlService.selectByOrderId(order.getId());
 
                                 boolean exists = orderDetls.stream()
-                                        .anyMatch(o -> o.getMatnr().equals(matnr));
+                                        .anyMatch(o ->
+                                                o.getMatnr().equals(matnr) &&
+                                                        o.getBoxType3().equals(pOrderNo)
+                                        );
                                 if (exists) continue;
 //                                // ========= 渚涘簲鍟� =========
                                 String supp = null;
@@ -939,7 +971,10 @@
                                         orderDetlService.selectByOrderId(order.getId());
 
                                 boolean exists = orderDetls.stream()
-                                        .anyMatch(o -> o.getMatnr().equals(matnr));
+                                        .anyMatch(o ->
+                                                o.getMatnr().equals(matnr) &&
+                                                        o.getBoxType3().equals(pOrderNo)
+                                        );
                                 if (exists) continue;
 //                                // ========= 渚涘簲鍟� =========
                                 String supp = null;
@@ -1104,7 +1139,10 @@
                                         orderDetlService.selectByOrderId(order.getId());
 
                                 boolean exists = orderDetls.stream()
-                                        .anyMatch(o -> o.getMatnr().equals(matnr));
+                                        .anyMatch(o ->
+                                                o.getMatnr().equals(matnr) &&
+                                                        o.getBoxType3().equals(pOrderNo)
+                                        );
                                 if (exists) continue;
 //                                // ========= 渚涘簲鍟� =========
                                 String supp = null;
@@ -1271,7 +1309,10 @@
 
 
                                 boolean exists = orderDetls.stream()
-                                        .anyMatch(o -> o.getMatnr().equals(matnr));
+                                        .anyMatch(o ->
+                                                o.getMatnr().equals(matnr) &&
+                                                        o.getBoxType3().equals(pOrderNo)
+                                        );
                                 if (exists) continue;
 //                                // ========= 渚涘簲鍟� =========
                                 String supp = null;
@@ -1444,7 +1485,10 @@
                                         orderDetlService.selectByOrderId(order.getId());
 
                                 boolean exists = orderDetls.stream()
-                                        .anyMatch(o -> o.getMatnr().equals(matnr));
+                                        .anyMatch(o ->
+                                                o.getMatnr().equals(matnr) &&
+                                                        o.getBoxType3().equals(pOrderNo)
+                                        );
                                 if (exists) continue;
 //                                // ========= 渚涘簲鍟� =========
                                 String supp = null;
@@ -1580,17 +1624,22 @@
                             }
                             for (int k = 0; k < billEntryArray.size(); k++) {
                                 JSONObject entry = billEntryArray.getJSONObject(k);
+                                String memo = null;
                                 String matnr = entry.getString("material_number"); //鐗╂枡缂栫爜锛屽唴閮⊿KU
-                                Double anfmeBox = 0.0;//绠辨暟
+                                Double anfmeBox = entry.getDouble("eap7_integerfield");//绠辨暟
                                 Double anfme = entry.getDouble("completqty");//涓暟
                                 Double totalNumItems = entry.getDouble("eap7_decimalfield1");//鎬讳欢鏁�
                                 Double totalVolume = entry.getDouble("eap7_decimalfield2");//鎬讳綋绉�
                                 String warehouse = entry.getString("warehouse_number");//浠撳簱缂栫爜
+                                if(kingDeeUtilType.formId.equals("OUI_RECEIVEBIll")){
+                                    memo = entry.getString("eap7_textfield3"); //澶囨敞锛堣嫳鏂囨弿杩帮級
+                                }else{
+                                    memo = entry.getString("eap7_textfield5");
+                                }
                                 String pOrderNo = entry.getString("eap7_textfield");//閲囪喘鍗曞彿
-                                String s3 = entry.getString("eap7_textfield4");//瀹㈡埛sku锛堝鎴风紪鍙凤級
+                                String s3 = entry.getString("eap7_textfield2");//瀹㈡埛sku锛堝鎴风紪鍙凤級
                                 String s2 = entry.getString("eap7_textfield1"); //鏉$爜UPC
-                                String memo = entry.getString("eap7_textfield6"); //澶囨敞锛堣嫳鏂囨弿杩帮級
-                                String s1 = entry.getString("eap7_textfield7"); //瀹㈡埛PO
+                                String s1 = entry.getString("eap7_textfield4"); //瀹㈡埛PO
                                 String detlId = entry.getString("id"); //鏄庣粏id
                                 Long seq = entry.getLong("seq"); //鍒嗗綍琛屽彿
                                 Double taxrate = entry.getDouble("taxrate");
@@ -1623,9 +1672,11 @@
                                 // ========= 鏄庣粏鍘婚噸 =========
                                 List<OrderDetl> orderDetls =
                                         orderDetlService.selectByOrderId(order.getId());
-
                                 boolean exists = orderDetls.stream()
-                                        .anyMatch(o -> o.getMatnr().equals(matnr));
+                                        .anyMatch(o ->
+                                                o.getMatnr().equals(matnr) &&
+                                                        o.getBoxType3().equals(pOrderNo)
+                                        );
                                 if (exists) continue;
 //                                // ========= 渚涘簲鍟� =========
                                 String supp = null;
@@ -1649,9 +1700,9 @@
                                 orderDetl.setSupp(supp);
                                 orderDetl.setSuppCode(suppCode);
                                 orderDetl.setSku(matnr);
-                                orderDetl.setStandby1(s1 != null? s1:"1");
-                                orderDetl.setStandby2(s2 != null? s2:"1");
-                                orderDetl.setStandby3(s3 != null? s3:"1");
+                                orderDetl.setStandby1(Cools.isEmpty(s1) ? "1" : s1);
+                                orderDetl.setStandby2(Cools.isEmpty(s2) ? "1" : s2);
+                                orderDetl.setStandby3(Cools.isEmpty(s3) ? "1" : s3);
                                 orderDetl.setBoxType1(owner);
                                 orderDetl.setBoxType2(ownerUuid);
                                 orderDetl.setBoxType3(pOrderNo);
@@ -1902,4 +1953,4 @@
     }
 
 
-}
\ No newline at end of file
+}

--
Gitblit v1.9.1