From c039b42920df96629bc570883cd498e58276e643 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 05 一月 2026 14:59:43 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java |  663 +++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 447 insertions(+), 216 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 722bf5e..713a851 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
@@ -56,9 +56,6 @@
     @Value("${erp.address.scpSalreturn}")
     //閿�鍞��璐у崟
     private String scpSalreturn;
-    @Value("${erp.address.scpSalreturnDetl}")
-    //閿�鍞��璐у崟
-    private String scpSalreturnDetl;
     @Value("${erp.address.imMdcMftproorder}")
     //鐢熶骇棰嗘枡鍗�
     private String imMdcMftproorder;
@@ -74,7 +71,9 @@
     @Value("${erp.address.qcppManuinspec}")
     //浜у搧妫�楠屽崟
     private String qcppManuinspec;
-
+    @Value("${erp.address.omOutsourcereceiptQuery}")
+    //濮斿鍏ュ簱鍗�
+    private String omOutsourcereceiptQuery;
     @Autowired
     private ApiLogService apiLogService;
 
@@ -156,15 +155,21 @@
                     path = orgAddress;
                     break;
                 case "PUR_RECEIVEBIll": //宸插鏍告敹鏂欏崟鏌ヨ
-                    jsonObject.put("start_biztime",  "2025-01-01 00:00:00");//涓氬姟璧峰鏃ユ湡
+                    jsonObject.put("start_biztime",  latestUpdateTime);//涓氬姟璧峰鏃ユ湡
                     jsonObject.put("end_biztime", sdf1.format(now));//涓氬姟缁撴潫鏃ユ湡
                     jsonObject.put("billno", null);
                     jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
-                    jsonObject.put("start_auditdate", "2025-11-25 00:00:00");
+                    jsonObject.put("start_auditdate", latestUpdateTime);
                     jsonObject.put("end_auditdate", sdf1.format(now));
                     jsonObject.put("org_number", null);
                     jsonObject.put("supplier_number", null);
                     path = imPurreceiveBillAddress;
+                    break;
+                case "OUI_RECEIVEBIll"://濮斿鍏ュ簱鍗�
+                    jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
+                    jsonObject.put("auditdate_start", latestUpdateTime);
+                    jsonObject.put("auditdate_end", sdf1.format(now));
+                    path = omOutsourcereceiptQuery;
                     break;
                 case "SAL_OUTSTOCK"://閿�鍞嚭搴撳崟鏌ヨ
                     path = imSaloutbill;
@@ -174,15 +179,16 @@
                     break;
                 case "SAL_RETURNSTOCK"://閿�鍞��璐�
                     path = scpSalreturn;
-                    jsonObject.put("start_modifytime",  "2025-11-25 00:00:00");//涓氬姟璧峰鏃ユ湡
+                    jsonObject.put("modify_starttime",  latestUpdateTime);//涓氬姟璧峰鏃ユ湡
                     jsonObject.put("billstatus",  "B");//鍗曟嵁鐘舵��
-                    jsonObject.put("end_starttime",  sdf1.format(now));//涓氬姟璧峰鏃ユ湡
+                    jsonObject.put("modify_endtime",  sdf1.format(now));//涓氬姟璧峰鏃ユ湡
+                    jsonObject.put("billtype_number",  "im_SalOutBill_STD_BT_S_R");//鍗曟嵁绫诲瀷
                     break;
                 case "PRD_PickMtrl"://鐢熶骇棰嗘枡鍗�
                     path = imMdcMftproorder;
 //                    jsonObject.put("start_modifytime",  "2025-11-25 00:00:00");
 //                    jsonObject.put("start_auditdate", "2025-11-25 00:00:00");
-                    jsonObject.put("start_createtime", "2025-11-25 00:00:00");
+                    jsonObject.put("start_createtime", latestUpdateTime);
                     jsonObject.put("end_createtime", sdf1.format(now));
 //                    jsonObject.put("end_auditdate", sdf1.format(now));
 //                    jsonObject.put("end_modifytime", sdf1.format(now));
@@ -197,7 +203,7 @@
                     jsonObject.put("billno", null);
                     jsonObject.put("org_number", null);
                     jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
-                    jsonObject.put("start_createtime", "2025-11-25 00:00:00");
+                    jsonObject.put("start_createtime", latestUpdateTime);
                     jsonObject.put("end_createtime", sdf1.format(now));
 //                    jsonObject.put("start_modifytime",  "2025-11-25 00:00:00");
 //                    jsonObject.put("end_modifytime", sdf1.format(now));
@@ -210,7 +216,7 @@
                     jsonObject.put("billno", null);
                     jsonObject.put("org_number", null);
                     jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
-                    jsonObject.put("start_createtime", "2025-11-25 00:00:00");
+                    jsonObject.put("start_createtime", latestUpdateTime);
                     jsonObject.put("end_createtime", sdf1.format(now));
 //                    jsonObject.put("start_modifytime",  "2025-11-25 00:00:00");
 //                    jsonObject.put("end_modifytime", sdf1.format(now));
@@ -220,13 +226,13 @@
                 case "PRD_MORPT"://鐢熶骇杩涗粨鍗�
                     path = imProductinbill;
                     jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
-                    jsonObject.put("modifytime_start", "2025-11-25 00:00:00");
+                    jsonObject.put("modifytime_start",latestUpdateTime);
                     jsonObject.put("modifytime_end", sdf1.format(now));
                     break;
                 case "STK_InspectionForm"://浜у搧妫�楠�
                     path = qcppManuinspec;
                     jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
-                    jsonObject.put("auditdate_start", "2025-11-25 00:00:00");
+                    jsonObject.put("auditdate_start", latestUpdateTime);
                     jsonObject.put("auditdate_end", sdf1.format(now));
                     break;
             }
@@ -265,7 +271,7 @@
                 JSONArray data = jsonResponse.getJSONObject("data").getJSONArray("rows");
                 if(data.size()<=0)  continue;
                 //鍟嗗搧妗f鍚屾
