From da05dda40512832ec3a8a160ca3cd9ab6d3d36e4 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期二, 25 十一月 2025 12:07:37 +0800
Subject: [PATCH] #erp收料单对接
---
src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java | 3
src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java | 2
src/main/resources/application.yml | 2
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java | 246 +++++++++++++++++++++++++++++++------------------
4 files changed, 160 insertions(+), 93 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 82cd51a..78a0c28 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
@@ -47,6 +47,9 @@
@Value("${erp.address.impurreceivebilladdress}")
//鏀舵枡鍗曟煡璇�
private String imPurreceiveBillAddress;
+ @Value("${erp.address.impurreceivebilldetl}")
+ //杩涗粨閫氱煡鍗�
+ private String imPurreceiveBillDetlAddress;
@Autowired
private ApiLogService apiLogService;
@@ -125,9 +128,11 @@
path = orgAddress;
break;
case "PUR_RECEIVEBIll": //宸插鏍告敹鏂欏崟鏌ヨ
- jsonObject.put("start_biztime", latestUpdateTime);//涓氬姟璧峰鏃ユ湡
+// jsonObject.put("start_biztime", latestUpdateTime);//涓氬姟璧峰鏃ユ湡
+ jsonObject.put("start_biztime", "2025-01-01 00:00:00");//涓氬姟璧峰鏃ユ湡
+
jsonObject.put("end_biztime", sdf1.format(now));//涓氬姟缁撴潫鏃ユ湡
- jsonObject.put("billno", null);
+ jsonObject.put("billno", Arrays.asList("CGSL-251023-000027","CGSL-250811-000028"));
jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
jsonObject.put("start_auditdate", null);//id
jsonObject.put("end_auditdate", null);
@@ -318,7 +323,7 @@
}
}
}
- else {
+ else if(kingDeeUtilType.formId.equals("PUR_RECEIVEBIll")){
int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize");
int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount");
int totalPages = (int) Math.ceil((double) totalCount / pageSize);
@@ -338,98 +343,157 @@
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;
+ String billNo = jsonObjectNew.get("billno").toString();//鍗曟嵁缂栧彿
+ String owner = jsonObjectNew.get("org_name").toString();//璐т富鍚嶇О
+ String ownerUuid = jsonObjectNew.get("org_number").toString();//erp璐т富缂栧彿
+ JSONObject detailParam = new JSONObject();
+ JSONObject dataObj = new JSONObject();
+ dataObj.put("billno", billNo);
+ detailParam.put("data", dataObj);
+ 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(imPurreceiveBillDetlAddress)
+ .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 (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, // 椤圭洰缂栧彿
+ null, //椤圭洰鍚嶇О 瀹㈡埛PO鍙� 鏆傛椂涓嶇煡閬撳瓧娈垫槸鍝釜
+ 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 // 澶囨敞
+ );
+ if( orderService.insert(order)){
+ callApiLogSaveOrder(order, kingDeeUtilType, "鍒涘缓鍏ュ簱鍗曟垚鍔燂紒鍗曞彿锛�" + billNo, true);
+ }
+ }
+ JSONArray billEntryArray = jsonObjectNew2.getJSONArray("billentry");
+ 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 suppCode = entry.getString("supplier_number"); //渚涘簲鍟�
+ //鐗╂枡缂栫爜
+ 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.setAnfme(anfme);//鎬荤鏁�
+ 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(owner); //璐т富鍚嶇О
+ orderDetl.setBoxType2(ownerUuid);//璐т富缂栧彿锛坋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);
}
}
- if (sign){
- continue;
+ // 鏄惁杩樻湁涓嬩竴椤�
+ boolean lastPage = detData.getBoolean("lastPage");
+ if (lastPage) {
+ hasNext = false;
+ } else {
+ // 涓嬩竴椤�
+ int currPage = detData.getIntValue("pageNo");
+ detailParam.put("pageNo", currPage + 1);
}
- 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);
diff --git a/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java b/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
index ee768a1..9faab5a 100644
--- a/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
+++ b/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
@@ -297,12 +297,13 @@
}
}
- public static void insertOrder(boolean sign,Order order){
+ public static boolean insertOrder(boolean sign, Order order){
try{
implement(OrderMethodVo.INSERT_ORDER).invoke(getOrderInAndOutType(sign),order);
} catch (Exception e) {
throw new CoolException(e.getCause().getMessage());
}
+ return sign;
}
public static void insertOrder(String sign,Order order){
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 ef7b400..51e0322 100644
--- a/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
+++ b/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
@@ -2,7 +2,7 @@
public enum KingDeeUtilType {
BD_MATERIAL(0, "鐗╂枡妗f","BD_MATERIAL","","","",1),
- BD_RRGANIZATION(2, "璐т富","BD_RRGANIZATION","","","",1),
+ BD_RRGANIZATION(2, "渚涘簲鍟�","BD_RRGANIZATION","","","",1),
PUR_RECEIVEBIll(3, "鏀舵枡鍗�","PUR_RECEIVEBIll","","","",1),
// STK_InStock(1, "閲囪喘鍏ュ簱鍗�","STK_InStock","FRealQty","","",1),
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 719aa5c..a78fc18 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -110,6 +110,8 @@
orgaddress: /kapi/v2/basedata/bd_supplier/query
#鏀舵枡鍗�-鏌ヨ
impurreceivebilladdress: /kapi/v2/im/im_purreceivebill/getList
+ #杩涗粨閫氱煡鍗�
+ impurreceivebilldetl: kapi/v2/eap7/im/im_purreceivebill/query
#缁撴灉涓婃姤锛堜繚瀛橈級鍗曞湴鍧�
outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
#缁撴灉涓婃姤锛堟彁浜わ級鍗曞湴鍧�
--
Gitblit v1.9.1