WaybillTools.java 2.3 KB
package com.tianbo.analysis.tools;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author mrz
 * 关于运单的工具类
 */
@Slf4j
public class WaybillTools {

    /**
     * 检查运单格式是否符合要求 格式要求为172-66666666
     * @param waybillNo 运单号
     * @return true符合
     */
    public static boolean checkWaybillFormat(String waybillNo){
        if (StringUtils.isNotBlank(waybillNo)){
            String pattern = "^\\d{3}-\\d{8}$";
            // 创建 Pattern 对象
            Pattern r = Pattern.compile(pattern);

            boolean isMatch = Pattern.matches(pattern, waybillNo);

            return isMatch;
        }

        return false;
    }

    /**
     * 转换运单格式,将17266666666格式转换成172-66666666
     * @param awbNo 运单号,格式为17255555555
     * @return 转换后的运单号
     */
    public static String awbFormat(String awbNo) {
        if (!StringUtils.isEmpty(awbNo)) {
            //适配邮单解析
            String pattern = "\\d{11}";
            boolean isMatch = Pattern.matches(pattern, awbNo);
            if (!isMatch){
                return awbNo;
            }

            StringBuffer stringBuffer = new StringBuffer(awbNo);
            stringBuffer.insert(3, "-");
            awbNo = stringBuffer.toString();
            return awbNo;
        }
        return "";
    }

    /**
     * 模七校验
     * @param waybillNo
     * @return
     */
    public static boolean model7Check(String waybillNo){
        String pattern = "\\d{3}-\\d{8}";
        // 创建 Pattern 对象
        Pattern r = Pattern.compile(pattern);
        // 现在创建 matcher 对象
        Matcher m = r.matcher(waybillNo);
        if (m.find()){
            String num = waybillNo.split("-")[1];
            String num_7 = num.substring(0,7);
            String num_end = num.substring(7,8);
            if (Integer.parseInt(num_7)% 7 == Integer.parseInt(num_end)){
                return true;
            }else {
                log.error("{}模七不通过",waybillNo);
            }

        }else {
            log.error("{}运单格式不正确",waybillNo);
        }

        return false;
    }
}