-                if (kingDeeUtilType.formId.equals("BD_MATERIAL")) {
+                if(kingDeeUtilType.formId.equals("BD_MATERIAL")) {
                     Tag tag = tagService.selectByName("鍏ㄩ儴", 1);
                     // 澶勭悊鍒嗛〉锛氭牴鎹繑鍥炵殑totalCount鍜宲ageSize璁$畻椤垫暟
                     int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize");
@@ -292,11 +298,12 @@
                             String matnr = jsonObjectNew.get("number").toString();
                             String name = jsonObjectNew.get("name").toString();
                             String createTime = jsonObjectNew.get("createtime").toString();
-                            Double grossweight = jsonObjectNew.get("grossweight") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield6").toString()).doubleValue() : 0.0;
-                            Double height = jsonObjectNew.get("height") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield9").toString()).doubleValue() : 0.0;
-                            Double width = jsonObjectNew.get("width") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield8").toString()).doubleValue() : 0.0;
-                            Double length = jsonObjectNew.get("length") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield7").toString()).doubleValue() : 0.0;
-                            Double netweight = jsonObjectNew.get("netweight") != null ? new BigDecimal(jsonObjectNew.get("eap7_decimalfield").toString()).doubleValue() : 0.0;
+                            Double height = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield9");
+                            Double width = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield8");
+                            Double length = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield7");
+                            Double grossweight= getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield6");
+                            Double netweight = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield");
+                            Double unit = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield2");
                             // 鐢熸垚鍟嗗搧妗f
                             Double height1 = height*10;
                             Double width1 = width*10;
@@ -309,6 +316,7 @@
                                 mat.setTagId(tag.getId());
                                 mat.setWeight(grossweight);//鍑�閲�
                                 mat.setUnits(netweight);//姣涢噸
+                                mat.setSafeQty(unit);//
                                 mat.setManLength(length1);
                                 mat.setHeight(height1);
                                 mat.setWidth(width1);
@@ -328,6 +336,8 @@
                                     // 鏇存柊瀛楁
                                     if (!mat.getMaktx().equals(name)) mat.setMaktx(name);
                                     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);
                                     if (mat.getManLength().compareTo(length) != 0) mat.setManLength(length1);
                                     if (mat.getHeight().compareTo(height) != 0) mat.setHeight(height1);
                                     if (mat.getWidth().compareTo(width) != 0) mat.setWidth(width1);
@@ -421,6 +431,8 @@
                             }
                         }
                     }
+                    docType.setUpdateTime(now);
+                    docTypeService.updateById(docType);
                 }
                 //鏀舵枡鍗�
                 else if(kingDeeUtilType.formId.equals("PUR_RECEIVEBIll")){
@@ -466,6 +478,9 @@
                                         .doPost();
                                 JSONObject detailJson = JSON.parseObject(detailResp);
                                 JSONObject detData = detailJson.getJSONObject("data");
+                                if(detData == null){
+                                    continue;
+                                }
                                 JSONArray rows = detData.getJSONArray("rows");
                                 // ====== 澶勭悊鏄庣粏 ======
                                 for (int i = 0; i < rows.size(); i++) {
@@ -551,6 +566,12 @@
                                             callApiLogSaveOrder(order,kingDeeUtilType, "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧"+matnr, false);
                                             continue;
                                         }
+                                        if (mat.getSafeQty() == null || mat.getSafeQty() == 0) {
+                                            callApiLogSaveOrder(order, kingDeeUtilType,
+                                                    "妗f绠辨暟閲忓紓甯革細" + matnr, false);
+                                            continue;
+                                        }
+                                        Double erpAnfme = anfme*mat.getSafeQty();
                                         Order order1 = orderService.selectByNo( billNo);
                                         List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order1.getId());
                                         boolean sign = false;
@@ -572,7 +593,7 @@
                                         orderDetl.setThreeCode(detlId);//ERP鏄庣粏id
                                         orderDetl.setLineNumber(seq);//鍒嗗綍琛屽彿
                                         orderDetl.setAnfme(anfme);//鎬荤鏁�
-                                        orderDetl.setErpAnfme(anfme);//erp鏁版嵁
+                                        orderDetl.setErpAnfme(erpAnfme);//erp鏁版嵁
                                         orderDetl.setOrderId(order.getId());
                                         orderDetl.setOrderNo(order.getOrderNo());//琛ㄥご鍗曟嵁
                                         orderDetl.setSupp(supp);//渚涘簲鍟嗗悕绉帮紙璐ф簮锛�
@@ -586,7 +607,7 @@
                                         orderDetl.setBoxType3(pOrderNo);//閲囪喘鍗曞彿
                                         orderDetl.setMemo(memo);//鑻辨枃澶囨敞
                                         orderDetl.setVolume(Totalvolume);//鎬讳綋绉�
-                                        orderDetl.setSafeQty(totalNumItems);//鎬讳欢鏁�
+                                        orderDetl.setPrice(totalNumItems);//鎬讳欢鏁�
                                         orderDetl.setManu(warehouse);//浠撳簱缂栫爜
                                         orderDetl.setCreateBy(9527L);
                                         orderDetl.setCreateTime(new Date());
@@ -608,8 +629,9 @@
                                 }
                             }
                         }
-                        docTypeService.updateById(docType);
                     }
+                    docType.setUpdateTime(now);
+                    docTypeService.updateById(docType);
                 }
                 //閿�鍞嚭搴�
                 else if(kingDeeUtilType.formId.equals("SAL_OUTSTOCK")){
@@ -727,6 +749,12 @@
                                             "鍟嗗搧涓嶅瓨鍦細" + matnr, false);
                                     continue;
                                 }
+                                if (mat.getSafeQty() == null || mat.getSafeQty() == 0) {
+                                    callApiLogSaveOrder(order, kingDeeUtilType,
+                                            "妗f绠辨暟閲忓紓甯革細" + matnr, false);
+                                    continue;
+                                }
+                                Double erpAnfme = anfme*mat.getSafeQty();
                                 // ========= 鏄庣粏鍘婚噸 =========
                                 List<OrderDetl> orderDetls =
                                         orderDetlService.selectByOrderId(order.getId());
@@ -746,7 +774,7 @@
                                 orderDetl.setThreeCode(detlId);
                                 orderDetl.setLineNumber(seq);
                                 orderDetl.setAnfme(anfme);
-                                orderDetl.setErpAnfme(anfme);
+                                orderDetl.setErpAnfme(erpAnfme);
                                 orderDetl.setOrderId(order.getId());
                                 orderDetl.setOrderNo(order.getOrderNo());
                                 orderDetl.setSupp(supp);
@@ -782,10 +810,11 @@
                     int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize");
                     int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount");
                     int totalPages = (int) Math.ceil((double) totalCount / pageSize);
