From 26d4eef329bf4418d9c588981b5cffbce669f64f Mon Sep 17 00:00:00 2001 From: LSH Date: 星期一, 11 十二月 2023 08:52:31 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/task/kingdee/LoginAuthenticationScheduler.java | 25 + src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java | 46 ++ src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java | 133 +++++ src/main/java/com/zy/asrs/task/kingdee/handler/LoginAuthenticationHandler.java | 143 ++++++ src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java | 133 +++++ src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java | 91 +++ src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java | 26 + src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java | 134 +++++ src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java | 46 ++ src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java | 46 ++ src/main/java/com/zy/erp/kingdee/utils/KingDeeUtil.java | 24 + src/main/java/com/zy/erp/kingdee/utils/PostMesDataUtils.java | 119 +++++ src/main/resources/application.yml | 30 + src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java | 289 ++++++++++++ src/main/java/com/zy/erp/kingdee/entity/param/InFormIdParam.java | 38 + src/main/java/com/zy/erp/kingdee/entity/param/LoginParam.java | 19 16 files changed, 1,341 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java new file mode 100644 index 0000000..a107922 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/InboundOrderScheduler.java @@ -0,0 +1,26 @@ +package com.zy.asrs.task.kingdee; + +import com.zy.asrs.task.kingdee.handler.InboundOrderHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class InboundOrderScheduler { + + @Autowired + private InboundOrderHandler inboundOrderHandler; + @Value("${erp.switch.InboundOrderSwitch}") + private boolean InboundOrderSwitch; + +// @Scheduled(cron = "0/3 * * * * ? ") + void login(){ + if(!InboundOrderSwitch){ + return; + } + inboundOrderHandler.start(); + } + +} diff --git a/src/main/java/com/zy/asrs/task/kingdee/LoginAuthenticationScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/LoginAuthenticationScheduler.java new file mode 100644 index 0000000..8b7be90 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/LoginAuthenticationScheduler.java @@ -0,0 +1,25 @@ +package com.zy.asrs.task.kingdee; + +import com.zy.asrs.task.kingdee.handler.LoginAuthenticationHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class LoginAuthenticationScheduler { + + @Autowired + private LoginAuthenticationHandler loginAuthenticationHandler; + @Value("${erp.switch.LoginAuthenticationSwitch}") + private boolean LoginAuthenticationSwitch; + + //@Scheduled(cron = "0/3 * * * * ? ") + void login(){ + if(!LoginAuthenticationSwitch){ + return; + } + loginAuthenticationHandler.start(); + } +} diff --git a/src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java new file mode 100644 index 0000000..994040d --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java @@ -0,0 +1,46 @@ +package com.zy.asrs.task.kingdee; + +import com.zy.asrs.entity.Order; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.task.kingdee.handler.ReviewOrderSyncHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Created by vincent on 2023/10/21 + */ +@Slf4j +@Component +public class ReviewOrderSyncScheduler { + + @Autowired + private ReviewOrderSyncHandler reviewOrderSyncHandler; + @Autowired + private OrderService orderService; + + @Value("${erp.switch.ReviewOrderSwitch}") + private boolean ReviewOrderSwitch; + + @Scheduled(cron = "0/3 * * * * ? ") + @Async("orderThreadPool") + public void completeAndReport(){ + if(!ReviewOrderSwitch){ + return; + } + List<Order> orders = orderService.selectComplete(); + for (Order order : orders) { + ReturnT<String> result = reviewOrderSyncHandler.start(order); + if (!result.isSuccess()) { + log.error("鍗曟嵁[orderNo={}]鍚慹rp瀹℃牳澶辫触", order.getOrderNo()); + } + } + } + +} diff --git a/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java new file mode 100644 index 0000000..161ae37 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java @@ -0,0 +1,46 @@ +package com.zy.asrs.task.kingdee; + +import com.zy.asrs.entity.Order; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.task.kingdee.handler.SubmitOrderSyncHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Created by Monkey D. Luffy on 2023.10.21 + */ +@Slf4j +@Component +public class SaveOrderSyncScheduler { + + @Autowired + private SubmitOrderSyncHandler submitOrderSyncHandler; + @Autowired + private OrderService orderService; + + @Value("${erp.switch.ReviewOrderSwitch}") + private boolean ReviewOrderSwitch; + +// @Scheduled(cron = "0/3 * * * * ? ") + @Async("orderThreadPool") + public void completeAndReport(){ + if (1==1) return; + if(!ReviewOrderSwitch){ + return; + } + List<Order> orders = orderService.selectComplete(); + for (Order order : orders) { + ReturnT<String> result = submitOrderSyncHandler.start(order); + if (!result.isSuccess()) { + log.error("鍗曟嵁[orderNo={}]鎻愪氦鑷砮rp澶辫触", order.getOrderNo()); + } + } + } + +} diff --git a/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java new file mode 100644 index 0000000..1f23ca4 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java @@ -0,0 +1,46 @@ +package com.zy.asrs.task.kingdee; + +import com.zy.asrs.entity.Order; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.task.kingdee.handler.SaveOrderSyncHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Created by Monkey D. Luffy on 2023.10.21 + */ +@Slf4j +@Component +public class SubmitOrderSyncScheduler { + + @Autowired + private SaveOrderSyncHandler saveOrderSyncHandler; + @Autowired + private OrderService orderService; + + @Value("${erp.switch.ReviewOrderSwitch}") + private boolean ReviewOrderSwitch; + +// @Scheduled(cron = "0/3 * * * * ? ") + @Async("orderThreadPool") + public void completeAndReport(){ + if(!ReviewOrderSwitch){ + return; + } + List<Order> orders = orderService.selectComplete(); + for (Order order : orders) { + ReturnT<String> result = saveOrderSyncHandler.start(order); + if (!result.isSuccess()) { + log.error("鍗曟嵁[orderNo={}]淇濆瓨鑷砮rp澶辫触", order.getOrderNo()); + } + } + } + +} 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 new file mode 100644 index 0000000..800dca5 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java @@ -0,0 +1,289 @@ +package com.zy.asrs.task.kingdee.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.Cools; +import com.core.common.DateUtils; +import com.core.common.SnowflakeIdWorker; +import com.zy.asrs.entity.*; +import com.zy.asrs.service.*; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import com.zy.common.utils.HttpHandler; +import com.zy.erp.kingdee.entity.param.InFormIdParam; +import com.zy.erp.kingdee.enums.KingDeeUtilType; +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; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; + +@Service +@Slf4j +public class InboundOrderHandler extends AbstractHandler<String> { + @Value("${erp.address.URL}") + //绔彛 + private String URL; + + @Value("${erp.address.inaddress}") + //鍗曟嵁锛屽晢鍝佹。妗堝湴鍧� + private String inaddress; + + @Autowired + private ApiLogService apiLogService; + + @Autowired + private LoginAuthenticationHandler loginAuthenticationHandler; + + @Autowired + private MatService matService; + + @Autowired + private TagService tagService; + + @Autowired + private DocTypeService docTypeService; + + @Autowired + private OrderService orderService; + + @Autowired + private OrderDetlService orderDetlService; + + @Autowired + private SnowflakeIdWorker snowflakeIdWorker; + + @Transactional + public synchronized ReturnT<String> start() { + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //鐧诲綍閲戣澏 + ReturnT<String> start = loginAuthenticationHandler.start(); + for(KingDeeUtilType kingDeeUtilType : KingDeeUtilType.values()) { + InFormIdParam inFormIdParam = new InFormIdParam(); + 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"); + String FDocumentStatus=null; + + //鏉′欢鍜岄渶瑕佽幏寰楃殑缁撴灉鎷兼帴 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("FormId", inFormIdParam.getFormId()); + jsonObject.put("Limit", inFormIdParam.getLimit()); + jsonObject.put("StartRow", inFormIdParam.getStartRow()); + //鐗╂枡妗f鏌ヨ + if(kingDeeUtilType.formId.equals("BD_MATERIAL")){ + Tag tag = tagService.selectByName("鍏ㄩ儴", 1); + //鐗╂枡鐘舵�� FUseOrgId .FNumber + FDocumentStatus="C"; + 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 锛氱墿鏂欑紪鍙凤紱 + // FCreateDate 锛氱墿鏂欏垱寤烘椂闂达紱 + // FSpecification 锛氱墿鏂欒鏍硷紱 + // FDocumentStatus 锛氱墿鏂欑姸鎬� + }else{ + //鑾峰彇鏈�鏂版椂闂� + //鍗曟嵁鐘舵�� + 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,"+kingDeeUtilType.anfme+",FDocumentStatus"); + // FBillNo :鍗曟嵁缂栧彿锛� + // FCreateDate 锛氬崟鎹垱寤烘椂闂达紱 + // FMaterialId.FNumber : 鐗╂枡缂栫爜锛� + // FMaterialName 锛氱墿鏂欏悕绉帮紱 + // FMaterialId.FSpecification锛氱墿鏂欒鏍� + // anfme : 鐗╂枡鏁伴噺 + // FDocumentStatus 锛氬崟鎹姸鎬侊紱 + + } + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("data", jsonObject); + String add = jsonObject1.toJSONString(); + //涓婃姤 + String response = ""; + boolean success = false; + try { + //鑾峰彇Cookie鍊� + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Cookie", start.getContent()); + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri(URL) + .setPath(inaddress) + .setJson(add) + .build() + .doPost(); + JSONArray data = JSON.parseArray(response); + 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 { + if (!jsonDate.equals(tag.getUpdateTime())){ + callApiLogSaveMat(mat,kingDeeUtilType, "鍟嗗搧缂栧彿閲嶅:"+mat.getMatnr(), false); + log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}],鍟嗗搧缂栧彿閲嶅锛侊紒锛�", mat.getMatnr()); + } + } + tag.setUpdateTime(jsonDate); + } + 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); +// } + } + } + 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 diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/LoginAuthenticationHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/LoginAuthenticationHandler.java new file mode 100644 index 0000000..bff1d04 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/handler/LoginAuthenticationHandler.java @@ -0,0 +1,143 @@ +package com.zy.asrs.task.kingdee.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.core.common.Cools; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import com.zy.common.utils.HttpHandler; +import com.zy.erp.kingdee.entity.param.LoginParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Set; + +@Service +@Slf4j +@Transactional +public class LoginAuthenticationHandler extends AbstractHandler<String> { + + @Value("${erp.address.URL}") + //绔彛 + private String URL; + + @Value("${erp.address.loginaddress}") + //鐧诲綍鍦板潃 + private String loginaddress; + + @Value("${erp.login.acctID}") + //璐﹀彿ID + private String acctID; + + @Value("${erp.login.username}") + //璐﹀彿 + private String username; + + @Value("${erp.login.password}") + //瀵嗙爜 + private String password; + + @Value("${erp.login.lcid}") + // + private Integer lcid; + + @Autowired + private ApiLogService apiLogService; + + /** + * 45鍒嗛挓鐧诲綍涓�娆¢噾铦剁郴缁� + * @return + */ + @Transactional + public synchronized ReturnT<String> start() { + + LoginParam loginParam =new LoginParam(); + loginParam.setAcctID(acctID); + loginParam.setUsername(username); + loginParam.setPassword(password); + loginParam.setLcid(lcid); + //涓婃姤 + String response = ""; + String cookie = ""; + boolean success = false; + try { + response = new HttpHandler.Builder() + .setUri(URL) + .setPath(loginaddress) + .setJson(JSON.toJSONString(loginParam)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + Object sessionId = findValueByKey(JSON.parseObject(response), "SessionId"); + cookie="ASP.NET_SessionId="+sessionId+";"+"kdservice-sessionid="+jsonObject.getString("KDSVCSessionId"); + if (Cools.isEmpty(jsonObject.getString("Message"))) { + success = true; + } else { + callApiLogSaveLog(JSON.toJSONString(loginParam),false); + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+loginaddress, JSON.toJSONString(loginParam), response); +// throw new CoolException("鐧诲綍閲戣澏澶辫触"); + } + } catch (Exception e) { + log.error("fail", e); + callApiLogSaveLog(JSON.toJSONString(loginParam),false); + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+loginaddress, JSON.toJSONString(loginParam), response); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg(e.getMessage()); + } finally { +// try { +// // 淇濆瓨鎺ュ彛鏃ュ織 +// apiLogService.save( +// "鐧诲綍閲戣澏", +// URL + loginaddress, +// null, +// "127.0.0.1", +// JSON.toJSONString(loginParam), +// response, +// success +// ); +// } catch (Exception e) { log.error("", e); } + } + return SUCCESS.setContent(cookie); + } + + + public static Object findValueByKey(JSONObject json, String key) { + Set<String> keySet = json.keySet(); + for (String k : keySet) { + Object v = json.get(k); + if (k.equals(key)) { + return v; + } else if (v instanceof JSONArray) { + int size = ((JSONArray) v).size(); + for (int i = 0; i <= size - 1; i++) { + Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); + if (result != null){ + return result; + } + } + } else if (v instanceof JSONObject){ + Object result = findValueByKey((JSONObject) v, key); + if (result != null){ + return result; + } + } + } + return null; + } + + public void callApiLogSaveLog(String response, Boolean bool) { + apiLogService.save("鐧诲綍閲戣澏澶辫触", URL, "null", loginaddress, + "濂楄处ID锛�"+acctID+"銆佽处鍙凤細"+username+"銆佸瘑鐮侊細"+password, + response, bool); + } + + +} + + + diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java new file mode 100644 index 0000000..73d037d --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java @@ -0,0 +1,134 @@ +package com.zy.asrs.task.kingdee.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.DocType; +import com.zy.asrs.entity.Order; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.service.DocTypeService; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import com.zy.common.utils.HttpHandler; +import com.zy.erp.kingdee.enums.KingDeeUtilType; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.Set; + +/** + * Created by vincent on 2023/10/21 + */ +@Slf4j +@Service +public class ReviewOrderSyncHandler extends AbstractHandler<String> { + @Value("${erp.address.URL}") + //绔彛 + private String URL; + + @Value("${erp.address.outaddressAudit}") + //瀹℃牳鍦板潃 + private String outaddressAudit; + + @Autowired + private OrderService orderService; + @Autowired + private ApiLogService apiLogService; + @Autowired + private DocTypeService docTypeService; + @Autowired + private LoginAuthenticationHandler loginAuthenticationHandler; + + @Transactional + public ReturnT<String> start(Order order) { + //鐧诲綍閲戣澏r + ReturnT<String> start = loginAuthenticationHandler.start(); + DocType docType = docTypeService.selectById(order.getDocType()); + if (null == docType) { + return SUCCESS; + } + KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); + + //鏉′欢鎷兼帴 + JSONObject dataJsonObject = new JSONObject(); + dataJsonObject.put("Numbers",order.getOrderNo()); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("data", dataJsonObject); + jsonObject.put("FormId",kingDeeUtilType.formId); + String add = jsonObject.toJSONString(); + //涓婃姤 + String response = ""; + boolean success = false; + try { + //鑾峰彇Cookie鍊� + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Cookie", start.getContent()); + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri(URL) + .setPath(outaddressAudit) + .setJson(add) + .build() + .doPost(); + JSONObject data = JSON.parseObject(response); + Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); + String bool=IsSuccess.toString(); + //瀹℃牳瀹屾垚鍘熻鍗�4杞�6 6.涓婃姤瀹屾垚 + if(bool.equals("true")){ + success = true; + order.setSettle(6L); + orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); + } + } catch (Exception e) { + log.error("fail", e); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "瀹℃牳", + URL+ outaddressAudit, + null, + "127.0.0.1", + add, + response, + success + ); + } catch (Exception e) { + log.error("", e); + } + } + return SUCCESS; + } + public static Object findValueByKey(JSONObject json, String key) { + Set<String> keySet = json.keySet(); + for (String k : keySet) { + Object v = json.get(k); + if (k.equals(key)) { + return v; + } else if (v instanceof JSONArray) { + int size = ((JSONArray) v).size(); + for (int i = 0; i <= size - 1; i++) { + Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); + if (result != null){ + return result; + } + } + } else if (v instanceof JSONObject){ + Object result = findValueByKey((JSONObject) v, key); + if (result != null){ + return result; + } + } + } + return null; + } +} 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 new file mode 100644 index 0000000..a05c7ca --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java @@ -0,0 +1,133 @@ +package com.zy.asrs.task.kingdee.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.DocType; +import com.zy.asrs.entity.Order; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.service.DocTypeService; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import com.zy.common.utils.HttpHandler; +import com.zy.erp.kingdee.enums.KingDeeUtilType; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.Set; + +/** + * Created by Monkey D. Luffy on 2023.10.21 + */ +@Slf4j +@Service +public class SaveOrderSyncHandler extends AbstractHandler<String> { + @Value("${erp.address.URL}") + //绔彛 + private String URL; + + @Value("${erp.address.outaddressSave}") + //淇濆瓨鍦板潃 + private String outaddressSave; + + @Autowired + private OrderService orderService; + @Autowired + private ApiLogService apiLogService; + @Autowired + private DocTypeService docTypeService; + @Autowired + private LoginAuthenticationHandler loginAuthenticationHandler; + + @Transactional + public ReturnT<String> start(Order order) { + //鐧诲綍閲戣澏r + ReturnT<String> start = loginAuthenticationHandler.start(); + DocType docType = docTypeService.selectById(order.getDocType()); + if (null == docType) { + return SUCCESS; + } + KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); + + //鏉′欢鎷兼帴 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("Numbers",order.getOrderNo()); + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("data", jsonObject); + jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId); + String add = jsonObject1.toJSONString(); + //涓婃姤 + String response = ""; + boolean success = false; + try { + //鑾峰彇Cookie鍊� + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Cookie", start.getContent()); + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri(URL) + .setPath(outaddressSave) + .setJson(add) + .build() + .doPost(); + JSONObject data = JSON.parseObject(response); + Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); + String bool=IsSuccess.toString(); + //淇濆瓨瀹屾垚鍘熻鍗�8杞�6 + if(bool.equals("true")){ + success = true; + order.setSettle(6L); + orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); + } + } catch (Exception e) { + log.error("fail", e); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "淇濆瓨", + URL+ outaddressSave, + null, + "127.0.0.1", + add, + response, + success + ); + } catch (Exception e) { + log.error("", e); + } + } + return SUCCESS; + } + public static Object findValueByKey(JSONObject json, String key) { + Set<String> keySet = json.keySet(); + for (String k : keySet) { + Object v = json.get(k); + if (k.equals(key)) { + return v; + } else if (v instanceof JSONArray) { + int size = ((JSONArray) v).size(); + for (int i = 0; i <= size - 1; i++) { + Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); + if (result != null){ + return result; + } + } + } else if (v instanceof JSONObject){ + Object result = findValueByKey((JSONObject) v, key); + if (result != null){ + return result; + } + } + } + return null; + } +} diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java new file mode 100644 index 0000000..6223b53 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java @@ -0,0 +1,133 @@ +package com.zy.asrs.task.kingdee.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.DocType; +import com.zy.asrs.entity.Order; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.service.DocTypeService; +import com.zy.asrs.service.OrderService; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import com.zy.common.utils.HttpHandler; +import com.zy.erp.kingdee.enums.KingDeeUtilType; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.Set; + +/** + * Created by Monkey D. Luffy on 2023.10.21 + */ +@Slf4j +@Service +public class SubmitOrderSyncHandler extends AbstractHandler<String> { + @Value("${erp.address.URL}") + //绔彛 + private String URL; + + @Value("${erp.address.outaddressSubmit}") + //鎻愪氦鍦板潃 + private String outaddressSubmit; + + @Autowired + private OrderService orderService; + @Autowired + private ApiLogService apiLogService; + @Autowired + private DocTypeService docTypeService; + @Autowired + private LoginAuthenticationHandler loginAuthenticationHandler; + + @Transactional + public ReturnT<String> start(Order order) { + //鐧诲綍閲戣澏r + ReturnT<String> start = loginAuthenticationHandler.start(); + DocType docType = docTypeService.selectById(order.getDocType()); + if (null == docType) { + return SUCCESS; + } + KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); + + //鏉′欢鎷兼帴 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("Numbers",order.getOrderNo()); + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("data", jsonObject); + jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId); + String add = jsonObject1.toJSONString(); + //涓婃姤 + String response = ""; + boolean success = false; + try { + //鑾峰彇Cookie鍊� + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Cookie", start.getContent()); + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri(URL) + .setPath(outaddressSubmit) + .setJson(add) + .build() + .doPost(); + JSONObject data = JSON.parseObject(response); + Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); + String bool=IsSuccess.toString(); + //鎻愪氦瀹屾垚鍘熻鍗�8杞�6 + if(bool.equals("true")){ + success = true; + order.setSettle(6L); + orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); + } + } catch (Exception e) { + log.error("fail", e); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "鎻愪氦", + URL+ outaddressSubmit, + null, + "127.0.0.1", + add, + response, + success + ); + } catch (Exception e) { + log.error("", e); + } + } + return SUCCESS; + } + public static Object findValueByKey(JSONObject json, String key) { + Set<String> keySet = json.keySet(); + for (String k : keySet) { + Object v = json.get(k); + if (k.equals(key)) { + return v; + } else if (v instanceof JSONArray) { + int size = ((JSONArray) v).size(); + for (int i = 0; i <= size - 1; i++) { + Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); + if (result != null){ + return result; + } + } + } else if (v instanceof JSONObject){ + Object result = findValueByKey((JSONObject) v, key); + if (result != null){ + return result; + } + } + } + return null; + } +} diff --git a/src/main/java/com/zy/erp/kingdee/entity/param/InFormIdParam.java b/src/main/java/com/zy/erp/kingdee/entity/param/InFormIdParam.java new file mode 100644 index 0000000..89c6f06 --- /dev/null +++ b/src/main/java/com/zy/erp/kingdee/entity/param/InFormIdParam.java @@ -0,0 +1,38 @@ +package com.zy.erp.kingdee.entity.param; + +import lombok.Data; + +@Data +public class InFormIdParam { + + //鏌ユ壘琛ㄥ崟鍞竴鏍囪瘑 + private String FormId; + + //鏈�澶氬厑璁告煡璇㈢殑鏁伴噺锛�0鎴栬�呬笉瑕佹灞炴�ф爣璇嗕笉闄愬埗 + private String TopRowCount; + + private Integer Limit; + + private String StartRow; + + //杩囨护鏉′欢锛坋g:\"FNumber>'0301010120001' and FCreateDate>'2023-07-05' \"锛� + //1銆丩eft锛氬乏鎷彿 + //3銆丆ompare锛氭瘮杈冭繍绠楃锛屽銆�澶т簬">"銆佸皬浜�"<"銆佺瓑浜�"="銆佸寘鍚�"like"銆佸乏鍖呭惈"llike"銆佸彸鍖呭惈"rlike" + //4銆乂alue锛氭瘮杈冨�� + //5銆丷ight锛氬彸鎷彿 + //6銆丩ogic锛氶�昏緫杩愮畻绗︼紝濡� "and"銆�"or" + private Integer Filterstring; + + //鎺掑簭鏉′欢 + private Integer OrderString; + + //寰呮煡璇㈣〃鍗曠殑瀛楁鍒楋紙鏈熸湜杩斿洖鍊硷級 + private Integer FieldKeys; + + + + + + + +} diff --git a/src/main/java/com/zy/erp/kingdee/entity/param/LoginParam.java b/src/main/java/com/zy/erp/kingdee/entity/param/LoginParam.java new file mode 100644 index 0000000..1eb3ee4 --- /dev/null +++ b/src/main/java/com/zy/erp/kingdee/entity/param/LoginParam.java @@ -0,0 +1,19 @@ +package com.zy.erp.kingdee.entity.param; + +import lombok.Data; + +@Data +public class LoginParam { + //璐﹀彿ID + private String acctID; + + //璐﹀彿 + private String username; + + //瀵嗙爜 + private String password; + + // + private Integer lcid; + +} diff --git a/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java b/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java new file mode 100644 index 0000000..0d05383 --- /dev/null +++ b/src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java @@ -0,0 +1,91 @@ +package com.zy.erp.kingdee.enums; + +public enum KingDeeUtilType { + BD_MATERIAL(0, "鐗╂枡妗f","BD_MATERIAL","","","",1), +// STK_InStock(1, "閲囪喘鍏ュ簱鍗�","STK_InStock","FRealQty","","",1), +// PUR_MRB(2, "閲囪喘閫�鏂欏崟","PUR_MRB","FRMREALQTY","","",1), +// PRD_PickMtrl(3, "鐢熶骇棰嗘枡鍗�","PRD_PickMtrl","FActualQty","","",1), +// PRD_ReturnMtrl(4, "鐢熶骇閫�鏂欏崟","PRD_ReturnMtrl","FQty","","",1), +// PRD_FeedMtrl(5, "鐢熶骇琛ユ枡鍗�","PRD_FeedMtrl","FActualQty","","",1), +// STK_TransferDirect(6, "鐩存帴璋冩嫧鍗�","STK_TransferDirect","","FQty","",1), +// STK_StockCountGain(7, "鐩樼泩鍗�","STK_StockCountGain","FGainQty","","",1), +// STK_StockCountLoss(8, "鐩樹簭鍗�","STK_StockCountLoss","FLossQty","","",1), +// STK_MisDelivery(9, "鍏朵粬鍑哄簱鍗�","STK_MisDelivery","FQty","","",1), +// SP_PickMtrl(10, "绠�鍗曠敓浜ч鏂欏崟","SP_PickMtrl","FActualQty","","",1), +// SP_ReturnMtrl(11, "绠�鍗曠敓浜ч��鏂欏崟","SP_ReturnMtrl","FQty","","",1), +// SAL_OUTSTOCK(12, "閿�鍞嚭搴撳崟","SAL_OUTSTOCK","FRealQty","","",1), +// SAL_RETURNSTOCK(13, "閿�鍞��璐у崟","SAL_RETURNSTOCK","FRealQty","","",1), + SAL_DELIVERYNOTICE(14, "鍙戣揣閫氱煡鍗�","SAL_DELIVERYNOTICE","FQty","閿�鍞嚭搴撳崟","SAL_OUTSTOCK",0), + STK_MISCELLANEOUS(15, "鍏朵粬鍏ュ簱鍗�","STK_MISCELLANEOUS","FQty","鍏朵粬鍏ュ簱鍗�","STK_MISCELLANEOUS",1), +// BD_Supplier(16, "渚涘簲鍟�","BD_Supplier","","","",1), + PUR_ReceiveBill(17, "鏀舵枡閫氱煡鍗�","PUR_ReceiveBill","FPOQTY","閲囪喘鍏ュ簱鍗�","STK_InStock",1), + PRD_MORPT(18, "鐢熶骇姹囨姤鍗�","PRD_MORPT","FFinishQty","鐢熶骇鍏ュ簱鍗�","PRD_INSTOCK",1), +// PRD_INSTOCK(19, "鐢熶骇鍏ュ簱鍗�","PRD_INSTOCK","","","",1), + SAL_RETURNNOTICE(20, "閫�璐ч�氱煡鍗�","SAL_RETURNNOTICE","FBaseJunkedQty","閿�鍞��璐у崟","SAL_RETURNSTOCK",1), + STK_OutStockApply(21, "鍑哄簱鐢宠鍗�","STK_OutStockApply","FTotalSecQty","鍏朵粬鍑哄簱鍗�","STK_MisDelivery",0), + //绫冲闈掑矝 + STK_OutStockApply30(30, "璇曠敤鍝佸彂璐ч�氱煡鍗�","","","鐮斿彂鏍峰搧鍑哄簱鍗�","",0), + STK_OutStockApply31(31, "璇曠敤鍝佸彂璐ч�氱煡鍗�","","","鐮斿彂鏍峰搧鍑哄簱鍗�","",0), + STK_OutStockApply32(32, "璇曠敤鍝佸彂璐ч�氱煡鍗�","","","鐮斿彂鏍峰搧鍑哄簱鍗�","",0), + STK_OutStockApply33(33, "璇曠敤鍝佸彂璐ч�氱煡鍗�","","","鐮斿彂鏍峰搧鍑哄簱鍗�","",0), + STK_OutStockApply34(34, "璇曠敤鍝佸彂璐ч�氱煡鍗�","","","鐮斿彂鏍峰搧鍑哄簱鍗�","",0), + STK_OutStockApply35(35, "璇曠敤鍝佸彂璐ч�氱煡鍗�","","","鐮斿彂鏍峰搧鍑哄簱鍗�","",0), + + + + + ; + public Integer id; + public String desc; + public String formId; + public String anfme; + public String correspondingName; + public String correspondingFormId; + public Integer pakIn; + + KingDeeUtilType(Integer id, String desc,String formId,String anfme,String correspondingName,String correspondingFormId,int pakIn){ + this.id = id; + this.desc = desc; + this.formId = formId; + this.anfme = anfme; + this.correspondingName = correspondingName; + this.correspondingFormId = correspondingFormId; + this.pakIn = pakIn; //1鍏ュ簱 0鍑哄簱 + } + + public static KingDeeUtilType get(Short id) { + if (null == id) { + return null; + } + for (KingDeeUtilType type : KingDeeUtilType.values()) { + if (type.id.equals(id.intValue())) { + return type; + } + } + return null; + } + + public static KingDeeUtilType get(String desc) { + if (null == desc) { + return null; + } + for (KingDeeUtilType type : KingDeeUtilType.values()) { + if (type.desc.equals(desc)) { + return type; + } + } + return null; + } + + public static KingDeeUtilType get(KingDeeUtilType type) { + if (null == type) { + return null; + } + for (KingDeeUtilType crnLiftPosType : KingDeeUtilType.values()) { + if (crnLiftPosType == type) { + return crnLiftPosType; + } + } + return null; + } +} diff --git a/src/main/java/com/zy/erp/kingdee/utils/KingDeeUtil.java b/src/main/java/com/zy/erp/kingdee/utils/KingDeeUtil.java new file mode 100644 index 0000000..3373421 --- /dev/null +++ b/src/main/java/com/zy/erp/kingdee/utils/KingDeeUtil.java @@ -0,0 +1,24 @@ +package com.zy.erp.kingdee.utils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; + +public class KingDeeUtil { + + //瀵圭編鍥芥椂闂磋繘琛岃浆鎹� + public static Date KingDeeDate(String jsonArrayDate) throws ParseException { + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; + LocalDateTime dateTime = LocalDateTime.parse(jsonArrayDate, formatter); + String format = dateFormat.format(dateTime); + return sdf.parse(format); + } + + + +} diff --git a/src/main/java/com/zy/erp/kingdee/utils/PostMesDataUtils.java b/src/main/java/com/zy/erp/kingdee/utils/PostMesDataUtils.java new file mode 100644 index 0000000..3025ece --- /dev/null +++ b/src/main/java/com/zy/erp/kingdee/utils/PostMesDataUtils.java @@ -0,0 +1,119 @@ +package com.zy.erp.kingdee.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.core.common.SpringUtils; +import com.core.exception.CoolException; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import com.zy.common.utils.HttpHandler; +import lombok.extern.slf4j.Slf4j; + +import java.util.Map; + +@Slf4j +public class PostMesDataUtils extends AbstractHandler<String> { + + public ReturnT<String> postMesData(String name, String URL, String mesPath, Object combParam){ +// if (true){ +// System.out.println("name:"+name+",URL:"+URL+",mesPath:"+mesPath+",combParam:"+combParam); +// return SUCCESS; +// } + if(combParam != null){ + String response = ""; + boolean success = false; + try { +// Map<String, Object> map = new HashMap<>() +// map.put("appkey","ea1f0459efc02a79f046f982767939ae"); + response = new HttpHandler.Builder() +// .setHeaders(map) + .setUri(URL) + .setPath(mesPath) + .setJson(JSON.toJSONString(combParam)) + .build() + .doPost(); + System.out.println("response:"+response); + JSONObject jsonObject = JSON.parseObject(response); + + if (jsonObject.getInteger("code").equals(200)) { + success = true; + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); + throw new CoolException("涓婃姤"+name); + } + } catch (Exception e) { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class); + apiLogService.save( + "涓婃姤"+name, + URL +"/"+ mesPath, + null, + "127.0.0.1", + JSON.toJSONString(combParam), + response, + success + ); + } catch (Exception e) { + log.error("", e); } + } + } + return SUCCESS; + } + + public ReturnT<String> postMesData(String name, String URL, String mesPath, Object combParam, Map<String, Object> map){ +// if (true){ +// System.out.println("name:"+name+",URL:"+URL+",mesPath:"+mesPath+",combParam:"+combParam); +// return SUCCESS; +// } + if(combParam != null){ + String response = ""; + boolean success = false; + try { +// Map<String, Object> map = new HashMap<>(); +// map.put("appkey","ea1f0459efc02a79f046f982767939ae"); + response = new HttpHandler.Builder() + .setHeaders(map) + .setUri(URL) + .setPath(mesPath) + .setJson(JSON.toJSONString(combParam)) + .build() + .doPost(); + System.out.println("response:"+response); + JSONObject jsonObject = JSON.parseObject(response); + + if (jsonObject.getInteger("code").equals(200)) { + success = true; + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); + throw new CoolException("涓婃姤"+name); + } + } catch (Exception e) { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class); + apiLogService.save( + "涓婃姤"+name, + URL +"/"+ mesPath, + null, + "127.0.0.1", + JSON.toJSONString(combParam), + response, + success + ); + } catch (Exception e) { + log.error("", e); } + } + } + return SUCCESS; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f423b6f..87903fc 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -57,6 +57,34 @@ # 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁� groupCount: 4 -#erp +#閲戣澏erp瀵规帴 erp: + # 寮�鍏� + switch: + #鑾峰彇鍗曟嵁寮�鍏� 绫冲鏃犵敤 + InboundOrderSwitch: false + #鐧诲綍鎺ュ彛寮�鍏� + LoginAuthenticationSwitch: false + #涓婃姤鍗曟嵁寮�鍏� + ReviewOrderSwitch: false + # 鍦板潃 + address: + URL: http://58.210.10.90:28090 + #鐧诲綍鍦板潃 + loginaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc + #鍗曟嵁锛屽晢鍝佹。妗堝湴鍧� + inaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc + #缁撴灉涓婃姤锛堜繚瀛橈級鍗曞湴鍧� 绫冲鏃犵敤 + outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc + #缁撴灉涓婃姤锛堟彁浜わ級鍗曞湴鍧� 绫冲鏃犵敤 + outaddressSubmit: K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc + #缁撴灉涓婃姤锛堝鏍革級鍗曞湴鍧� + outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc + # 鐧诲綍璐﹀彿绠$悊 + login : + acctID: "65712e41a21468" + username: "13465800579" + password: "a.111111" + lcid: 2052 +# 閫熻吘瀵规帴 宸插簾寮� 淇濇寔false enable: false \ No newline at end of file -- Gitblit v1.9.1