From 58dc66a9d999c7d350e1ee4bf32b8d85b6e20e00 Mon Sep 17 00:00:00 2001 From: ZY <zc857179121@qq.com> Date: 星期六, 21 九月 2024 10:32:42 +0800 Subject: [PATCH] 逻辑调整 --- src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java | 342 ++++++++++++++++++++++++++------------------------------ 1 files changed, 158 insertions(+), 184 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 da0cc5c..c98e298 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 @@ -9,11 +9,13 @@ import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.kingdee.*; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; +import com.zy.erp.kingdee.entity.param.InFormIdParam; +import com.zy.erp.kingdee.enums.KingDeeUtilType; import com.zy.common.utils.HttpHandler; +import com.zy.erp.kingdee.utils.KingDeeUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -21,8 +23,6 @@ import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.HashMap; @@ -66,45 +66,15 @@ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //鐧诲綍閲戣澏 ReturnT<String> start = loginAuthenticationHandler.start(); - for(int i=0;i<14;i++) { + for(KingDeeUtilType kingDeeUtilType : KingDeeUtilType.values()) { InFormIdParam inFormIdParam = new InFormIdParam(); - //瀵瑰簲璁㈠崟绫诲瀷ID - int docName=0; - //鏁伴噺瀛楁 - String anfme =null; - switch (i){ - //鐗╂枡妗f - case 0 : inFormIdParam.setFormId("BD_MATERIAL"); break; - //閲囪喘鍏ュ簱 - case 1 : inFormIdParam.setFormId("STK_InStock");docName=13;anfme ="FRealQty"; break; - //閲囪喘閫�鏂� - case 2 : inFormIdParam.setFormId("PUR_MRB");docName=21;anfme ="FRMREALQTY"; break; - //鐢熶骇棰嗘枡 - case 3 : inFormIdParam.setFormId("PRD_PickMtrl");docName=22;anfme ="FActualQty"; break; - //鐢熶骇閫�鏂� - case 4 : inFormIdParam.setFormId("PRD_ReturnMtrl");docName=24;anfme ="FQty"; break; - //鐢熶骇琛ユ枡 - case 5 : inFormIdParam.setFormId("PRD_FeedMtrl");docName=25;anfme ="FActualQty"; break; - //鐩存帴璋冩嫧鍗� - case 6 : inFormIdParam.setFormId("STK_TransferDirect");docName=26;anfme ="FQty"; break; - //鐩樼泩鍗� - case 7 : inFormIdParam.setFormId("STK_StockCountGain");docName=28;anfme ="FGainQty"; break; - //鐩樹簭鍗� - case 8 : inFormIdParam.setFormId("STK_StockCountLoss");docName=29;anfme ="FLossQty"; break; - //鍏朵粬鍑哄簱 - case 9 : inFormIdParam.setFormId("STK_MisDelivery");docName=30;anfme ="FQty"; break; - //绠�鍗曠敓浜ч鏂� - case 10 : inFormIdParam.setFormId("SP_PickMtrl");docName=31;anfme ="FActualQty"; break; - //绠�鍗曠敓浜ч��鏂� - case 11 : inFormIdParam.setFormId("SP_ReturnMtrl");docName=32;anfme ="FQty"; break; - //閿�鍞嚭搴� - case 12 : inFormIdParam.setFormId("SAL_OUTSTOCK");docName=14;anfme ="FRealQty"; break; - //閿�鍞��璐� - case 13 : inFormIdParam.setFormId("SAL_RETURNSTOCK");docName=33;anfme ="FRealQty"; break; + 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)); } + inFormIdParam.setFormId(kingDeeUtilType.formId); inFormIdParam.setLimit(100); inFormIdParam.setStartRow("0"); - Date time=new Date(); String FDocumentStatus=null; //鏉′欢鍜岄渶瑕佽幏寰楃殑缁撴灉鎷兼帴 @@ -113,13 +83,11 @@ jsonObject.put("Limit", inFormIdParam.getLimit()); jsonObject.put("StartRow", inFormIdParam.getStartRow()); //鐗╂枡妗f鏌ヨ - if(i==0){ - Tag tag = tagService.selectById(20); - //鏈�鏂版椂闂� - time=tag.getCreateTime(); + if(kingDeeUtilType.formId.equals("BD_MATERIAL")){ + Tag tag = tagService.selectByName("鍏ㄩ儴", 1); //鐗╂枡鐘舵�� FUseOrgId .FNumber FDocumentStatus="C"; - jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(time)+"' and FDocumentStatus='"+FDocumentStatus+"' and FUseOrgId .FNumber='201'"); + jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(tag.getUpdateTime())+"' and FDocumentStatus='"+FDocumentStatus+"' and FUseOrgId .FNumber='100'"); jsonObject.put("FieldKeys", "FName,FNumber,FCreateDate,FSpecification,FDocumentStatus"); // FName : 鐗╂枡鍚嶇О 锛� // FNumber 锛氱墿鏂欑紪鍙凤紱 @@ -128,11 +96,10 @@ // FDocumentStatus 锛氱墿鏂欑姸鎬� }else{ //鑾峰彇鏈�鏂版椂闂� - DocType docType= docTypeService.selectById(docName); //鍗曟嵁鐘舵�� FDocumentStatus="B"; - jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(docType.getCreateTime())+"' and FStockId.Fname='绔嬪簱'"+" and FDocumentStatus='"+FDocumentStatus+"'"); - jsonObject.put("FieldKeys", "FBillNo,FCreateDate,FMaterialId.FNumber,FMaterialId.FName,FMaterialId.FSpecification,"+anfme+",FDocumentStatus"); + jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(docType.getCreateTime())+"'"+" and FStockId.Fname='绔嬪簱'"+" and FDocumentStatus='"+FDocumentStatus+"'"); + jsonObject.put("FieldKeys", "FBillNo,FCreateDate,FMaterialId.FNumber,FMaterialId.FName,FMaterialId.FSpecification,"+kingDeeUtilType.anfme+",FDocumentStatus"); // FBillNo :鍗曟嵁缂栧彿锛� // FCreateDate 锛氬崟鎹垱寤烘椂闂达紱 // FMaterialId.FNumber : 鐗╂枡缂栫爜锛� @@ -160,157 +127,164 @@ .build() .doPost(); JSONArray data = JSON.parseArray(response); - if(data.size()>0) { - if (data.getJSONArray(0).get(0).toString().length()<20) { - if (i == 0) { - for (int j = 0; j < data.size(); j++) { - JSONArray jsonArray = data.getJSONArray(j); - //鐢熸垚鍟嗗搧妗f - //鍟嗗搧缂栧彿 - Mat mat = matService.selectByMatnr(jsonArray.get(1).toString()); - if (mat == null) { - mat = new Mat(); - Tag tag = new Tag(); - mat.setMatnr(jsonArray.get(1).toString()); - mat.setMaktx(jsonArray.get(0).toString()); - mat.setSpecs(jsonArray.get(3).toString());//瑙勬牸 - mat.setTagId(20L); - //瀵圭編鍥芥椂闂磋繘琛岃浆鎹� - DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); - DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; - LocalDateTime dateTime = LocalDateTime.parse(jsonArray.get(2).toString(), formatter); - String format = dateFormat.format(dateTime); - Date date = sdf.parse(format); - mat.setCreateTime(date);//鍟嗗搧鍒涘缓鏃堕棿 - mat.setUpdateTime(new Date()); - mat.setStatus(1); - //鏈�鏂版姄鍙栧晢鍝佹椂闂� - tag.setCreateTime(date); - tagService.update(tag, new EntityWrapper<Tag>().eq("id", 20)); - if (!matService.insert(mat)) { - throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); - } else { - log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr()); - } - } + if(data.size()<=0) continue; + if (data.getJSONArray(0).get(0).toString().length()>=20) continue; + if (kingDeeUtilType.formId.equals("BD_MATERIAL")) {//鐗╂枡妗f + Tag tag = tagService.selectByName("鍏ㄩ儴", 1); + for (int j = 0; j < data.size(); j++) { + JSONArray jsonArray = data.getJSONArray(j); + //瀵圭編鍥芥椂闂磋繘琛岃浆鎹� + Date jsonDate = KingDeeUtil.KingDeeDate(jsonArray.get(2).toString()); + //鐢熸垚鍟嗗搧妗f + //鍟嗗搧缂栧彿 + Mat mat = matService.selectByMatnr(jsonArray.get(1).toString()); + if (mat == null) { + mat = new Mat(); + mat.setMatnr(jsonArray.get(1).toString()); + mat.setMaktx(jsonArray.get(0).toString()); + mat.setSpecs(jsonArray.get(3).toString());//瑙勬牸 + mat.setTagId(tag.getId()); + mat.setCreateTime(jsonDate);//鍟嗗搧鍒涘缓鏃堕棿 + mat.setUpdateTime(new Date()); + mat.setStatus(1); + //鏈�鏂版姄鍙栧晢鍝佹椂闂� + if (!matService.insert(mat)) { +// throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); + callApiLogSaveMat(mat,kingDeeUtilType, "鍚屾鏂扮墿鏂欏嚭閿欙紒锛侊紒"+mat, false); + log.info("鍚屾鏂扮墿鏂欏嚭閿欙紒锛侊紒鍙傛暟锛歔{}]銆乕{}]",mat,jsonArray); + } else { + callApiLogSaveMat(mat,kingDeeUtilType, "鍚屾鏂扮墿鏂欙紒", true); +// log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr()); } - } else { - for (int j = 0; j < data.size(); j++) { - JSONArray jsonArray = data.getJSONArray(j); - Order order = orderService.selectByNo(jsonArray.get(0).toString()); - if (Cools.isEmpty(order)) { - DocType docType = docTypeService.selectById(docName); - Date now = new Date(); - // 鍗曟嵁涓绘。 - order = new Order( - String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] - jsonArray.get(0).toString(), // 璁㈠崟缂栧彿 - DateUtils.convert(now), // 鍗曟嵁鏃ユ湡 - docType.getDocId(), // 鍗曟嵁绫诲瀷 - null, // 椤圭洰缂栧彿 - null, // - null, // 璋冩嫧椤圭洰缂栧彿 - null, // 鍒濆绁ㄦ嵁鍙� - null, // 绁ㄦ嵁鍙� - null, // 瀹㈡埛缂栧彿 - null, // 瀹㈡埛 - null, // 鑱旂郴鏂瑰紡 - null, // 鎿嶄綔浜哄憳 - null, // 鍚堣閲戦 - null, // 浼樻儬鐜� - null, // 浼樻儬閲戦 - null, // 閿�鍞垨閲囪喘璐圭敤鍚堣 - null, // 瀹炰粯閲戦 - null, // 浠樻绫诲瀷 - null, // 涓氬姟鍛� - null, // 缁撶畻澶╂暟 - null, // 閭垂鏀粯绫诲瀷 - null, // 閭垂 - null, // 浠樻鏃堕棿 - null, // 鍙戣揣鏃堕棿 - null, // 鐗╂祦鍚嶇О - null, // 鐗╂祦鍗曞彿 - 1L, // 璁㈠崟鐘舵�� - 1, // 鐘舵�� - 9527L, // 娣诲姞浜哄憳 - now, // 娣诲姞鏃堕棿 - 9527L, // 淇敼浜哄憳 - now, // 淇敼鏃堕棿 - null // 澶囨敞 - ); - //瀵圭編鍥芥椂闂磋繘琛岃浆鎹� - DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); - DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; - LocalDateTime dateTime = LocalDateTime.parse(jsonArray.get(1).toString(), formatter); - String format = dateFormat.format(dateTime); - Date date = sdf.parse(format); - //鏈�鏂版姄鍙栨椂闂� - docType.setCreateTime(date); - docTypeService.update(docType, new EntityWrapper<DocType>().eq("doc_id", docName)); - if (!orderService.insert(order)) { - throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�"); - } - } - //鐗╂枡缂栫爜 - Mat mat = matService.selectByMatnr(jsonArray.get(2).toString()); - if (Cools.isEmpty(mat)) { - throw new CoolException(jsonArray.get(2).toString() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧"); - } - OrderDetl orderDetl1 = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", jsonArray.get(0).toString()).eq("matnr", jsonArray.get(2).toString())); - if (!Cools.isEmpty(orderDetl1)) { - continue; - } - DocType docType = docTypeService.selectById(docName); - OrderDetl orderDetl = new OrderDetl(); - orderDetl.sync(mat); - orderDetl.setBatch(null); - orderDetl.setAnfme(Double.parseDouble(jsonArray.get(5).toString())); - 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); - DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); - DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; - LocalDateTime dateTime = LocalDateTime.parse(jsonArray.get(1).toString(), formatter); - String format = dateFormat.format(dateTime); - Date date = sdf.parse(format); - //鏈�鏂版姄鍙栨椂闂� - docType.setCreateTime(date); - if (!orderDetlService.insert(orderDetl)) { - throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); - } + }else { + if (!jsonDate.equals(tag.getUpdateTime())){ + callApiLogSaveMat(mat,kingDeeUtilType, "鍟嗗搧缂栧彿閲嶅:"+mat.getMatnr(), false); + log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}],鍟嗗搧缂栧彿閲嶅锛侊紒锛�", mat.getMatnr()); } } - }else { + tag.setUpdateTime(jsonDate); } - }else { + tagService.updateById(tag); + } else { + for (int j = 0; j < data.size(); j++) { + JSONArray jsonArray = data.getJSONArray(j); + //鏈�鏂版姄鍙栨椂闂� + Date jsonDate = KingDeeUtil.KingDeeDate(jsonArray.get(1).toString()); + docType.setCreateTime(jsonDate); + Order order = orderService.selectByNo(jsonArray.get(0).toString()); + if (Cools.isEmpty(order)) { + Date now = new Date(); + // 鍗曟嵁涓绘。 + order = new Order( + String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] + jsonArray.get(0).toString(), // 璁㈠崟缂栧彿 + DateUtils.convert(now), // 鍗曟嵁鏃ユ湡 + docType.getDocId(), // 鍗曟嵁绫诲瀷 + null, // 椤圭洰缂栧彿 + null, // + null, // 璋冩嫧椤圭洰缂栧彿 + null, // 鍒濆绁ㄦ嵁鍙� + null, // 绁ㄦ嵁鍙� + null, // 瀹㈡埛缂栧彿 + null, // 瀹㈡埛 + 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)) { + if (!jsonDate.equals(docType.getCreateTime())){ + callApiLogSaveOrder(order,kingDeeUtilType, "鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�"+order, false); + } + continue; +// throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } + //鐗╂枡缂栫爜 + Mat mat = matService.selectByMatnr(jsonArray.get(2).toString()); + if (Cools.isEmpty(mat)) { + if (!jsonDate.equals(docType.getCreateTime())){ + callApiLogSaveOrder(order,kingDeeUtilType, "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧"+jsonArray.get(2).toString(), false); + } + continue; + } + OrderDetl orderDetl1 = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", jsonArray.get(0).toString()).eq("matnr", jsonArray.get(2).toString())); + if (!Cools.isEmpty(orderDetl1)) { + continue; + } + OrderDetl orderDetl = new OrderDetl(); + orderDetl.sync(mat); + orderDetl.setBatch(null); + orderDetl.setAnfme(Double.parseDouble(jsonArray.get(5).toString())); + 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); + if (!orderDetlService.insert(orderDetl)) { + callApiLogSaveOrder(order,kingDeeUtilType, "鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�!璁㈠崟鍙凤細"+order.getOrderNo(), false); +// throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } + docTypeService.updateById(docType); } } catch (Exception e) { log.error("fail", e); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); } finally { - try { - // 淇濆瓨鎺ュ彛鏃ュ織 - apiLogService.save( - "杞鏁版嵁", - URL + inaddress, - null, - "127.0.0.1", - add, - response, - success - ); - } catch (Exception e) { - log.error("", e); - } +// try { +// // 淇濆瓨鎺ュ彛鏃ュ織 +// apiLogService.save( +// "杞鏁版嵁", +// URL + inaddress, +// null, +// "127.0.0.1", +// add, +// response, +// success +// ); +// } catch (Exception e) { +// log.error("", e); +// } } } return SUCCESS; } + public void callApiLogSaveMat(Mat mat, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) { + apiLogService.save("鑾峰彇"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL, + "鐗╂枡缂栧彿锛�" + mat.getMatnr() + "銆佺墿鏂欏悕绉帮細" + mat.getName() + "銆佺被鍨嬶細" + mat.getTagId$() + "銆佺姸鎬侊細" + mat.getStatus$(), + 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$(), + response, bool); + } + } \ No newline at end of file -- Gitblit v1.9.1