+
                     for (int page = 1; page <= totalPages; page++) {
                         jsonObject1.put("pageNo", page);
                         add = jsonObject1.toJSONString();
-                        // 閲嶆柊鍙戣捣璇锋眰浠ヨ幏鍙栬椤电殑鏁版嵁
+
                         response = new HttpHandler.Builder()
                                 .setHeaders(headers)
                                 .setUri(URL)
@@ -796,173 +825,156 @@
 
                         jsonResponse = JSON.parseObject(response);
                         data = jsonResponse.getJSONObject("data").getJSONArray("rows");
+
                         for (int j = 0; j < data.size(); j++) {
                             JSONObject jsonObjectNew = data.getJSONObject(j);
-                            Date createTime =  sdf1.parse(jsonObjectNew.get("createtime").toString());
-                            String billNo = jsonObjectNew.get("billno").toString();//鍗曟嵁缂栧彿
-                            String orderId = jsonObjectNew.get("id").toString();
-                            JSONObject detailParam = new JSONObject();
-                            JSONObject dataObj = new JSONObject();
-                            dataObj.put("billno", billNo);
-                            detailParam.put("pageNo", 1);
-                            detailParam.put("pageSize", 100);
-                            detailParam.put("data", dataObj);
-                            boolean hasNext = true;
-                            while (hasNext) {
-                                String reqJson = detailParam.toJSONString();
-                                String detailResp = new HttpHandler.Builder()
-                                        .setHeaders(headers)
-                                        .setUri(URL)
-                                        .setPath(scpSalreturnDetl)
-                                        .setJson(reqJson)
-                                        .build()
-                                        .doPost();
-                                JSONObject detailJson = JSON.parseObject(detailResp);
-                                JSONObject detData = detailJson.getJSONObject("data");
-                                JSONArray rows = detData.getJSONArray("rows");
-                                // ====== 澶勭悊鏄庣粏 ======
-                                for (int i = 0; i < rows.size(); i++) {
-                                    JSONObject jsonObjectNew2 = rows.getJSONObject(i);
-                                    Order order = orderService.selectByNo(billNo);//妫�绱㈠崟鎹�
-                                    LocOwner locOwner = null;
-                                    if (Cools.isEmpty(order)) {
+                            Date createTime = sdf1.parse(jsonObjectNew.getString("createtime"));
+                            String billNo = jsonObjectNew.getString("billno");
+                            String owner = jsonObjectNew.getString("org_name");
+                            String ownerUuid = jsonObjectNew.getString("org_number");
+                            String orderId = jsonObjectNew.getString("id");
+                            // ========= 璐т富鏍¢獙 =========
+                            LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid);
+//                            if (locOwner == null) {
+//                                callApiLogSaveOwner(null, kingDeeUtilType,
+//                                        "璐т富妫�绱㈠け璐ワ細" + ownerUuid + " 鍚嶇О锛�" + owner, false);
+//                                continue;
+//                            }
+
+                            // ========= 鍒涘缓璁㈠崟涓昏〃 =========
+                            Order order = orderService.selectByNo(billNo);
+                            if (Cools.isEmpty(order)) {
+                                order = new Order(
                                         // 鍗曟嵁涓绘。
-                                        order = new Order(
-                                                String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
-                                                billNo,    // 璁㈠崟缂栧彿
-                                                createTime.toString(),    // 鍗曟嵁鏃ユ湡
-                                                docType.getDocId(),    // 鍗曟嵁绫诲瀷
-                                                null,    // 椤圭洰缂栧彿
-                                                orderId,    //鏀舵枡鍗昳d
-                                                null,    // 璋冩嫧椤圭洰缂栧彿
-                                                null,    // 鍒濆绁ㄦ嵁鍙�
-                                                null,    // 绁ㄦ嵁鍙�
-                                                null,    // 椤圭洰id
-                                                null,    // 璐т富
-                                                null,    // 鑱旂郴鏂瑰紡
-                                                null,    // 鎿嶄綔浜哄憳
-                                                null,    // 鍚堣閲戦
-                                                null,    // 浼樻儬鐜�
-                                                null,    // 浼樻儬閲戦
-                                                null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
-                                                null,    // 瀹炰粯閲戦
-                                                null,    // 浠樻绫诲瀷
-                                                null,    // 涓氬姟鍛�
-                                                null,    // 缁撶畻澶╂暟
-                                                null,    // 閭垂鏀粯绫诲瀷
-                                                null,    // 閭垂
-                                                null,    // 浠樻鏃堕棿
-                                                null,    // 鍙戣揣鏃堕棿
-                                                null,    // 鐗╂祦鍚嶇О
-                                                null,    // 鐗╂祦鍗曞彿
-                                                1L,    // 璁㈠崟鐘舵��
-                                                1,    // 鐘舵��
-                                                9527L,    // 娣诲姞浜哄憳
-                                                now,    // 娣诲姞鏃堕棿
-                                                9527L,    // 淇敼浜哄憳
-                                                now,    // 淇敼鏃堕棿
-                                                null,    // 澶囨敞
-                                                kingDeeUtilType.pakIn !=1?2:1
-                                        );
-                                        if( orderService.insert(order)){
-                                            callApiLogSaveOrder(order, kingDeeUtilType, "鍒涘缓閿�鍞��璐у崟鎴愬姛锛佸崟鍙凤細" + billNo, true);
-                                        }
-                                    }
-//                                    String suppCode = jsonObjectNew2.getString("supplier_number"); //渚涘簲鍟�
-                                    String suppCode = null; //渚涘簲鍟�
-                                    JSONArray billEntryArray = jsonObjectNew2.getJSONArray("materialentry");
-                                    for (int k = 0; k < billEntryArray.size(); k++) {
-                                        JSONObject entry = billEntryArray.getJSONObject(k);
-                                        String matnr = entry.getString("material_number"); //鐗╂枡缂栫爜锛屽唴閮⊿KU
-                                        Double anfme = entry.getDouble("qty");//绠辨暟
-                                        Double totalNumItems = 0.0;
-                                        Double Totalvolume = 0.0;//鎬讳綋绉�
-                                        String warehouse = null;//浠撳簱缂栫爜
-                                        String pOrderNo = "1";//閲囪喘鍗曞彿
-                                        String s3 = "1";//瀹㈡埛sku锛堝鎴风紪鍙凤級
-                                        String s2 = "1"; //鏉$爜UPC
-                                        String memo ="1"; //澶囨敞锛堣嫳鏂囨弿杩帮級
-                                        String s1 = "1"; //瀹㈡埛PO
-//                                        Double totalNumItems = entry.getDouble("eap7_decimalfield1");//鎬讳欢鏁�
-//                                        Double Totalvolume = entry.getDouble("eap7_decimalfield2");//鎬讳綋绉�
-//                                        String warehouse = entry.getString("warehouse_number");//浠撳簱缂栫爜
-//                                        String pOrderNo = entry.getString("eap7_textfield3");//閲囪喘鍗曞彿
-//                                        String s3 = entry.getString("eap7_textfield4");//瀹㈡埛sku锛堝鎴风紪鍙凤級
-//                                        String s2 = entry.getString("eap7_textfield5"); //鏉$爜UPC
-//                                        String memo = entry.getString("eap7_textfield6"); //澶囨敞锛堣嫳鏂囨弿杩帮級
-//                                        String s1 = entry.getString("eap7_textfield7"); //瀹㈡埛PO
-                                        String detlId = entry.getString("id"); //鏄庣粏id
-                                        Long seq = entry.getLong("seq"); //鍒嗗綍琛屽彿
-//                                        String
-                                        if(anfme == 0){
-                                            callApiLogSaveOrder(order,kingDeeUtilType, "鍗曟嵁鏁伴噺寮傚父"+matnr, false);
-                                            continue;
-                                        }
-                                        //鐗╂枡缂栫爜
-                                        Mat mat = matService.selectByMatnr(matnr);
-                                        if (Cools.isEmpty(mat)) {
-                                            callApiLogSaveOrder(order,kingDeeUtilType, "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧"+matnr, false);
-                                            continue;
-                                        }
-                                        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;
-                                        }
-                                        LocSupp locSupp = null;
-                                        String supp =null;
-//                                        locSupp = locSuppService.selectByUuid(suppCode);
-//                                        if(locSupp != null){supp = locSupp.getOwner();}
-                                        OrderDetl orderDetl = new OrderDetl();
-                                        orderDetl.sync(mat);
-                                        orderDetl.setThreeCode(detlId);//ERP鏄庣粏id
-                                        orderDetl.setLineNumber(seq);//鍒嗗綍琛屽彿
-                                        orderDetl.setAnfme(anfme);//鎬荤鏁�
-                                        orderDetl.setErpAnfme(anfme);//erp鏁版嵁
-                                        orderDetl.setOrderId(order.getId());
-                                        orderDetl.setOrderNo(order.getOrderNo());//琛ㄥご鍗曟嵁
-                                        orderDetl.setSupp(supp);//渚涘簲鍟嗗悕绉帮紙璐ф簮锛�
-                                        orderDetl.setSuppCode(suppCode);//渚涘簲鍟嗙紪鐮�
-                                        orderDetl.setSku(matnr);//鍐呴儴SKU
-                                        orderDetl.setStandby1(s1);//瀹㈡埛PO
-                                        orderDetl.setStandby2(s2);//鏉$爜UPC
-                                        orderDetl.setStandby3(s3);//瀹㈡埛SKU
-                                        orderDetl.setBoxType1(null); //璐т富鍚嶇О
-                                        orderDetl.setBoxType2(null);//璐т富缂栧彿锛坋rp缁勭粐锛�
-                                        orderDetl.setBoxType3(pOrderNo);//閲囪喘鍗曞彿
-                                        orderDetl.setMemo(memo);//鑻辨枃澶囨敞
-                                        orderDetl.setVolume(Totalvolume);//鎬讳綋绉�
-                                        orderDetl.setSafeQty(totalNumItems);//鎬讳欢鏁�
-                                        orderDetl.setManu(warehouse);//浠撳簱缂栫爜
-                                        orderDetl.setCreateBy(9527L);
-                                        orderDetl.setCreateTime(new Date());
-                                        orderDetl.setUpdateBy(9527L);
-                                        orderDetl.setUpdateTime(new Date());
-                                        orderDetl.setStatus(1);
-                                        orderDetl.setQty(0.0D);
-                                        orderDetlService.insert(orderDetl);
-                                    }
-                                }
-                                // 鏄惁杩樻湁涓嬩竴椤�
-                                boolean lastPage = detData.getBoolean("lastPage");
-                                if (lastPage) {
-                                    hasNext = false;
-                                } else {
-                                    // 涓嬩竴椤�
-                                    int currPage = detData.getIntValue("pageNo");
-                                    detailParam.put("pageNo", currPage + 1);
+                                        String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                                        billNo,    // 璁㈠崟缂栧彿
+                                        createTime.toString(),    // 鍗曟嵁鏃ユ湡
+                                        docType.getDocId(),    // 鍗曟嵁绫诲瀷
+                                        null,    // 椤圭洰缂栧彿
+                                        orderId,    //鏀舵枡鍗昳d
+                                        null,    // 璋冩嫧椤圭洰缂栧彿
+                                        null,    // 鍒濆绁ㄦ嵁鍙�
+                                        null,    // 绁ㄦ嵁鍙�
+                                        null,    // 椤圭洰id
+                                        owner,    // 璐т富
+                                        null,    // 鑱旂郴鏂瑰紡
+                                        null,    // 鎿嶄綔浜哄憳
+                                        null,    // 鍚堣閲戦
+                                        null,    // 浼樻儬鐜�
+                                        null,    // 浼樻儬閲戦
+                                        null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+                                        null,    // 瀹炰粯閲戦
+                                        null,    // 浠樻绫诲瀷
+                                        null,    // 涓氬姟鍛�
+                                        null,    // 缁撶畻澶╂暟
+                                        null,    // 閭垂鏀粯绫诲瀷
+                                        null,    // 閭垂
+                                        null,    // 浠樻鏃堕棿
+                                        null,    // 鍙戣揣鏃堕棿
+                                        null,    // 鐗╂祦鍚嶇О
+                                        null,    // 鐗╂祦鍗曞彿
+                                        1L,    // 璁㈠崟鐘舵��
+                                        1,    // 鐘舵��
+                                        9527L,    // 娣诲姞浜哄憳
+                                        now,    // 娣诲姞鏃堕棿
+                                        9527L,    // 淇敼浜哄憳
+                                        now,    // 淇敼鏃堕棿
+                                        null,    // 澶囨敞
+                                        kingDeeUtilType.pakIn !=1?2:1
+                                );
+                                if (orderService.insert(order)) {
+                                    callApiLogSaveOrder(order, kingDeeUtilType,
+                                            "鍒涘缓鍑哄簱閫�璐у崟鎴愬姛锛佸崟鍙凤細" + billNo, true);
                                 }
                             }
+
+                            // ========= 鐩存帴浠庝富鎺ュ彛鍙栨槑缁� billentry =========
+                            JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry");
+                            if (billEntryArray == null || billEntryArray.isEmpty()) {
+                                continue;
+                            }
+                            for (int k = 0; k < billEntryArray.size(); k++) {
+                                JSONObject entry = billEntryArray.getJSONObject(k);
+                                String matnr = entry.getString("material_number"); //鐗╂枡缂栫爜锛屽唴閮⊿KU
+                                Double anfme = entry.getDouble("eap7_decimalfield");//绠辨暟
+                                Double totalNumItems = entry.getDouble("eap7_decimalfield1");//鎬讳欢鏁�
+                                Double totalVolume = entry.getDouble("eap7_decimalfield2");//鎬讳綋绉�
+                                String warehouse = entry.getString("warehouse_number");//浠撳簱缂栫爜
+                                String pOrderNo = entry.getString("eap7_textfield3");//閲囪喘鍗曞彿
+                                String s3 = entry.getString("eap7_textfield4");//瀹㈡埛sku锛堝鎴风紪鍙凤級
+                                String s2 = entry.getString("eap7_textfield5"); //鏉$爜UPC
+                                String memo = entry.getString("eap7_textfield6"); //澶囨敞锛堣嫳鏂囨弿杩帮級
+                                String s1 = entry.getString("eap7_textfield7"); //瀹㈡埛PO
+                                String detlId = entry.getString("id"); //鏄庣粏id
+                                Long seq = entry.getLong("seq"); //鍒嗗綍琛屽彿
+//                                String suppCode = entry.getString("supplier_number");
+                                String suppCode = null;
+                                if (anfme == null || anfme == 0) {
+                                    callApiLogSaveOrder(order, kingDeeUtilType,
+                                            "鍗曟嵁鏁伴噺寮傚父锛�" + matnr, false);
+                                    continue;
+                                }
+                                // ========= 鐗╂枡鏍¢獙 =========
+                                Mat mat = matService.selectByMatnr(matnr);
+                                if (Cools.isEmpty(mat)) {
+                                    callApiLogSaveOrder(order, kingDeeUtilType,
+                                            "鍟嗗搧涓嶅瓨鍦細" + matnr, false);
+                                    continue;
+                                }
+                                if (mat.getSafeQty() == null || mat.getSafeQty() == 0) {
+                                    callApiLogSaveOrder(order, kingDeeUtilType,
+                                            "妗f绠辨暟閲忓紓甯革細" + matnr, false);
+                                    continue;
+                                }
+                                Double erpAnfme = anfme*mat.getSafeQty();
+                                // ========= 鏄庣粏鍘婚噸 =========
+                                List<OrderDetl> orderDetls =
+                                        orderDetlService.selectByOrderId(order.getId());
+
+                                boolean exists = orderDetls.stream()
+                                        .anyMatch(o -> o.getMatnr().equals(matnr));
+                                if (exists) continue;
+//                                // ========= 渚涘簲鍟� =========
+                                String supp = null;
+//                                LocSupp locSupp = locSuppService.selectByUuid(suppCode);
+//                                if (locSupp != null) {
+//                                    supp = locSupp.getOwner();
+//                                }
+                                // ========= 淇濆瓨鏄庣粏 =========
+                                OrderDetl orderDetl = new OrderDetl();
+                                orderDetl.sync(mat);
+                                orderDetl.setThreeCode(detlId);
+                                orderDetl.setLineNumber(seq);
+                                orderDetl.setAnfme(anfme);
+                                orderDetl.setErpAnfme(erpAnfme);
+                                orderDetl.setOrderId(order.getId());
+                                orderDetl.setOrderNo(order.getOrderNo());
+                                orderDetl.setSupp(supp);
+                                orderDetl.setSuppCode(suppCode);
+                                orderDetl.setSku(matnr);
+                                orderDetl.setStandby1(s1);
+                                orderDetl.setStandby2(s2);
+                                orderDetl.setStandby3(s3);
+                                orderDetl.setBoxType1(owner);
+                                orderDetl.setBoxType2(ownerUuid);
+                                orderDetl.setBoxType3(pOrderNo);
+                                orderDetl.setMemo(memo);
+                                orderDetl.setVolume(totalVolume);
+                                orderDetl.setSafeQty(totalNumItems);
+                                orderDetl.setManu(warehouse);
+                                orderDetl.setCreateBy(9527L);
+                                orderDetl.setCreateTime(new Date());
+                                orderDetl.setUpdateBy(9527L);
+                                orderDetl.setUpdateTime(new Date());
+                                orderDetl.setStatus(1);
+                                orderDetl.setQty(0.0D);
+
+                                orderDetlService.insert(orderDetl);
+                            }
                         }
-                        docTypeService.updateById(docType);
                     }
