From 08d1f864b8b0baf443dca52b6534aab68448081a Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期四, 20 十一月 2025 12:50:29 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jshdasrs' into jshdasrs

---
 src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java             |    2 
 src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java |  315 +++++++++++++++++++++++++---------------------------
 2 files changed, 153 insertions(+), 164 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 8547d04..2193811 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
@@ -98,42 +98,41 @@
             JSONObject jsonObject = new JSONObject();
             String path = null;
             Date now = new Date();
-            //鐗╂枡妗f鏌ヨ
-            if(kingDeeUtilType.formId.equals("BD_MATERIAL")){
-//                Mat latestMat = matService.selectLatest();
-                String latestUpdateTime = sdf1.format(docType.getUpdateTime());
-//                Tag tag = tagService.selectByName("鍏ㄩ儴", 1);
-                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("B", "C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
-                path = matAddress;
-            }
-            else if(kingDeeUtilType.formId.equals("BD_RRGANIZATION")){
-                jsonObject.put("start_createtime", "2025-01-01 00:00:00");//id
-                jsonObject.put("end_createtime", sdf1.format(now));
-                jsonObject.put("id", null);
-                jsonObject.put("number", null);
-                jsonObject.put("createorg_number", null);
-                jsonObject.put("status", Arrays.asList("B", "C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
-                path = orgAddress;
-            }
-            else if(kingDeeUtilType.formId.equals("PUR_RECEIVEBIll")){
-                jsonObject.put("start_biztime", "2025-01-01 00:00:00");//涓氬姟璧峰鏃ユ湡
-                jsonObject.put("end_biztime", sdf1.format(now));//涓氬姟缁撴潫鏃ユ湡
-                jsonObject.put("billno", null);
-                jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
-                jsonObject.put("start_auditdate",null);//id
-                jsonObject.put("end_auditdate", null);
-                jsonObject.put("org_number", null);
-                jsonObject.put("supplier_number", null);
-                path = imPurreceiveBillAddress;
+            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("B", "C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
+                    path = matAddress;
+                    break;
+                case "BD_RRGANIZATION": //璐т富鍚屾
+                    jsonObject.put("start_createtime", "2025-01-01 00:00:00");//id
+                    jsonObject.put("end_createtime", sdf1.format(now));
+                    jsonObject.put("id", null);
+                    jsonObject.put("number", null);
+                    jsonObject.put("createorg_number", null);
+                    jsonObject.put("status", Arrays.asList("B", "C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
+                    path = orgAddress;
+                    break;
+                case "PUR_RECEIVEBIll": //宸插鏍告敹鏂欏崟鏌ヨ
+                    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", null);//id
+                    jsonObject.put("end_auditdate", null);
+                    jsonObject.put("org_number", null);
+                    jsonObject.put("supplier_number", null);
+                    path = imPurreceiveBillAddress;
+                    break;
             }
             JSONObject jsonObject1 = new JSONObject();
             jsonObject1.put("data", jsonObject);
@@ -319,133 +318,123 @@
                         }
                     }
                 }
-//                else {
-//                    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 updateTime = sdf1.parse(jsonObjectNew.get("modifytime").toString());
-//                            String ownerUuid = jsonObjectNew.get("number").toString();
-//                            String owner = jsonObjectNew.get("name").toString();
-//                            Date createTime =  sdf1.parse(jsonObjectNew.get("createtime").toString());
-//                            String billNo = jsonObjectNew.get("billno").toString();
-//
-//                            Order order = OrderInAndOutUtil.selectByNo(kingDeeUtilType.pakIn == 1, billNo);
-////                        Order order = orderService.selectByNo(jsonArray.get(0).toString());
-////                            LocOwner locOwner = null;
-////                            if (!Cools.isEmpty(1)) {
-////                                locOwner = locOwnerService.selectById(1);
-////                            } else {
-////                                locOwner = locOwnerService.selectById(1);
-////                            }
-//                            if (Cools.isEmpty(order)) {
-//                                // 鍗曟嵁涓绘。
-//                                order = new Order(
-//                                        String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
-//                                        billNo,    // 璁㈠崟缂栧彿
-//                                        createTime,    // 鍗曟嵁鏃ユ湡
-//                                        docType.getDocId(),    // 鍗曟嵁绫诲瀷
-//                                        null,    // 椤圭洰缂栧彿
-//                                        "1",    //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
-//                                        null,    // 璋冩嫧椤圭洰缂栧彿
-//                                        null,    // 鍒濆绁ㄦ嵁鍙�
-//                                        null,    // 绁ㄦ嵁鍙�
-//                                        null,    // 瀹㈡埛缂栧彿
-//                                        locOwner.getOwner(),    // 瀹㈡埛
-//                                        null,    // 鑱旂郴鏂瑰紡
-//                                        null,    // 鎿嶄綔浜哄憳
-//                                        null,    // 鍚堣閲戦
-//                                        null,    // 浼樻儬鐜�
-//                                        null,    // 浼樻儬閲戦
-//                                        null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
-//                                        null,    // 瀹炰粯閲戦
-//                                        null,    // 浠樻绫诲瀷
-//                                        null,    // 涓氬姟鍛�
-//                                        null,    // 缁撶畻澶╂暟
-//                                        null,    // 閭垂鏀粯绫诲瀷
-//                                        null,    // 閭垂
-//                                        null,    // 浠樻鏃堕棿
-//                                        null,    // 鍙戣揣鏃堕棿
-//                                        null,    // 鐗╂祦鍚嶇О
-//                                        null,    // 鐗╂祦鍗曞彿
-//                                        1L,    // 璁㈠崟鐘舵��
-//                                        1,    // 鐘舵��
-//                                        9527L,    // 娣诲姞浜哄憳
-//                                        now,    // 娣诲姞鏃堕棿
-//                                        9527L,    // 淇敼浜哄憳
-//                                        now,    // 淇敼鏃堕棿
-//                                        null    // 澶囨敞
-//                                );
-//                                OrderInAndOutUtil.insertOrder(kingDeeUtilType.pakIn == 1, order);
-//
-////                            if (!orderService.insert(order)) {
-////                                if (!jsonDate.equals(docType.getCreateTime())){
-////                                    callApiLogSaveOrder(order,kingDeeUtilType, "鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�"+order, false);
-////                                }
-////                                continue;
-//////                                throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
-////                            }
-//                            }
-//                            //鐗╂枡缂栫爜
-//                            Mat mat = matService.selectByMatnr(jsonArray.get(2).toString());
-//                            if (Cools.isEmpty(mat)) {
-//                                if (!jsonDate.equals(docType.getCreateTime())){
-//                                    callApiLogSaveOrder(order,kingDeeUtilType, "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧"+jsonArray.get(2).toString(), false);
-//                                }
-//                                continue;
-//                            }
-////                        OrderDetl orderDetl1 = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", jsonArray.get(0).toString()).eq("matnr", jsonArray.get(2).toString()));
-////                        if (!Cools.isEmpty(orderDetl1)) {
-////                            continue;
-////                        }
-//                            Order order1 = OrderInAndOutUtil.selectByNo(kingDeeUtilType.pakIn == 1, jsonArray.get(0).toString());
-//                            List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(kingDeeUtilType.pakIn == 1, order1.getId());
-//                            boolean sign = false;
-//                            for (OrderDetl orderDetl : orderDetls){
-//                                if (orderDetl.getMatnr().equals( jsonArray.get(2).toString())){
-//                                    sign = true;
-//                                    break;
-//                                }
-//                            }
-//                            if (sign){
-//                                continue;
-//                            }
-//                            OrderDetl orderDetl = new OrderDetl();
-//                            orderDetl.sync(mat);
-//                            orderDetl.setBatch(null);
-//                            orderDetl.setAnfme(Double.parseDouble(jsonArray.get(5).toString()));
-//                            orderDetl.setOrderId(order.getId());
-//                            orderDetl.setOrderNo(order.getOrderNo());
-//                            orderDetl.setCreateBy(9527L);
-//                            orderDetl.setCreateTime(new Date());
-//                            orderDetl.setUpdateBy(9527L);
-//                            orderDetl.setUpdateTime(new Date());
-//                            orderDetl.setStatus(1);
-//                            orderDetl.setQty(0.0D);
-////                        if (!orderDetlService.insert(orderDetl)) {
-////                            callApiLogSaveOrder(order,kingDeeUtilType, "鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�!璁㈠崟鍙凤細"+order.getOrderNo(), false);
-//////                            throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
-////                        }
-//                            OrderInAndOutUtil.insertOrderDetl(kingDeeUtilType.pakIn == 1,order,orderDetl);
-//                        }
-//                        docTypeService.updateById(docType);
-//                    }
-//                }
+                else {
+                    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 updateTime = sdf1.parse(jsonObjectNew.get("modifytime").toString());
+                            String ownerUuid = jsonObjectNew.get("supplier_number").toString();//璐т富缂栫爜
+                            String owner = jsonObjectNew.get("supplier_name").toString();//璐т富鍚嶇О
+                            Date createTime =  sdf1.parse(jsonObjectNew.get("createtime").toString());
+                            String billNo = jsonObjectNew.get("billno").toString();
+
+                            Order order = OrderInAndOutUtil.selectByNo(kingDeeUtilType.pakIn == 1, billNo);//妫�绱㈠崟鎹�
+                            LocOwner locOwner = null;
+                            if (ownerUuid != null) {
+                                locOwner = locOwnerService.selectByUuid(ownerUuid);
+                                if (locOwner == null) {
+                                    callApiLogSaveOrder(order,kingDeeUtilType, "璐т富妫�绱㈠け璐ワ紝璇峰厛娣诲姞瀵瑰簲璐т富缂栧彿锛�"+ownerUuid, false);continue;
+                                }
+                            } else{
+                                callApiLogSaveOrder(order,kingDeeUtilType, "璐т富妫�绱㈠け璐ワ紝鏈煡璇㈠埌璐т富缂栧彿锛�", false);continue;
+                            }
+                            if (Cools.isEmpty(order)) {
+                                // 鍗曟嵁涓绘。
+                                order = new Order(
+                                        String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                                        billNo,    // 璁㈠崟缂栧彿
+                                        createTime.toString(),    // 鍗曟嵁鏃ユ湡
+                                        docType.getDocId(),    // 鍗曟嵁绫诲瀷
+                                        null,    // 椤圭洰缂栧彿
+                                        "1",    //椤圭洰鍚嶇О 瀹㈡埛PO鍙�  鏆傛椂涓嶇煡閬撳瓧娈垫槸鍝釜
+                                        null,    // 璋冩嫧椤圭洰缂栧彿
+                                        null,    // 鍒濆绁ㄦ嵁鍙�
+                                        null,    // 绁ㄦ嵁鍙�
+                                        null,    // 椤圭洰id
+                                        locOwner.getOwner(),    // 瀹㈡埛
+                                        null,    // 鑱旂郴鏂瑰紡
+                                        null,    // 鎿嶄綔浜哄憳
+                                        null,    // 鍚堣閲戦
+                                        null,    // 浼樻儬鐜�
+                                        null,    // 浼樻儬閲戦
+                                        null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+                                        null,    // 瀹炰粯閲戦
+                                        null,    // 浠樻绫诲瀷
+                                        null,    // 涓氬姟鍛�
+                                        null,    // 缁撶畻澶╂暟
+                                        null,    // 閭垂鏀粯绫诲瀷
+                                        null,    // 閭垂
+                                        null,    // 浠樻鏃堕棿
+                                        null,    // 鍙戣揣鏃堕棿
+                                        null,    // 鐗╂祦鍚嶇О
+                                        null,    // 鐗╂祦鍗曞彿
+                                        1L,    // 璁㈠崟鐘舵��
+                                        1,    // 鐘舵��
+                                        9527L,    // 娣诲姞浜哄憳
+                                        now,    // 娣诲姞鏃堕棿
+                                        9527L,    // 淇敼浜哄憳
+                                        now,    // 淇敼鏃堕棿
+                                        null    // 澶囨敞
+                                );
+                                OrderInAndOutUtil.insertOrder(kingDeeUtilType.pakIn == 1, order);
+                            }
+                            JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry");
+                            for (int k = 0; k < billEntryArray.size(); k++) {
+                                JSONObject entry = billEntryArray.getJSONObject(k);
+                                String matnr = entry.getString("material_number");
+                                Double qty = entry.getDouble("qty");
+                                //鐗╂枡缂栫爜
+                                Mat mat = matService.selectByMatnr(matnr);
+                                if (Cools.isEmpty(mat)) {
+                                    callApiLogSaveOrder(order,kingDeeUtilType, "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧"+matnr, false);
+                                    continue;
+                                }
+                                Order order1 = OrderInAndOutUtil.selectByNo(kingDeeUtilType.pakIn == 1, billNo);
+                                List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(kingDeeUtilType.pakIn == 1, order1.getId());
+                                boolean sign = false;
+                                for (OrderDetl orderDetl : orderDetls){
+                                    if (orderDetl.getMatnr().equals(matnr)){
+                                        sign = true;
+                                        break;
+                                    }
+                                }
+                                if (sign){
+                                    continue;
+                                }
+                                OrderDetl orderDetl = new OrderDetl();
+                                orderDetl.sync(mat);
+                                orderDetl.setBatch(null);
+                                orderDetl.setAnfme(qty);
+                                orderDetl.setOrderId(order.getId());
+                                orderDetl.setOrderNo(order.getOrderNo());
+                                orderDetl.setCreateBy(9527L);
+                                orderDetl.setCreateTime(new Date());
+                                orderDetl.setUpdateBy(9527L);
+                                orderDetl.setUpdateTime(new Date());
+                                orderDetl.setStatus(1);
+                                orderDetl.setQty(0.0D);
+                                OrderInAndOutUtil.insertOrderDetl(kingDeeUtilType.pakIn == 1,order,orderDetl);
+                            }
+                        }
+                        docTypeService.updateById(docType);
+                    }
+                }
             } catch (Exception e) {
                 log.error("fail", e);
 //            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
diff --git a/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java b/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
index 495c94a..ef7b400 100644
--- a/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
+++ b/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
@@ -3,7 +3,7 @@
 public enum KingDeeUtilType {
     BD_MATERIAL(0, "鐗╂枡妗f","BD_MATERIAL","","","",1),
     BD_RRGANIZATION(2, "璐т富","BD_RRGANIZATION","","","",1),
-//    PUR_RECEIVEBIll(3, "鏀舵枡鍗�","PUR_RECEIVEBIll","","","",1),
+    PUR_RECEIVEBIll(3, "鏀舵枡鍗�","PUR_RECEIVEBIll","","","",1),
 
     //    STK_InStock(1, "閲囪喘鍏ュ簱鍗�","STK_InStock","FRealQty","","",1),
 //    PUR_MRB(2, "閲囪喘閫�鏂欏崟","PUR_MRB","FRMREALQTY","","",1),

--
Gitblit v1.9.1