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