+                    docType.setUpdateTime(now);
+                    docTypeService.updateById(docType);
                 }
                 //浜у搧妫�楠屽崟
                 else if(kingDeeUtilType.formId.equals("STK_InspectionForm")){
@@ -1125,9 +1137,9 @@
                                 orderDetlService.insert(orderDetl);
                             }
                         }
-                        docType.setUpdateTime(now);
-                        docTypeService.updateById(docType);
                     }
+                    docType.setUpdateTime(now);
+                    docTypeService.updateById(docType);
 
                 }
                 //鐢熶骇棰嗘枡锛岀敓浜цˉ鏂�
@@ -1210,7 +1222,8 @@
                             for (int k = 0; k < billEntryArray.size(); k++) {
                                 JSONObject entry = billEntryArray.getJSONObject(k);
                                 String matnr = entry.getString("material_number"); //鐗╂枡缂栫爜锛屽唴閮⊿KU
-                                Double anfme = entry.getDouble("qty");//绠辨暟
+                                Double anfme = entry.getDouble("qty");//涓暟
+                                Double anfmeBox = 0.0;//绠辨暟
                                 Double totalNumItems = entry.getDouble("eap7_decimalfield1");//鎬讳欢鏁�
                                 Double totalVolume = entry.getDouble("eap7_decimalfield2");//鎬讳綋绉�
                                 String warehouse = entry.getString("warehouse_number");//浠撳簱缂栫爜
@@ -1222,6 +1235,10 @@
                                 String detlId = entry.getString("id"); //鏄庣粏id
                                 Long seq = entry.getLong("seq"); //鍒嗗綍琛屽彿
 //                                String suppCode = entry.getString("supplier_number");
+                                if(anfme == 0){
+                                    callApiLogSaveOrder(order,kingDeeUtilType, "鍗曟嵁鏁伴噺寮傚父"+matnr, false);
+                                    continue;
+                                }
                                 String suppCode = null;
                                 if (anfme == null || anfme == 0) {
                                     callApiLogSaveOrder(order, kingDeeUtilType,
@@ -1235,9 +1252,16 @@
                                             "鐗╂枡妗f涓嶅瓨鍦細" + matnr, false);
                                     continue;
                                 }
+                                if (mat.getSafeQty() == null || mat.getSafeQty() == 0) {
+                                    callApiLogSaveOrder(order, kingDeeUtilType,
+                                            "妗f绠辨暟閲忓紓甯革細" + matnr, false);
+                                    continue;
+                                }
+                                anfmeBox = Math.floor(anfme / mat.getSafeQty());
                                 // ========= 鏄庣粏鍘婚噸 =========
                                 List<OrderDetl> orderDetls =
                                         orderDetlService.selectByOrderId(order.getId());
+
 
                                 boolean exists = orderDetls.stream()
                                         .anyMatch(o -> o.getMatnr().equals(matnr));
@@ -1253,7 +1277,7 @@
                                 orderDetl.sync(mat);
                                 orderDetl.setThreeCode(detlId);
                                 orderDetl.setLineNumber(seq);
-                                orderDetl.setAnfme(anfme);
+                                orderDetl.setAnfme(anfmeBox);
                                 orderDetl.setErpAnfme(anfme);
                                 orderDetl.setOrderId(order.getId());
                                 orderDetl.setOrderNo(order.getOrderNo());
@@ -1278,12 +1302,13 @@
                                 orderDetl.setQty(0.0D);
 
                                 orderDetlService.insert(orderDetl);
+
                             }
                         }
