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.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; 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.Date; import java.util.HashMap; import java.util.Set; /** * Created by Monkey D. Luffy on 2023.10.21 */ @Slf4j @Service public class SubmitOrderSyncHandler extends AbstractHandler { @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 start(Order order) { //登录金蝶r ReturnT start = loginAuthenticationHandler.start(); DocType docType = docTypeService.selectById(order.getDocType()); if (null == docType) { return SUCCESS; } KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); // if (kingDeeUtilType.entryId!=2){ // return SUCCESS; // } //条件拼接 JSONObject jsonObject = new JSONObject(); // jsonObject.put("Ids","100083"); jsonObject.put("Numbers", order.getOrderNo()); JSONObject jsonObject1 = new JSONObject(); jsonObject1.put("data", jsonObject); jsonObject1.put("FormId",kingDeeUtilType.ruleId); String add = jsonObject1.toJSONString(); //上报 String response = ""; boolean success = false; try { //获取Cookie值 HashMap 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 bool1=IsSuccess.toString(); //提交完成原订单6转7 if(bool1.equals("true")){ ObjectMapper objectMapper = new ObjectMapper(); JsonNode rootNode = objectMapper.readTree(response); boolean bool = rootNode.get("Result").get("ResponseStatus").get("IsSuccess").asBoolean(); log.info("审核bool:"+bool); //提交完成原订单1转2 2.提交完成 if(bool){ success = true; // order.setSettle(7L); order.setMemo("2"); order.setUpdateTime(new Date()); orderService.update(order,new EntityWrapper().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 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; } }