package com.huatek.busi.util;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * 类型转换
 */
public class Convert {

    /**
     * 非零判断
     * @param val
     * @return
     */
    public static boolean isNotZero(BigDecimal val) {
        boolean res = true;
        BigDecimal defVal = createBigD("0");
        if(val.compareTo(defVal)==0) {
            res = false;
        }
        return res;
    }

    /**
     * String 转 BigDecimal
     * @param str
     * @return
     */
    public static BigDecimal str2BigDecimal(String str) {
        BigDecimal val = createBigD("0");
        if(null != str && !"".equals(str)) {
            val = new BigDecimal(str).setScale(5, RoundingMode.HALF_UP);
        }
        return val;
    }

    /**
     * 创建BigDecimal
     * @param defVal 默认值
     * @return
     */
    public static BigDecimal createBigD(String defVal) {
        BigDecimal val;
        if(!"".equals(defVal)) {
            val = new BigDecimal(defVal);
        } else {
            val = new BigDecimal("1");
        }
        return val;
    }

    /**
     * BigDecimal数据范围判断
     * @param val 当前值
     * @param valMin
     * @param valMax
     * @return
     */
    public static boolean getIsBetween(BigDecimal val,BigDecimal valMin,BigDecimal valMax) {
        boolean res = false;
        if(val.compareTo(valMin) >= 0 && val.compareTo(valMax) < 0) {
            res = true;
        }
        return res;
    }

    /**
     * BigDecimal非空及非0校验
     * @param val
     * @return
     */
    public static Boolean isNotEmptyForBigDecimal(BigDecimal val) {
        Boolean status = true;
        if(null == val || val.compareTo(new BigDecimal("0")) == 0) {
            status = false;
        }
        return status;
    }

    /**
     * BigDecimal数据范围判断(括后不括前)
     * @param val 当前值
     * @param valMin
     * @param valMax
     * @return
     */
    public static boolean getIsBetweenO(BigDecimal val,BigDecimal valMin,BigDecimal valMax) {
        boolean res = false;
        if(val.compareTo(valMin)>0 && val.compareTo(valMax)<=0) {
            res = true;
        }
        return res;
    }
}
