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 jsonObject = new JSONObject(); 
 | 
        jsonObject.put("Numbers",order.getOrderNo()); 
 | 
        JSONObject jsonObject1 = new JSONObject(); 
 | 
        jsonObject1.put("data", jsonObject); 
 | 
        jsonObject1.put("FormId",kingDeeUtilType.formId); 
 | 
        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(outaddressAudit) 
 | 
                    .setJson(add) 
 | 
                    .build() 
 | 
                    .doPost(); 
 | 
            JSONObject data = JSON.parseObject(response); 
 | 
            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); 
 | 
            String bool=IsSuccess.toString(); 
 | 
            //审核完成原订单4转8  8.审核完成 
 | 
            if(bool.equals("true")){ 
 | 
                success = true; 
 | 
                order.setSettle(8L); 
 | 
                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; 
 | 
    } 
 | 
} 
 |