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