From 10c441b49c936ff93a549112b31330042605b857 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期三, 26 十一月 2025 14:11:25 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java | 286 ++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 183 insertions(+), 103 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..f14f8e0 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;
@@ -112,7 +115,7 @@
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:宸插鏍竇
+ jsonObject.put("status", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
path = matAddress;
break;
case "BD_RRGANIZATION": //渚涘簲鍟嗗悓姝�
@@ -125,12 +128,13 @@
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("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
- jsonObject.put("start_auditdate", null);//id
- jsonObject.put("end_auditdate", null);
+ jsonObject.put("start_auditdate", "2025-11-25 00:00:00");
+ jsonObject.put("end_auditdate", sdf1.format(now));
jsonObject.put("org_number", null);
jsonObject.put("supplier_number", null);
path = imPurreceiveBillAddress;
@@ -193,11 +197,17 @@
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("grossweight").toString()).doubleValue() : 0.0;
- Double height = jsonObjectNew.get("height") != null ? new BigDecimal(jsonObjectNew.get("height").toString()).doubleValue() : 0.0;
- Double width = jsonObjectNew.get("width") != null ? new BigDecimal(jsonObjectNew.get("width").toString()).doubleValue() : 0.0;
- Double length = jsonObjectNew.get("length") != null ? new BigDecimal(jsonObjectNew.get("length").toString()).doubleValue() : 0.0;
-
+ 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;
+ // ---- 鎺掑簭閫昏緫 ----
+ List<Double> dims = Arrays.asList(height, width, length);
+ dims.sort(Double::compareTo); // 鍗囧簭鎺掑垪锛氭渶灏忋�佷腑闂淬�佹渶澶�
+ Double min = dims.get(0)*10;
+ Double mid = dims.get(1)*10;
+ Double max = dims.get(2)*10;
// 鐢熸垚鍟嗗搧妗f
Mat mat = matService.selectByMatnr(matnr);
if (mat == null) {
@@ -205,10 +215,11 @@
mat.setMatnr(matnr);
mat.setMaktx(name);
mat.setTagId(tag.getId());
- mat.setWeight(grossweight);
- mat.setManLength(length);
- mat.setHeight(height);
- mat.setWidth(width);
+ mat.setWeight(grossweight);//鍑�閲�
+ mat.setUnits(netweight);//姣涢噸
+ mat.setManLength(max);
+ mat.setHeight(min);
+ mat.setWidth(mid);
mat.setCreateTime(sdf1.parse(createTime));
mat.setUpdateTime(modifyTime);
mat.setStatus(1);
@@ -318,7 +329,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 +349,162 @@
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) {
+ callApiLogSaveOwner(locOwner,kingDeeUtilType, "璐т富妫�绱㈠け璐ワ紝璇峰厛娣诲姞瀵瑰簲璐т富缂栧彿锛�"+ownerUuid+"鍚嶇О"+owner, false);continue;
+ }
+ } else{
+ callApiLogSaveOwner(locOwner,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, // 澶囨敞
+ kingDeeUtilType.pakIn !=1?2:1
+ );
+ 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"); //渚涘簲鍟�
+ 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.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);
@@ -461,10 +536,15 @@
"璐т富缂栧彿锛�" + locSupp.getOwnerUuid() + "銆佽揣涓诲悕绉帮細" + locSupp.getOwner(),
response, bool);
}
+ public void callApiLogSaveOwner(LocOwner locOwner, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) {
+ apiLogService.save("鑾峰彇"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL,
+ "璐т富缂栧彿锛�" + locOwner.getOwnerUuid() + "銆佽揣涓诲悕绉帮細" + locOwner.getOwner(),
+ response, bool);
+ }
public void callApiLogSaveOrder(Order order, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) {
apiLogService.save("鑾峰彇"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL,
- "鍗曟嵁缂栧彿锛�" + order.getId() + "銆佺姸鎬侊細" + order.getStatus$(),
+ "鍗曟嵁缂栧彿锛�" + order.getOrderNo() + "銆佺姸鎬侊細" + order.getStatus$(),
response, bool);
}
--
Gitblit v1.9.1