-                        docType.setUpdateTime(now);
-                        docTypeService.updateById(docType);
-                    }
 
+                    }
+                    docType.setUpdateTime(now);
+                    docTypeService.updateById(docType);
                 }
                 //鐢熶骇閫�鏂欏崟PRD_ReturnMtrl
                 else if(kingDeeUtilType.formId.equals("PRD_ReturnMtrl") ) {
@@ -1315,11 +1340,11 @@
                             String orderId = jsonObjectNew.getString("id");
                             // ========= 璐т富鏍¢獙 =========
                             LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid);
-//                            if (locOwner == null) {
-//                                callApiLogSaveOwner(null, kingDeeUtilType,
-//                                        "璐т富妫�绱㈠け璐ワ細" + ownerUuid + " 鍚嶇О锛�" + owner, false);
-//                                continue;
-//                            }
+                            if (locOwner == null) {
+                                callApiLogSaveOwner(null, kingDeeUtilType,
+                                        "璐т富妫�绱㈠け璐ワ細" + ownerUuid + " 鍚嶇О锛�" + owner, false);
+                                continue;
+                            }
 
                             // ========= 鍒涘缓璁㈠崟涓昏〃 =========
                             Order order = orderService.selectByNo(billNo);
@@ -1376,7 +1401,8 @@
                             for (int k = 0; k < billEntryArray.size(); k++) {
                                 JSONObject entry = billEntryArray.getJSONObject(k);
                                 String matnr = entry.getString("material_number"); //鐗╂枡缂栫爜锛屽唴閮⊿KU
-                                Double anfme = entry.getDouble("eap7_decimalfield");//绠辨暟
+                                Double anfme = entry.getDouble("qty");//涓暟
+                                Double anfmeBox = 0.0;
                                 Double totalNumItems = entry.getDouble("eap7_decimalfield1");//鎬讳欢鏁�
                                 Double totalVolume = entry.getDouble("eap7_decimalfield2");//鎬讳綋绉�
                                 String warehouse = entry.getString("warehouse_number");//浠撳簱缂栫爜
@@ -1387,8 +1413,7 @@
                                 String s1 = entry.getString("eap7_textfield7"); //瀹㈡埛PO
                                 String detlId = entry.getString("id"); //鏄庣粏id
                                 Long seq = entry.getLong("seq"); //鍒嗗綍琛屽彿
-//                                String suppCode = entry.getString("supplier_number");
-                                String suppCode = null;
+                                String suppCode = entry.getString("supplier_number");
                                 if (anfme == null || anfme == 0) {
                                     callApiLogSaveOrder(order, kingDeeUtilType,
                                             "鍗曟嵁鏁伴噺寮傚父锛�" + matnr, false);
@@ -1401,6 +1426,12 @@
                                             "鍟嗗搧涓嶅瓨鍦細" + matnr, false);
                                     continue;
                                 }
