MawbService.java 4.49 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.Basfc;
import com.erry.iclear.dateInterface.api.request.BasfcDetail;
import com.erry.iclear.dateInterface.api.request.Mawb;
import com.erry.iclear.dateInterface.api.request.MawbDetail;
import com.erry.iclear.dateInterface.api.response.IClearCheckResponseResult;
import com.erry.iclear.dateInterface.api.response.ResultRS;
import com.erry.iclear.dateInterface.entity.ChmConsignment;
import com.erry.iclear.dateInterface.entity.ChmConsignmentDetail;
import com.erry.iclear.dateInterface.repository.MawbAdd;
import com.erry.iclear.dateInterface.repository.MawbRepository;
import com.erry.iclear.dateInterface.util.JsonToJava;
import com.erry.iclear.dateInterface.util.NumberUtils;
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.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import java.util.*;

/**
 * @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 Map<String,String> saveMawb(Mawb mawb){
        Map<String,String> map = new HashMap<>();
        try{
            log.info("saveMawb start>>>>>>>>>>>");
            Mawb mawb1 = mawbRepository.save(mawb);
            log.info("saveMawb end>>>>>>>>>>>");
            map.put("success","true");
            map.put("msg",mawb1.getMsgId().toString());
        }catch (Exception e){
            log.error("saveMawb() error:"+e.getMessage());
            map.put("success","false");
            map.put("msg",e.getMessage());
        }
        return map;
    }


    /**
     * 校验主单
     * @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();
            log.info("******************* : " + this.iclearCheckUrl);
            //推送海关回执数据
            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.setCode(iclearCheckResponseResult.getCode());
            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;
    }
}