From f88561ab48893d0e1866a6085c64213a6cdd1008 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期日, 17 十二月 2023 14:03:22 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/kingdee/PushDowmOrderSyncScheduler.java       |   42 ++++++++++
 src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java |  134 +++++++++++++++++++++++++++++++++
 src/main/resources/application.yml                                           |    6 +
 3 files changed, 181 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/kingdee/PushDowmOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/PushDowmOrderSyncScheduler.java
new file mode 100644
index 0000000..147edca
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/kingdee/PushDowmOrderSyncScheduler.java
@@ -0,0 +1,42 @@
+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.PushDowmOrderSyncHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/*
+* 閲戣澏ERP涓嬫帹鎺ュ彛
+* */
+@Slf4j
+@Component
+public class PushDowmOrderSyncScheduler {
+
+    @Autowired
+    private PushDowmOrderSyncHandler pushDowmOrderSyncHandler;
+    @Autowired
+    private OrderService orderService;
+    @Value("${erp.switch.PushDowmOrderSwitch}")
+    private boolean PushDowmOrderSwitch;
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    void login(){
+        if(!PushDowmOrderSwitch){
+            return;
+        }
+        List<Order> orders = orderService.selectComplete();
+        for (Order order : orders) {
+            ReturnT<String> result = pushDowmOrderSyncHandler.start(order);
+            if (!result.isSuccess()) {
+                log.error("鍗曟嵁[orderNo={}]鎻愪氦鑷砮rp澶辫触", order.getOrderNo());
+            }
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java
new file mode 100644
index 0000000..7b7092d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.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 PushDowmOrderSyncHandler extends AbstractHandler<String> {
+    @Value("${erp.address.URL}")
+    //绔彛
+    private String URL;
+
+    @Value("${erp.address.pushDowmAudit}")
+    //瀹℃牳鍦板潃
+    private String pushDowmAudit;
+
+    @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(pushDowmAudit)
+                    .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+ pushDowmAudit,
+                        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/resources/application.yml b/src/main/resources/application.yml
index 6622e51..59c8d72 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -65,8 +65,10 @@
     InboundOrderSwitch: false
     #鐧诲綍鎺ュ彛寮�鍏�
     LoginAuthenticationSwitch: false
-    #涓婃姤鍗曟嵁寮�鍏�
+    #涓婃姤鍗曟嵁寮�鍏�  绫冲鏃犵敤
     ReviewOrderSwitch: false
+    #涓嬫帹鍗曟嵁寮�鍏�
+    PushDowmOrderSwitch: false
   #  鍦板潃
   address:
     URL: http://58.210.10.90:28090
@@ -74,6 +76,8 @@
     loginaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
     #鍗曟嵁锛屽晢鍝佹。妗堝湴鍧�
     inaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc
+    #鍗曟嵁涓嬫帹鍦板潃
+    pushDowmAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
     #缁撴灉涓婃姤锛堜繚瀛橈級鍗曞湴鍧�  绫冲鏃犵敤
     outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
     #缁撴灉涓婃姤锛堟彁浜わ級鍗曞湴鍧�  绫冲鏃犵敤

--
Gitblit v1.9.1