+                                if (mat.getSafeQty() == null || mat.getSafeQty() == 0) {
+                                    callApiLogSaveOrder(order, kingDeeUtilType,
+                                            "妗f绠辨暟閲忓紓甯革細" + matnr, false);
+                                    continue;
+                                }
+                                anfmeBox = Math.floor(anfme / mat.getSafeQty());
                                 // ========= 鏄庣粏鍘婚噸 =========
                                 List<OrderDetl> orderDetls =
                                         orderDetlService.selectByOrderId(order.getId());
@@ -1410,16 +1441,17 @@
                                 if (exists) continue;
 //                                // ========= 渚涘簲鍟� =========
                                 String supp = null;
-//                                LocSupp locSupp = locSuppService.selectByUuid(suppCode);
-//                                if (locSupp != null) {
-//                                    supp = locSupp.getOwner();
-//                                }
+                                LocSupp locSupp = locSuppService.selectByUuid(suppCode);
+                                if (locSupp != null) {
+                                    supp = locSupp.getOwner();
+                                }
                                 // ========= 淇濆瓨鏄庣粏 =========
+
                                 OrderDetl orderDetl = new OrderDetl();
                                 orderDetl.sync(mat);
                                 orderDetl.setThreeCode(detlId);
                                 orderDetl.setLineNumber(seq);
-                                orderDetl.setAnfme(anfme);
+                                orderDetl.setAnfme(anfmeBox);
                                 orderDetl.setErpAnfme(anfme);
                                 orderDetl.setOrderId(order.getId());
                                 orderDetl.setOrderNo(order.getOrderNo());
@@ -1446,13 +1478,12 @@
                                 orderDetlService.insert(orderDetl);
                             }
                         }
-                        docType.setUpdateTime(now);
-                        docTypeService.updateById(docType);
                     }
-
+                    docType.setUpdateTime(now);
+                    docTypeService.updateById(docType);
                 }
                 //鐢熶骇姹囨姤鍗�
