From c039b42920df96629bc570883cd498e58276e643 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 05 一月 2026 14:59:43 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java | 194 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 191 insertions(+), 3 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 7a19ef6..713a851 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
@@ -71,7 +71,9 @@
@Value("${erp.address.qcppManuinspec}")
//浜у搧妫�楠屽崟
private String qcppManuinspec;
-
+ @Value("${erp.address.omOutsourcereceiptQuery}")
+ //濮斿鍏ュ簱鍗�
+ private String omOutsourcereceiptQuery;
@Autowired
private ApiLogService apiLogService;
@@ -162,6 +164,12 @@
jsonObject.put("org_number", null);
jsonObject.put("supplier_number", null);
path = imPurreceiveBillAddress;
+ break;
+ case "OUI_RECEIVEBIll"://濮斿鍏ュ簱鍗�
+ jsonObject.put("billstatus", Arrays.asList("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
+ jsonObject.put("auditdate_start", latestUpdateTime);
+ jsonObject.put("auditdate_end", sdf1.format(now));
+ path = omOutsourcereceiptQuery;
break;
case "SAL_OUTSTOCK"://閿�鍞嚭搴撳崟鏌ヨ
path = imSaloutbill;
@@ -1475,7 +1483,7 @@
docTypeService.updateById(docType);
}
//鐢熶骇姹囨姤鍗�
- else if(kingDeeUtilType.formId.equals("PRD_MORPT")) {
+ else if(kingDeeUtilType.formId.equals("PRD_MORPT") || kingDeeUtilType.formId.equals("OUI_RECEIVEBIll")) {
int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize");
int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount");
int totalPages = (int) Math.ceil((double) totalCount / pageSize);
@@ -1580,7 +1588,15 @@
Long seq = entry.getLong("seq"); //鍒嗗綍琛屽彿
String manubill = entry.getString("manufacturenun");
String manubillid = entry.getString("orderid_id");
- String manuentryid = entry.getString("mftentryid");
+ String manuentryid = null;
+ String manuentry = null;
+ if(kingDeeUtilType.formId.equals("PRD_MORPT")){
+ manuentryid = entry.getString("mftentryid");
+
+ }else{
+ manuentryid = entry.getString("osentryid");
+ manuentry = entry.getString("manufacturerow");
+ }
String suppCode = null;
if (anfme == null || anfme == 0) {
callApiLogSaveOrder(order, kingDeeUtilType,
@@ -1613,6 +1629,8 @@
orderDetl.sync(mat);
orderDetl.setModel(manubillid);//orderid_id
orderDetl.setBrand(manuentryid);//manuentryid
+ orderDetl.setSpecs(manuentry);//manufacturerow
+ orderDetl.setColor(manubill);//manufacturenun
orderDetl.setThreeCode(detlId);
orderDetl.setLineNumber(seq);
orderDetl.setAnfme(anfmeBox);
@@ -1659,6 +1677,176 @@
return SUCCESS;
}
+ public synchronized ReturnT<String> syncMaterialData(){
+ SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
+ //璇诲彇token
+ ErpSecret erpSecret = erpSecretService.selectOne(new EntityWrapper<ErpSecret>().eq("account_id", accountId));
+ for(KingDeeUtilType kingDeeUtilType : KingDeeUtilType.values()) {
+ if (!kingDeeUtilType.formId.equals("BD_MATERIAL")) {
+ continue;
+ }
+ DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", kingDeeUtilType.desc));
+ if (Cools.isEmpty(docType) && !kingDeeUtilType.formId.equals("BD_MATERIAL")) {
+ docType = docTypeService.selectOrAdd(kingDeeUtilType.desc, kingDeeUtilType.pakIn.equals(1));
+ }
+ //鏉′欢鍜岄渶瑕佽幏寰楃殑缁撴灉鎷兼帴
+ JSONObject jsonObject = new JSONObject();
+ String path = null;
+ Date now = new Date();
+ 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("C"));//鏁版嵁鐘舵�� [A:鏆傚瓨, B:宸叉彁浜�, C:宸插鏍竇
+ path = matAddress;
+ break;
+ }
+ if (path == null) {
+ continue;
+ }
+ JSONObject jsonObject1 = new JSONObject();
+ jsonObject1.put("data", jsonObject);
+ jsonObject1.put("pageSize", 20);
+ jsonObject1.put("pageNo", 1);
+ String add = jsonObject1.toJSONString();
+ //涓婃姤
+ String response = "";
+ boolean success = false;
+ if (path == null) {
+ continue;
+ }
+ try {
+ //鑾峰彇Cookie鍊�
+ HashMap<String, Object> headers = new HashMap<>();
+ headers.put("accesstoken", erpSecret.getAccessToken());
+ headers.put("x-acgw-identity", xAcfwIdentity); // 鑷畾涔夎姹傚ご
+ response = new HttpHandler.Builder()
+ .setHeaders(headers)
+ .setUri(URL)
+ .setPath(path)
+ .setJson(add)
+ .build()
+ .doPost();
+ JSONObject jsonResponse = JSON.parseObject(response);
+ if (jsonResponse.getString("errorCode").equals("401")) {
+ log.error("妫�绱㈠け璐ラ敊璇俊鎭細{}", jsonResponse.getString("message"));
+ loginAuthenticationHandler.start();
+ continue;
+ }
+ JSONArray data = jsonResponse.getJSONObject("data").getJSONArray("rows");
+ if (data.size() <= 0) continue;
+ //鍟嗗搧妗f鍚屾
+ if (kingDeeUtilType.formId.equals("BD_MATERIAL")) {
+ Tag tag = tagService.selectByName("鍏ㄩ儴", 1);
+ // 澶勭悊鍒嗛〉锛氭牴鎹繑鍥炵殑totalCount鍜宲ageSize璁$畻椤垫暟
+ 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 modifyTime = sdf1.parse(jsonObjectNew.get("modifytime").toString());
+ String matnr = jsonObjectNew.get("number").toString();
+ String name = jsonObjectNew.get("name").toString();
+ String createTime = jsonObjectNew.get("createtime").toString();
+ 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;
+ Double length1 = length * 10;
+ Mat mat = matService.selectByMatnr(matnr);
+ if (mat == null) {
+ mat = new Mat();
+ mat.setMatnr(matnr);
+ mat.setMaktx(name);
+ mat.setTagId(tag.getId());
+ mat.setWeight(grossweight);//鍑�閲�
+ mat.setUnits(netweight);//姣涢噸
+ mat.setSafeQty(unit);//
+ mat.setManLength(length1);
+ mat.setHeight(height1);
+ mat.setWidth(width1);
+ mat.setCreateTime(sdf1.parse(createTime));
+ mat.setUpdateTime(modifyTime);
+ mat.setStatus(1);
+ if (!matService.insert(mat)) {
+ callApiLogSaveMat(mat, kingDeeUtilType, "鍚屾鏂扮墿鏂欏嚭閿欙紒" + mat, false);
+ log.info("鍚屾鏂扮墿鏂欏嚭閿欙紒鍙傛暟锛歔{}]銆乕{}]", mat, jsonObjectNew);
+ } else {
+ callApiLogSaveMat(mat, kingDeeUtilType, "鍚屾鏂扮墿鏂欐垚鍔燂紒", true);
+ success = true;
+ }
+ } else {
+ boolean isUpdated = false;
+ if (mat.getUpdateTime().compareTo(modifyTime) != 0) {
+ // 鏇存柊瀛楁
+ 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);
+ if (mat.getCreateTime().compareTo(sdf1.parse(createTime)) != 0)
+ mat.setCreateTime(sdf1.parse(createTime));
+ mat.setUpdateTime(modifyTime);
+ isUpdated = true;
+ }
+ // 鎵ц鏇存柊鎿嶄綔
+ if (isUpdated) {
+ if (!matService.updateById(mat)) {
+ callApiLogSaveMat(mat, kingDeeUtilType, "鏇存柊鐗╂枡鍑洪敊锛�" + mat, false);
+ log.info("鏇存柊鐗╂枡[鍟嗗搧缂栧彿锛歿}], 鏇存柊澶辫触锛�", mat.getMatnr());
+ } else {
+ callApiLogSaveMat(mat, kingDeeUtilType, "鏇存柊鐗╂枡鎴愬姛锛�", true);
+ success = true;
+ log.info("鏇存柊鐗╂枡[鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
+ }
+ }
+ }
+ }
+ }
+ if (success) {
+ docType.setUpdateTime(now);
+ docTypeService.updateById(docType);
+ }
+ }
+ }catch (Exception e) {
+ log.error("fail", e);
+ return FAIL.setMsg(e.getMessage());
+ }
+ }
+ return SUCCESS;
+ }
+
public void callApiLogSaveMat(Mat mat, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) {
apiLogService.save("鑾峰彇"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL,
"鐗╂枡缂栧彿锛�" + mat.getMatnr() + "銆佺墿鏂欏悕绉帮細" + mat.getMaktx() + "銆佹瘺閲嶏細" + mat.getWeight()
--
Gitblit v1.9.1