package cn.com.countrygarden.bi.main.util.erp;



import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author christ.lai
 * @Description excel上传校验类
 * @Date 14:32 2018/5/24
 */
public class ExcelCheck {
    //性别
    private static final String MAN = "男";
    private static final String WOMEN = "女";

    //    必填	样表中标红的字段	不能为空，或纯空格
    public static boolean isFillAndNotEmpty(String str) {
        if (StringUtil.isNoneBlank(str) && StringUtil.isNoneEmpty(str)) {
            return true;
        }
        return false;
    }

    //    日期格式	表中所有日期类型的字段	年/月/日 ， 如样表所示2018/1/1

    //    纯阿拉伯数字	房屋编号，单元，楼层	只能填0~9的阿拉伯数字
    public static boolean isNum(String Num) {
        Pattern p = Pattern.compile("^-?[0-9]+");
        Matcher m = p.matcher(Num);
        return m.matches();
    }
    //    身份证位数	证件名称，证件号码	若证件名称是身份证，则证件号码必须是18位

    //    空格	样表中标红的字段	前后空格自动过滤掉，内容中间不能有空格
    public static String removeSpace(String filed) {
        if (StringUtil.isNotBlank(filed) && StringUtil.isNotEmpty(filed)) {
            return filed.replace(" ", "");
        }
        return filed;
    }

    // 手机号	移动电话	11位阿拉伯数字
    public static boolean isMobileNO(String mobiles) {
        Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
        Matcher m = p.matcher(mobiles);
        return m.matches();
    }

    //  性别	性别	只能取男和女两个值
    public static boolean isGender(String sex) {
        if (MAN.equals(sex) || WOMEN.equals(sex)) {
            return true;
        }
        return false;
    }

    //    姓名	业主名称，成员名称，客户名称	只允许汉字，英文字母，数字
    public static boolean isNUMOrENGOrCh(String name) {
        Pattern p = Pattern.compile("^[\\u4e00-\\u9fa5a-zA-Z0-9]+$");
        Matcher m = p.matcher(name);
        return m.matches();
    }
    //重复性校验
    public static boolean isRepeat(List<Object> checkList){
        Set<Object> checkSet = new HashSet<Object>();
        for (Object obj:checkList){
            if (checkSet.contains(obj)){
               return false;
            }else{
                checkSet.add(obj);
            }
        }
        return true;
    }
}
