MawbService.java 3.97 KB
package com.erry.iclear.dateInterface.service;

import com.arronlong.httpclientutil.HttpClientUtil;
import com.arronlong.httpclientutil.common.HttpConfig;
import com.arronlong.httpclientutil.common.HttpHeader;
import com.erry.iclear.dateInterface.api.request.Mawb;
import com.erry.iclear.dateInterface.api.response.IClearCheckResponseResult;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.api.response.TokenResult;
import com.erry.iclear.dateInterface.entity.ChmConsignment;
import com.erry.iclear.dateInterface.entity.ChmConsignmentDetail;
import com.erry.iclear.dateInterface.repository.MawbRepository;
import com.erry.iclear.dateInterface.util.JsonToJava;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Header;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @author Administrator
 */
@Service
@Slf4j
public class MawbService {

    private Gson gson = new Gson();

    @Value("${api.address.iclear-check-url}")
    String iclearCheckUrl;

    @Autowired
    private MawbRepository mawbRepository;

    @Autowired
    private ChmConsignmentService consignmentService;

    @Autowired
    private ChmConsignmentDetailService consignmentDetailService;

    /**
     * 保存主单Request
     * @param mawb
     */
    public Mawb saveMawb(Mawb mawb){
        Mawb result=null;
        try{
            log.info("saveMawb start>>>>>>>>>>>");
            result =mawbRepository.save(mawb);
            log.info("saveMawb end>>>>>>>>>>>");
        }catch (Exception e){
            log.error("saveMawb() error:"+e.getMessage());
        }
        return result;
    }


    /**
     * 校验主单
     * @param mawb
     * @return
     */
    public ResultRS checkMawb(Mawb mawb){
        ResultRS result = new ResultRS(Boolean.FALSE,null,null);
        try{
            log.info("checkMawb start>>>>>>>>>>  mawb:"+gson.toJson(mawb));

            //1、将请求转换为运单
            ChmConsignment chmConsignment=consignmentService.convertToChmConsignment(mawb,null,"IDE-ICLEAR-API");
            if(Objects.equals(chmConsignment,null)){
                result.setCode("30001");
                result.setMsg("数据格式不正确");
                return result;
            }
            List<ChmConsignmentDetail> chmConsignmentDetailList = new ArrayList<>();
            mawb.getMawbDetailList().forEach(detail ->{
                chmConsignmentDetailList.add(consignmentDetailService.convertToChmConsignmentDetail(detail,chmConsignment));
            });
            chmConsignment.setChmConsignmentDetailList(chmConsignmentDetailList);

            //调用IClear接口进行运单数据校验
            String objJson = JsonToJava.toJson(chmConsignment);
            Header[] headers = HttpHeader.custom()
                    .other("Content-Type", "application/json")
                    .build();
            //推送海关回执数据
            HttpConfig config = HttpConfig.custom()
                    .headers(headers)
                    .url(this.iclearCheckUrl)
                    .encoding("utf-8")
                    .json(objJson);
            String json = HttpClientUtil.post(config);
            IClearCheckResponseResult iclearCheckResponseResult = JsonToJava.parseJson(json, IClearCheckResponseResult.class);
            result.setSuccess(iclearCheckResponseResult.getSuccess());
            result.setMsg(iclearCheckResponseResult.getMessage());
            log.info("checkMawb start>>>>>>>>>>  mawb:"+gson.toJson(mawb) +" result :" +result.getSuccess() +" iclear check response : " + json + " status : " + result.getSuccess());
        }catch (Exception e){
            log.error("checkMawb() error:" + e.getMessage());
        }
        return result;
    }
}