FFMResolveImpl.java 2.6 KB
package com.tianbo.analysis.service.imp;

import com.tianbo.analysis.dao.FFMInfoDao;
import com.tianbo.analysis.dao.TBBaseAirportInfoDao;
import com.tianbo.analysis.exception.FFMResolveException;
import com.tianbo.analysis.model.FFMInfo;
import com.tianbo.analysis.model.TBBaseAirportInfo;
import com.tianbo.analysis.service.FFMResolve;
import com.tianbo.util.Date.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.text.ParseException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Slf4j
@Service
public class FFMResolveImpl implements FFMResolve {

    @Resource
    TBBaseAirportInfoDao airportInfoDao;

    @Resource
    FFMInfoDao ffmInfoDao;

    @Override
    public boolean resolve(FFMInfo ffmInfo) {
        try{
            ffmInfo.textToStringList();
            ffmInfo.resolveFFMPart();
            List<FFMInfo> ffmInfoList = ffmInfo.resolve_ULD_Waybill();
            if (!ffmInfoList.isEmpty()){
                log.info("解析了{}个舱单",ffmInfoList.size());
                for (FFMInfo ffm :  ffmInfoList) {
                    //todo:国际转运判定,需要维护机场代码静态表
                    List<TBBaseAirportInfo> airportInfoList= airportInfoDao.checkInternal(ffm.getOriginatingstationBill(),ffm.getDestinationstationBill());
                    if (!airportInfoList.isEmpty() && airportInfoList.size()>1){
                        if (airportInfoList.get(0).getInternal().equals(airportInfoList.get(1).getInternal()) && "1".equals(airportInfoList.get(1).getInternal())){
                            ffm.setCustomsstatus("002");
                            log.info("运单{}为国际转运货物",ffm.getWaybillnomaster());
                        }
                    }else {
                        log.error("{}{}机场代码未备案",ffm.getOriginatingstationBill(),ffm.getDestinationstationBill());
                    }
                    int result = ffmInfoDao.insertSelective(ffm);
                    if (result <=0){
                        log.error("{}入库失败",ffm.getWaybillnomaster());
                    }
                    //todo:重复报文入库逻辑将以删除旧报文插入新报文为准
                }
                return true;
            }
        } catch (Exception e){
            e.printStackTrace();
            log.error(e.toString());
        }

        return false;
    }
}