-                else if(kingDeeUtilType.formId.equals("PRD_MORPT")) {
+                else if(kingDeeUtilType.formId.equals("PRD_MORPT") || kingDeeUtilType.formId.equals("OUI_RECEIVEBIll")) {
                     int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize");
                     int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount");
                     int totalPages = (int) Math.ceil((double) totalCount / pageSize);
@@ -1479,6 +1510,7 @@
                             String owner = "鍜屽緱绉戞妧";
                             String ownerUuid = "BU-00001";
                             String orderId = jsonObjectNew.getString("id");
+                            String manuBill = jsonObjectNew.getString("manufacturenun");
                             // ========= 璐т富鏍¢獙 =========
                             LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid);
 //                            if (locOwner == null) {
@@ -1499,7 +1531,7 @@
                                         null,    // 椤圭洰缂栧彿
                                         orderId,    //鏀舵枡鍗昳d
                                         null,    // 璋冩嫧椤圭洰缂栧彿
-                                        null,    // 鍒濆绁ㄦ嵁鍙�
+                                        manuBill,    // 鍒濆绁ㄦ嵁鍙�
                                         null,    // 绁ㄦ嵁鍙�
                                         null,    // 椤圭洰id
                                         owner,    // 璐т富
@@ -1542,7 +1574,8 @@
                             for (int k = 0; k < billEntryArray.size(); k++) {
                                 JSONObject entry = billEntryArray.getJSONObject(k);
                                 String matnr = entry.getString("material_number"); //鐗╂枡缂栫爜锛屽唴閮⊿KU
-                                Double anfme = entry.getDouble("completqty");//绠辨暟
+                                Double anfmeBox = 0.0;//绠辨暟
+                                Double anfme = entry.getDouble("completqty");//涓暟
                                 Double totalNumItems = entry.getDouble("eap7_decimalfield1");//鎬讳欢鏁�
                                 Double totalVolume = entry.getDouble("eap7_decimalfield2");//鎬讳綋绉�
                                 String warehouse = entry.getString("warehouse_number");//浠撳簱缂栫爜
@@ -1553,7 +1586,17 @@
                                 String s1 = entry.getString("eap7_textfield7"); //瀹㈡埛PO
                                 String detlId = entry.getString("id"); //鏄庣粏id
                                 Long seq = entry.getLong("seq"); //鍒嗗綍琛屽彿
-//                                String suppCode = entry.getString("supplier_number");
+                                String manubill = entry.getString("manufacturenun");
+                                String manubillid = entry.getString("orderid_id");
+                                String manuentryid = null;
+                                String manuentry = null;
+                                if(kingDeeUtilType.formId.equals("PRD_MORPT")){
+                                    manuentryid = entry.getString("mftentryid");
+
+                                }else{
+                                    manuentryid = entry.getString("osentryid");
+                                    manuentry = entry.getString("manufacturerow");
+                                }
                                 String suppCode = null;
                                 if (anfme == null || anfme == 0) {
                                     callApiLogSaveOrder(order, kingDeeUtilType,
@@ -1567,6 +1610,7 @@
                                             "鍟嗗搧涓嶅瓨鍦細" + matnr, false);
                                     continue;
                                 }
+                                anfmeBox = Math.floor(anfme / mat.getSafeQty());
                                 // ========= 鏄庣粏鍘婚噸 =========
                                 List<OrderDetl> orderDetls =
                                         orderDetlService.selectByOrderId(order.getId());
@@ -1583,10 +1627,14 @@
                                 // ========= 淇濆瓨鏄庣粏 =========
                                 OrderDetl orderDetl = new OrderDetl();
                                 orderDetl.sync(mat);
+                                orderDetl.setModel(manubillid);//orderid_id
+                                orderDetl.setBrand(manuentryid);//manuentryid
+                                orderDetl.setSpecs(manuentry);//manufacturerow
+                                orderDetl.setColor(manubill);//manufacturenun
                                 orderDetl.setThreeCode(detlId);
                                 orderDetl.setLineNumber(seq);
-                                orderDetl.setAnfme(anfme);
-                                orderDetl.setErpAnfme(anfme);
+                                orderDetl.setAnfme(anfmeBox);
+                                orderDetl.setErpAnfme(anfme);//姹囨姤鍗曚釜鏁�
                                 orderDetl.setOrderId(order.getId());
                                 orderDetl.setOrderNo(order.getOrderNo());
                                 orderDetl.setSupp(supp);
@@ -1612,10 +1660,9 @@
                                 orderDetlService.insert(orderDetl);
                             }
                         }
-                        docType.setUpdateTime(now);
-                        docTypeService.updateById(docType);
                     }
-
+                    docType.setUpdateTime(now);
+                    docTypeService.updateById(docType);
                 }
 
 
