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