From 85f8eed3fa9f52a68dff30ea8bdee00fbc1d5938 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 22 十二月 2025 12:48:14 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 154 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
index c8f8fdd..5334a08 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
@@ -9,6 +9,7 @@
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.impl.ErpSecretServiceImpl;
+import com.zy.asrs.service.impl.MatServiceImpl;
import com.zy.asrs.service.impl.OrderDetlPakinServiceImpl;
import com.zy.asrs.service.impl.OrderDetlServiceImpl;
import com.zy.asrs.task.AbstractHandler;
@@ -36,6 +37,12 @@
@Value("${erp.address.imPurinbillAdd}")
private String imPurinbillAdd;
+ @Value("${erp.address.imOtheroutbill}")
+ private String imOtheroutbill;
+ @Value("${erp.address.imOtherinbill}")
+ private String imOtherinbill;
+ @Value("${erp.address.imProductinbillReport}")
+ private String imProductinbillReport;
@Autowired
private OrderService orderService;
@@ -57,6 +64,9 @@
@Value("${erp.login.xAcfwIdentity}")
private String xAcfwIdentity;
String path;
+ @Autowired
+ private MatServiceImpl matService;
+
@Transactional
public ReturnT<String> start(Order order) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -82,7 +92,8 @@
private JSONObject buildRequestParams(Order order, KingDeeUtilType kingDeeUtilType, SimpleDateFormat sdf1, SimpleDateFormat sdf2) {
List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",order.getOrderNo()));
- if(kingDeeUtilType == null){
+ if (kingDeeUtilType == null || kingDeeUtilType.formId == null) {
+ log.warn("kingDeeUtilType 涓虹┖锛屽凡璺宠繃鏈鍚屾锛�");
return null;
}
switch (kingDeeUtilType.formId) {
@@ -92,17 +103,18 @@
JSONArray billentryArray = new JSONArray(); // 鐢ㄤ簬瀛樺偍 billentry 瀵硅薄
String suppCode = null; // 渚涘簲鍟�
String boxType2 = null; // 璐т富/璐ф簮
-
- // 閬嶅巻璁㈠崟璇︽儏
+ Date now = new Date();
for (OrderDetl orderDetl : orderDetlList) {
suppCode = orderDetl.getSuppCode();
boxType2 = orderDetl.getBoxType2();
if (orderDetl.getQty() == 0) {
continue;
}
+ Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
+ Double qty = orderDetl.getQty()*mat.getSafeQty();
+// Double qtytotal = orderDetl.getAnfme()*mat.getSafeQty();
// JSONArray idArr = new JSONArray();
-// idArr.add(0L); // 鉁� 娉ㄦ剰蹇呴』鏄� Long 绫诲瀷鐨� 0L
-// Double reportNum = orderDetl.getQty() - orderDetl.getWorkQty();//涓婃姤鏁伴噺鍑忓幓宸蹭笂鎶ユ暟閲�
+// idArr.add(0L);
// 鍒涘缓 billentry_lk 瀵硅薄
JSONObject billentryLk = new JSONObject()
.fluentPut("id", 0L)
@@ -110,8 +122,8 @@
.fluentPut("billentry_lk_stableid", 677270092232273922L)
.fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName())) // 涓诲崟ID
.fluentPut("billentry_lk_sid", Long.parseLong(orderDetl.getThreeCode())) // 鏄庣粏ID
- .fluentPut("billentry_lk_baseqty_old", orderDetl.getErpAnfme()) // ERP鏁伴噺
- .fluentPut("billentry_lk_baseqty", orderDetl.getQty()); // 浣滀笟鏁伴噺
+ .fluentPut("billentry_lk_baseqty_old", orderDetl.getAnfme()) // ERP鏁伴噺
+ .fluentPut("billentry_lk_baseqty", qty); // 浣滀笟鏁伴噺
billentryLkArray.add(billentryLk);
// 鍒涘缓 billentry 瀵硅薄锛屽~鍏呯己澶辩殑瀛楁
JSONObject billentry = new JSONObject()
@@ -121,14 +133,12 @@
.fluentPut("invtype_number", "110") // 搴撳瓨绫诲瀷
.fluentPut("outinvstatus_number", "110")
.fluentPut("linetype_number", "010") // 琛屽彿绫诲瀷
- .fluentPut("qty", orderDetl.getQty()) // 鏁伴噺
+ .fluentPut("qty", qty) // 鏁伴噺
.fluentPut("material_number", orderDetl.getMatnr()) // 鐗╂枡缂栧彿
.fluentPut("billentry_lk", billentryLkArray);
+
billentryArray.add(billentry);
-// orderDetl.setWorkQty(orderDetl.getQty());
-// orderDetlService.updateById(orderDetl);//灏嗕笂鎶ユ暟瑕嗙洊鍒板巻鍙蹭笂
}
- Date now = new Date();
return new JSONObject()
.fluentPut("data", new JSONArray(Arrays.asList(
new JSONObject()
@@ -146,9 +156,134 @@
.fluentPut("supplier_number", suppCode) // 渚涘簲鍟嗙紪鍙�
.fluentPut("billentry", billentryArray) // 灏� billentry 鏁扮粍娣诲姞鍒拌姹傚弬鏁�
)));
+ case "PRD_MORPT": // 鐢熶骇姹囨姤鍗�
+ JSONArray billentryLkArray1 = new JSONArray();
+ JSONArray billentryArray1 = new JSONArray(); // 鐢ㄤ簬瀛樺偍 billentry 瀵硅薄
+ String suppCode1 = null; // 渚涘簲鍟�
+ String boxType21 = null; // 璐т富/璐ф簮
+ Date now1 = new Date();
+ path = imProductinbillReport;
+ for (OrderDetl orderDetl : orderDetlList) {
+ suppCode1 = orderDetl.getSuppCode();
+ boxType21 = orderDetl.getBoxType2();
+ if (orderDetl.getQty() == 0) {
+ continue;
+ }
+ Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
+ Double qty = orderDetl.getQty()*mat.getSafeQty();
+// Double qtytotal = orderDetl.getAnfme()*mat.getSafeQty();
+// JSONArray idArr = new JSONArray();
+// idArr.add(0L);
+ // 鍒涘缓 billentry_lk 瀵硅薄
+ JSONObject billentryLk = new JSONObject()
+ .fluentPut("id", 0L)
+ .fluentPut("seq", orderDetl.getLineNumber())
+ .fluentPut("billentry_lk_stableid", 677270092232273922L)
+ .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName())) // 涓诲崟ID
+ .fluentPut("billentry_lk_sid", Long.parseLong(orderDetl.getThreeCode())) // 鏄庣粏ID
+ .fluentPut("billentry_lk_baseqty_old", orderDetl.getAnfme()) // ERP鏁伴噺
+ .fluentPut("billentry_lk_baseqty", qty); // 浣滀笟鏁伴噺
+ billentryLkArray1.add(billentryLk);
+ // 鍒涘缓 billentry 瀵硅薄锛屽~鍏呯己澶辩殑瀛楁
+ JSONObject billentry = new JSONObject()
+ .fluentPut("id", 0L)
+ .fluentPut("warehouse_number", orderDetl.getManu()) // 浠撳簱缂栧彿
+ .fluentPut("invstatus_number", "110") // 搴撳瓨鐘舵��
+ .fluentPut("invtype_number", "110") // 搴撳瓨绫诲瀷
+ .fluentPut("outinvstatus_number", "110")
+ .fluentPut("linetype_number", "010") // 琛屽彿绫诲瀷
+ .fluentPut("qty", qty) // 鏁伴噺
+ .fluentPut("material_number", orderDetl.getMatnr()) // 鐗╂枡缂栧彿
+ .fluentPut("billentry_lk", billentryLkArray1);
+ billentryArray1.add(billentry);
+ }
+ return new JSONObject()
+ .fluentPut("data", new JSONArray(Arrays.asList(
+ new JSONObject()
+ .fluentPut("billno", UUID.randomUUID().toString().replace("-", "").substring(0, 16))
+ .fluentPut("trdbillno", UUID.randomUUID().toString().replace("-", ""))
+ .fluentPut("billtype_number", "im_PurInBill_STD_BT_S")
+ .fluentPut("biztime", sdf1.format(now1))
+ .fluentPut("exratedate", sdf1.format(now1))
+ .fluentPut("bizorg_number", boxType21)
+ .fluentPut("biztype_number", "110") // 璐т富/璐ф簮
+ .fluentPut("org_number", boxType21) // 璐т富/璐ф簮
+ .fluentPut("paymode", "CREDIT")
+ .fluentPut("invscheme_number", "110")
+ .fluentPut("billtype_number", "im_PurInBill_STD_BT_S")
+ .fluentPut("supplier_number", suppCode1) // 渚涘簲鍟嗙紪鍙�
+ .fluentPut("billentry", billentryArray1) // 灏� billentry 鏁扮粍娣诲姞鍒拌姹傚弬鏁�
+ )));
+ case "STK_MISCELLANEOUS": // 鍏朵粬鍏ュ簱鍗�
+ path = imOtherinbill;
+ billentryArray = new JSONArray();
+ for (OrderDetl orderDetl : orderDetlList) {
+ if (orderDetl.getQty() == 0) {
+ continue;
+ }
+ Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
+ Double qty = orderDetl.getQty()*mat.getSafeQty();
+ JSONObject billentry = new JSONObject()
+ .fluentPut("id", 0L)
+ .fluentPut("material_number", orderDetl.getMatnr()) // 鐗╂枡缂栫爜
+ .fluentPut("qty", qty) // 鏁伴噺
+ .fluentPut("warehouse_number", "CK001") // 浠撳簱
+ .fluentPut("invstatus_number", "110")
+ .fluentPut("invtype_number", "110")
+ .fluentPut("outinvstatus_number", "110")
+ .fluentPut("outinvtype_number", "110")
+ .fluentPut("linetype_number", "010");
+ billentryArray.add(billentry);
+ }
+ Date nowMis = new Date();
+ return new JSONObject()
+ .fluentPut("data", new JSONArray(Arrays.asList(
+ new JSONObject()
+// .fluentPut("id", 0L)
+ .fluentPut("billno", order.getOrderNo())
+// .fluentPut("bookdate", sdf1.format(nowMis))
+ .fluentPut("biztime", sdf1.format(nowMis))
+// .fluentPut("biztype_number", "354")
+// .fluentPut("billtype_number", "im_OtherInBill_STD_BT_S")
+// .fluentPut("org_number", "BU-00001")
+// .fluentPut("invscheme_number", "354")
+ .fluentPut("billentry", billentryArray)
+ )));
+ case "STK_MisDelivery": // 鍏朵粬鍑哄簱鍗�
+ path = imOtheroutbill;
+ billentryArray = new JSONArray();
+ Date nowOut = new Date();
+ for (OrderDetl orderDetl : orderDetlList) {
+ if (orderDetl.getQty() == 0) {
+ continue;
+ }
+ JSONObject billentry = new JSONObject()
+ .fluentPut("id", 0L)
+ .fluentPut("material_number", orderDetl.getMatnr()) // 鐗╂枡缂栫爜
+ .fluentPut("qty", orderDetl.getQty()) // 鏁伴噺
+ .fluentPut("warehouse_number", "CK001") // 浠撳簱
+ .fluentPut("invstatus_number", "110")
+ .fluentPut("invtype_number", "110")
+ .fluentPut("outinvstatus_number", "110")
+ .fluentPut("outinvtype_number", "110")
+ .fluentPut("linetype_number", "010");
+ billentryArray.add(billentry);
+ }
+ return new JSONObject()
+ .fluentPut("data", new JSONArray(Arrays.asList(
+ new JSONObject()
+// .fluentPut("id", 0L)
+ .fluentPut("billno", order.getOrderNo())
+// .fluentPut("bookdate", sdf1.format(nowMis))
+ .fluentPut("biztime", sdf1.format(nowOut))
+ .fluentPut("biztype_number", "354")
+ .fluentPut("billtype_number", "im_OtherInBill_STD_BT_S")
+ .fluentPut("org_number", "BU-00001")
+ .fluentPut("invscheme_number", "354")
+ .fluentPut("billentry", billentryArray)
+ )));
default:
- // 榛樿澶勭悊锛氬彲浠ユ姏鍑哄紓甯告垨杩斿洖绌哄璞�
throw new IllegalArgumentException("Unsupported formId: " + kingDeeUtilType.formId);
}
}
@@ -157,11 +292,9 @@
private ReturnT<String> sendRequestAndProcessResponse(Order order, ErpSecret erpSecret, JSONObject add) {
String response = "";
boolean success = false;
-
try {
// 璁剧疆璇锋眰澶�
HashMap<String, Object> headers = buildRequestHeaders(erpSecret);
-
// 鍙戦�佽姹傦紝灏� JSONObject 杞崲涓� String
response = new HttpHandler.Builder()
.setHeaders(headers)
@@ -170,10 +303,8 @@
.setJson(add.toJSONString()) // 灏� JSONObject 杞崲涓� String
.build()
.doPost();
-
// 瑙f瀽鍝嶅簲
JSONObject jsonResponse = JSON.parseObject(response);
-
// 鍒ゆ柇鏄惁鍥犱负 token 杩囨湡 (errorCode = 401)
if ("401".equals(jsonResponse.getString("errorCode"))) {
log.error("璁よ瘉澶辫触锛屽皾璇曢噸鏂拌幏鍙� Token");
@@ -190,18 +321,15 @@
.build()
.doPost();
}
-
// 瑙f瀽杩斿洖鐨勫搷搴�
JSONObject data = jsonResponse.getJSONObject("data");
String errorCode = jsonResponse.getString("errorCode");
boolean status = jsonResponse.getBooleanValue("status");
-
// 妫�鏌ユ帴鍙h皟鐢ㄧ殑鏁翠綋鐘舵��
if ("0".equals(errorCode) && status) {
// 鑾峰彇鎴愬姛涓庡け璐ョ殑鏁伴噺
int successCount = data.getInteger("successCount");
int failCount = data.getInteger("failCount");
-
if (failCount == 0) {
success = true;
log.info("鎺ュ彛璋冪敤鎴愬姛锛屾垚鍔熺殑鎿嶄綔鏁伴噺: {}", successCount);
@@ -211,10 +339,12 @@
JSONObject resultItem = resultArray.getJSONObject(i);
String billNo = resultItem.getString("number"); // 鑾峰彇杩斿洖鐨勫崟鎹彿
String billId = resultItem.getString("id"); // 鑾峰彇杩斿洖鐨処D
- order.setNumber(billId);
- orderService.updateById(order);
- log.info("璁㈠崟鍙� {} 涓庤繑鍥炵殑鍗曟嵁鍙峰尮閰嶏紝璁剧疆璁㈠崟 ID 涓� {}", order.getOrderNo(), billId);
-
+ // 鍒ゆ柇杩斿洖鐨勫崟鎹彿涓庤鍗曞彿鏄惁涓�鑷�
+ if (billNo != null && billNo.equals(order.getOrderNo())) {
+ // 濡傛灉涓�鑷达紝璁剧疆璁㈠崟鐨� number
+ order.setNumber(billId);
+ log.info("璁㈠崟鍙� {} 涓庤繑鍥炵殑鍗曟嵁鍙峰尮閰嶏紝璁剧疆璁㈠崟 ID 涓� {}", order.getOrderNo(), billId);
+ }
}
} else {
log.error("鎺ュ彛璋冪敤澶辫触锛屽け璐ョ殑鎿嶄綔鏁伴噺: {}", failCount);
@@ -242,7 +372,6 @@
// 淇濆瓨鎺ュ彛鏃ュ織
saveApiLog(add, response, success);
}
-
return success ? SUCCESS : FAIL;
}
@@ -256,7 +385,7 @@
private void saveApiLog(JSONObject add, String response, boolean success) {
try {
apiLogService.save(
- "杩涗粨閫氱煡鍗曚笂鎶ユ柊澧�",
+ "鍏ュ簱涓婃姤鏂板",
URL + path,
null,
"127.0.0.1",
--
Gitblit v1.9.1