@@ -1625,6 +1672,176 @@
                 return FAIL.setMsg(e.getMessage());
             } finally {
 
+            }
+        }
+        return SUCCESS;
+    }
+
+    public synchronized ReturnT<String> syncMaterialData(){
+        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
+        //璇诲彇token
+        ErpSecret erpSecret = erpSecretService.selectOne(new EntityWrapper<ErpSecret>().eq("account_id", accountId));
+        for(KingDeeUtilType kingDeeUtilType : KingDeeUtilType.values()) {
+            if (!kingDeeUtilType.formId.equals("BD_MATERIAL")) {
+                continue;
+            }
+            DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", kingDeeUtilType.desc));
+            if (Cools.isEmpty(docType) && !kingDeeUtilType.formId.equals("BD_MATERIAL")) {
+                docType = docTypeService.selectOrAdd(kingDeeUtilType.desc, kingDeeUtilType.pakIn.equals(1));
+            }
+            //鏉′欢鍜岄渶瑕佽幏寰楃殑缁撴灉鎷兼帴
+            JSONObject jsonObject = new JSONObject();
+            String path = null;
+            Date now = new Date();
+            String latestUpdateTime = sdf1.format(docType.getUpdateTime());
+            switch (kingDeeUtilType.formId) {
+                case "BD_MATERIAL": //鐗╂枡鍚屾
+                    jsonObject.put("id", null);//id
+                    jsonObject.put("number", null);//缂栫爜
+                    jsonObject.put("createorg_number", null);//鍒涘缓缁勭粐
+                    jsonObject.put("start_createtime", "2025-01-01 00:00:00");//鍒涘缓璧峰
+                    jsonObject.put("end_createtime", sdf1.format(now));//鍒涘缓鎴
+                    jsonObject.put("start_modifytime", latestUpdateTime);//鏇存柊璧峰
+                    jsonObject.put("end_modifytime", sdf1.format(now));//鏇存柊鎴
+                    jsonObject.put("start_approvedate", "2025-01-01");//瀹℃牳璧峰
+                    jsonObject.put("end_approvedate", sdf2.format(now));//瀹℃牳鎴
+                    jsonObject.put("status", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
+                    path = matAddress;
+                    break;
+            }
+            if (path == null) {
+                continue;
+            }
+            JSONObject jsonObject1 = new JSONObject();
+            jsonObject1.put("data", jsonObject);
+            jsonObject1.put("pageSize", 20);
+            jsonObject1.put("pageNo", 1);
+            String add = jsonObject1.toJSONString();
+            //涓婃姤
+            String response = "";
+            boolean success = false;
+            if (path == null) {
+                continue;
+            }
+            try {
+                //鑾峰彇Cookie鍊�
+                HashMap<String, Object> headers = new HashMap<>();
+                headers.put("accesstoken", erpSecret.getAccessToken());
+                headers.put("x-acgw-identity", xAcfwIdentity);  // 鑷畾涔夎姹傚ご
+                response = new HttpHandler.Builder()
+                        .setHeaders(headers)
+                        .setUri(URL)
+                        .setPath(path)
+                        .setJson(add)
+                        .build()
+                        .doPost();
+                JSONObject jsonResponse = JSON.parseObject(response);
+                if (jsonResponse.getString("errorCode").equals("401")) {
+                    log.error("妫�绱㈠け璐ラ敊璇俊鎭細{}", jsonResponse.getString("message"));
+                    loginAuthenticationHandler.start();
+                    continue;
+                }
+                JSONArray data = jsonResponse.getJSONObject("data").getJSONArray("rows");
+                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 totalPages = (int) Math.ceil((double) totalCount / pageSize);
+
+                    for (int page = 1; page <= totalPages; page++) {
+                        jsonObject1.put("pageNo", page);
+                        add = jsonObject1.toJSONString();
+                        // 閲嶆柊鍙戣捣璇锋眰浠ヨ幏鍙栬椤电殑鏁版嵁
+                        response = new HttpHandler.Builder()
+                                .setHeaders(headers)
+                                .setUri(URL)
+                                .setPath(path)
+                                .setJson(add)
+                                .build()
+                                .doPost();
+
+                        jsonResponse = JSON.parseObject(response);
+                        data = jsonResponse.getJSONObject("data").getJSONArray("rows");
+                        for (int j = 0; j < data.size(); j++) {
+                            JSONObject jsonObjectNew = data.getJSONObject(j);
+                            Date modifyTime = sdf1.parse(jsonObjectNew.get("modifytime").toString());
+                            String matnr = jsonObjectNew.get("number").toString();
+                            String name = jsonObjectNew.get("name").toString();
+                            String createTime = jsonObjectNew.get("createtime").toString();
+                            Double height = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield9");
+                            Double width = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield8");
+                            Double length = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield7");
+                            Double grossweight = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield6");
+                            Double netweight = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield");
+                            Double unit = getDecimalFieldAsDouble(jsonObjectNew, "eap7_decimalfield2");
+                            // 鐢熸垚鍟嗗搧妗f
+                            Double height1 = height * 10;
+                            Double width1 = width * 10;
+                            Double length1 = length * 10;
+                            Mat mat = matService.selectByMatnr(matnr);
+                            if (mat == null) {
+                                mat = new Mat();
+                                mat.setMatnr(matnr);
+                                mat.setMaktx(name);
+                                mat.setTagId(tag.getId());
+                                mat.setWeight(grossweight);//鍑�閲�
+                                mat.setUnits(netweight);//姣涢噸
+                                mat.setSafeQty(unit);//
+                                mat.setManLength(length1);
+                                mat.setHeight(height1);
+                                mat.setWidth(width1);
+                                mat.setCreateTime(sdf1.parse(createTime));
+                                mat.setUpdateTime(modifyTime);
+                                mat.setStatus(1);
+                                if (!matService.insert(mat)) {
+                                    callApiLogSaveMat(mat, kingDeeUtilType, "鍚屾鏂扮墿鏂欏嚭閿欙紒" + mat, false);
+                                    log.info("鍚屾鏂扮墿鏂欏嚭閿欙紒鍙傛暟锛歔{}]銆乕{}]", mat, jsonObjectNew);
+                                } else {
+                                    callApiLogSaveMat(mat, kingDeeUtilType, "鍚屾鏂扮墿鏂欐垚鍔燂紒", true);
+                                    success = true;
+                                }
+                            } else {
+                                boolean isUpdated = false;
+                                if (mat.getUpdateTime().compareTo(modifyTime) != 0) {
+                                    // 鏇存柊瀛楁
+                                    if (!mat.getMaktx().equals(name)) mat.setMaktx(name);
+                                    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);
+                                    if (mat.getManLength().compareTo(length) != 0) mat.setManLength(length1);
+                                    if (mat.getHeight().compareTo(height) != 0) mat.setHeight(height1);
+                                    if (mat.getWidth().compareTo(width) != 0) mat.setWidth(width1);
+                                    if (mat.getCreateTime().compareTo(sdf1.parse(createTime)) != 0)
+                                        mat.setCreateTime(sdf1.parse(createTime));
+                                    mat.setUpdateTime(modifyTime);
+                                    isUpdated = true;
+                                }
+                                // 鎵ц鏇存柊鎿嶄綔
+                                if (isUpdated) {
+                                    if (!matService.updateById(mat)) {
+                                        callApiLogSaveMat(mat, kingDeeUtilType, "鏇存柊鐗╂枡鍑洪敊锛�" + mat, false);
+                                        log.info("鏇存柊鐗╂枡[鍟嗗搧缂栧彿锛歿}], 鏇存柊澶辫触锛�", mat.getMatnr());
+                                    } else {
+                                        callApiLogSaveMat(mat, kingDeeUtilType, "鏇存柊鐗╂枡鎴愬姛锛�", true);
+                                        success = true;
+                                        log.info("鏇存柊鐗╂枡[鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    if (success) {
+                        docType.setUpdateTime(now);
+                        docTypeService.updateById(docType);
+                    }
+                }
+            }catch (Exception e) {
+                log.error("fail", e);
+                return FAIL.setMsg(e.getMessage());
             }
         }
         return SUCCESS;
@@ -1656,5 +1873,19 @@
                 "鍗曟嵁缂栧彿锛�" + order.getOrderNo() +  "銆佺姸鎬侊細" + order.getStatus$(),
                 response, bool);
     }
+    public Double getDecimalFieldAsDouble(JSONObject jsonObject, String fieldName) {
+        Object field = jsonObject.get(fieldName);
+
+        if (field instanceof BigDecimal) {
+            return ((BigDecimal) field).doubleValue();
+        } else if (field instanceof Integer) {
+            return ((Integer) field).doubleValue();
+        } else if (field instanceof Double) {
+            return (Double) field;
+        } else {
+            return 0.0; // 榛樿鍊�
+        }
+    }
+
 
 }
\ No newline at end of file

--
Gitblit v1.9.1