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