From 4881f66b288c535c3b9da41ee07c9609bacb8481 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 22 十二月 2025 17:01:49 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java | 145 +++++++++++++++++++++++++++++++++--------------
1 files changed, 101 insertions(+), 44 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 84ccd13..ef2d311 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
@@ -153,11 +153,11 @@
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);
@@ -171,7 +171,7 @@
break;
case "SAL_RETURNSTOCK"://閿�鍞��璐�
path = scpSalreturn;
- jsonObject.put("modify_starttime", "2025-11-25 00:00:00");//涓氬姟璧峰鏃ユ湡
+ jsonObject.put("modify_starttime", latestUpdateTime);//涓氬姟璧峰鏃ユ湡
jsonObject.put("billstatus", "B");//鍗曟嵁鐘舵��
jsonObject.put("modify_endtime", sdf1.format(now));//涓氬姟璧峰鏃ユ湡
jsonObject.put("billtype_number", "im_SalOutBill_STD_BT_S_R");//鍗曟嵁绫诲瀷
@@ -180,7 +180,7 @@
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));
@@ -195,7 +195,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));
@@ -208,7 +208,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));
@@ -218,13 +218,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;
}
@@ -263,7 +263,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");
@@ -290,11 +290,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;
@@ -307,6 +308,7 @@
mat.setTagId(tag.getId());
mat.setWeight(grossweight);//鍑�閲�
mat.setUnits(netweight);//姣涢噸
+ mat.setSafeQty(unit);//
mat.setManLength(length1);
mat.setHeight(height1);
mat.setWidth(width1);
@@ -326,6 +328,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);
@@ -419,6 +423,8 @@
}
}
}
+ docType.setUpdateTime(now);
+ docTypeService.updateById(docType);
}
//鏀舵枡鍗�
else if(kingDeeUtilType.formId.equals("PUR_RECEIVEBIll")){
@@ -552,6 +558,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;
@@ -573,7 +585,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);//渚涘簲鍟嗗悕绉帮紙璐ф簮锛�
@@ -609,8 +621,9 @@
}
}
}
- docTypeService.updateById(docType);
}
+ docType.setUpdateTime(now);
+ docTypeService.updateById(docType);
}
//閿�鍞嚭搴�
else if(kingDeeUtilType.formId.equals("SAL_OUTSTOCK")){
@@ -728,6 +741,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());
@@ -747,7 +766,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);
@@ -869,9 +888,7 @@
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 = 1.0;//绠辨暟
-
+ Double anfme = entry.getDouble("eap7_decimalfield");//绠辨暟
Double totalNumItems = entry.getDouble("eap7_decimalfield1");//鎬讳欢鏁�
Double totalVolume = entry.getDouble("eap7_decimalfield2");//鎬讳綋绉�
String warehouse = entry.getString("warehouse_number");//浠撳簱缂栫爜
@@ -896,6 +913,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());
@@ -915,7 +938,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);
@@ -941,9 +964,9 @@
orderDetlService.insert(orderDetl);
}
}
- docType.setUpdateTime(now);
- docTypeService.updateById(docType);
}
+ docType.setUpdateTime(now);
+ docTypeService.updateById(docType);
}
//浜у搧妫�楠屽崟
else if(kingDeeUtilType.formId.equals("STK_InspectionForm")){
@@ -1106,9 +1129,9 @@
orderDetlService.insert(orderDetl);
}
}
- docType.setUpdateTime(now);
- docTypeService.updateById(docType);
}
+ docType.setUpdateTime(now);
+ docTypeService.updateById(docType);
}
//鐢熶骇棰嗘枡锛岀敓浜цˉ鏂�
@@ -1191,7 +1214,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");//浠撳簱缂栫爜
@@ -1203,6 +1227,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,
@@ -1216,9 +1244,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));
@@ -1234,7 +1269,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());
@@ -1259,12 +1294,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") ) {
@@ -1357,9 +1393,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 = 1.0;//绠辨暟
-
+ 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");//浠撳簱缂栫爜
@@ -1383,6 +1418,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());
@@ -1397,11 +1438,12 @@
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());
@@ -1428,10 +1470,9 @@
orderDetlService.insert(orderDetl);
}
}
- docType.setUpdateTime(now);
- docTypeService.updateById(docType);
}
-
+ docType.setUpdateTime(now);
+ docTypeService.updateById(docType);
}
//鐢熶骇姹囨姤鍗�
else if(kingDeeUtilType.formId.equals("PRD_MORPT")) {
@@ -1461,6 +1502,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) {
@@ -1481,7 +1523,7 @@
null, // 椤圭洰缂栧彿
orderId, //鏀舵枡鍗昳d
null, // 璋冩嫧椤圭洰缂栧彿
- null, // 鍒濆绁ㄦ嵁鍙�
+ manuBill, // 鍒濆绁ㄦ嵁鍙�
null, // 绁ㄦ嵁鍙�
null, // 椤圭洰id
owner, // 璐т富
@@ -1524,7 +1566,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");//浠撳簱缂栫爜
@@ -1549,6 +1592,7 @@
"鍟嗗搧涓嶅瓨鍦細" + matnr, false);
continue;
}
+ anfmeBox = Math.floor(anfme / mat.getSafeQty());
// ========= 鏄庣粏鍘婚噸 =========
List<OrderDetl> orderDetls =
orderDetlService.selectByOrderId(order.getId());
@@ -1567,8 +1611,8 @@
orderDetl.sync(mat);
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);
@@ -1594,10 +1638,9 @@
orderDetlService.insert(orderDetl);
}
}
- docType.setUpdateTime(now);
- docTypeService.updateById(docType);
}
-
+ docType.setUpdateTime(now);
+ docTypeService.updateById(docType);
}
@@ -1638,5 +1681,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