package cn.estsh.i3plus.pojo.mdm.sqlpack;

import cn.estsh.i3plus.pojo.base.bean.BaseBean;
import cn.estsh.i3plus.pojo.base.enumutil.MdmEnumUtil;
import cn.estsh.i3plus.pojo.mdm.bean.base.DdlPackMdmModelBean;

import java.util.List;

/**
 * @Description :
 * @Reference :
 * @Author : yunhao
 * @CreateDate : 2020-11-22 20:37
 * @Modify:
 **/
public final class DdlMdmBusiPreparedPack extends DdlMdmModelPreparedPack {

    protected static MdmEnumUtil.HQL_ENTITY_TYPE entityType = MdmEnumUtil.HQL_ENTITY_TYPE.BUSI;

    /**
     * 封装日期
     *
     * @param startDate  开始日期
     * @param endDate    开始日期和结束日期，以逗号分隔（分为开始时间和结束时间）
     * @param columnName HQL里对应的时间字段
     * @param packBean   封装的HQL对象
     * @param isShowTime 是否包含时分秒
     */
    public static void timeBuilder(String startDate, String endDate, String columnName, DdlPackMdmModelBean packBean, boolean isShowTime) {
        timeBuilder(entityType, startDate, endDate, columnName, packBean, isShowTime);
    }

    /**
     * 封装日期
     *
     * @param startDate      开始日期
     * @param endDate        结束日期
     * @param columnName     列名
     * @param isLeftContain  左闭？
     * @param isRightContain 右闭？
     * @param packBean       HQL对象
     */
    public static void timeBuilder(String startDate, String endDate, String columnName, boolean isLeftContain, boolean isRightContain, DdlPackMdmModelBean packBean) {
        timeBuilder(entityType, startDate, endDate, columnName, isLeftContain, isRightContain, packBean);
    }

    /**
     * 封装日期
     *
     * @param date       开始日期和结束日期，以逗号分隔（分为开始时间和结束时间）
     * @param columnName HQL里对应的时间字段
     * @param packBean   封装的HQL
     * @param showTaday  如果没有开始时间和结束时间，是否查询当天时间，还是查询所有时间。true:查询当天时间，false:查询所有
     * @param isShowTime 是否包含时分秒
     */
    public static void timeBuilder(String date, String columnName, DdlPackMdmModelBean packBean, Boolean showTaday, boolean isShowTime) {
        timeBuilder(entityType, date, columnName, packBean, showTaday, isShowTime);
    }

    /**
     * 封装日期
     *
     * @param date            日期，需要和时间字段的值格式相同
     * @param startColumnName HQL里对应的开始时间字段
     * @param endColumnName   HQL里对应的结束时间字段
     * @param packBean        封装的HQL
     * @param isShowTime      是否包含时分秒
     */
    public static void getTimeBetweenCol(String date, String startColumnName, String endColumnName, DdlPackMdmModelBean packBean, boolean isShowTime) {
        getTimeBetweenCol(entityType, date, startColumnName, endColumnName, packBean, isShowTime);
    }

    /**
     * 封装String对象成order by排序
     *s
     * @param order
     * @param columnName  列名
     * @param packBean
     */
    public static void getOrderByPack(MdmEnumUtil.HQL_ENTITY_TYPE[] entityTypes, Object[] order, String[] columnName, DdlPackMdmModelBean packBean) {
        getOrderByPack(entityTypes, order, columnName, packBean);
    }

    /**
     * 对象默认排序
     *
     * @param bean
     */
    public static void getOrderDefault(BaseBean bean) {
        getOrderDefault(bean);
    }

    /**
     * 封装String对象成like语句
     *
     * @param val        对象值
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringLikerPack(String val, String columnName, DdlPackMdmModelBean packBean) {
        getStringLikerPack(entityType, val, columnName, packBean);
    }

    /**
     * 封装String对象成like语句
     *
     * @param val        对象值
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringLikerPackOr(String val, String columnName, DdlPackMdmModelBean packBean) {
        getStringLikerPackOr(entityType, val, columnName, packBean);
    }

    /**
     * 封装String对象成like语句(右侧模糊)
     *
     * @param val        对象值
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringRightLikerPack(String val, String columnName, DdlPackMdmModelBean packBean) {
        getStringRightLikerPack(entityType, val, columnName, packBean);
    }

    /**
     * 封装String对象成like语句(左侧模糊)
     *
     * @param val        对象值
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringLeftLikerPack(String val, String columnName, DdlPackMdmModelBean packBean) {
        getStringLeftLikerPack(entityType, val, columnName, packBean);
    }

    /**
     * 封装String对象成equal语句
     *
     * @param val
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringEqualPack(String val, String columnName, DdlPackMdmModelBean packBean) {
        getStringEqualPack(entityType, val, columnName, packBean);
    }

    /**
     * 封装String对象成equal语句
     *
     * @param val
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringLikePack(String val, String columnName, DdlPackMdmModelBean packBean) {
        getStringLikePack(entityType, val, columnName, packBean);
    }

    /**
     * 封装String对象成不等于语句
     *
     * @param val
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringNoEqualPack(String val, String columnName, DdlPackMdmModelBean packBean) {
        getStringNoEqualPack(entityType, val, columnName, packBean);
    }

    /**
     * 封装String对象成equal语句
     *
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringNotNullPack(String columnName, DdlPackMdmModelBean packBean) {
        getStringNotNullPack(entityType, columnName, packBean);
    }

    /**
     * 封装String对象成equal语句
     *
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringNotBlanklPack(String columnName, DdlPackMdmModelBean packBean) {
        getStringNotBlanklPack(entityType, columnName, packBean);
    }

    /**
     * 封装String对象成equal语句
     *
     * @param val
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringEqualPackOr(String val, String columnName, DdlPackMdmModelBean packBean) {
        getStringEqualPackOr(entityType, val, columnName, packBean);
    }

    /**
     * 封装long或者int的正整数对象成equal语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumEqualPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumEqualPack(entityType, data, columnName, packBean);
    }

    /**
     * 两个字段不相等
     *
     * @param firstColumnName 列名
     * @param twoColumnName
     * @param packBean
     */
    public static void getNotEqueals(String firstColumnName, String twoColumnName, DdlPackMdmModelBean packBean) {
        getNotEqueals(entityType, firstColumnName, twoColumnName, packBean);
    }

    /**
     * 封装long或者int的负整数对象成equal语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNegativeNumEqualPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNegativeNumEqualPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装long或者int的整数对象成equal语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumEqualPackOr(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumEqualPackOr(entityType, data, columnName, packBean);
    }

    /**
     * 封装long或者int的整数对象成equal语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumEqualPackOverZero(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumEqualPackOverZero(entityType, data, columnName, packBean);
    }

    /**
     * 封装long或者int的整数对象成equal语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumWithZeroEqualPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumWithZeroEqualPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装String对象成大于语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringBiggerPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getStringBiggerPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装String对象成大于不等于语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringBiggerNotEqualPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getStringBiggerNotEqualPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装String对象成小于语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringSmallerPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getStringSmallerPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装String对象成小于不等于语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getStringSmallerNotEqualPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getStringSmallerNotEqualPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装double对象成大于语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumberBiggerPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumberBiggerPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装double对象成大于语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumberBiggerPackContainsZero(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumberBiggerPackContainsZero(entityType, data, columnName, packBean);
    }

    /**
     * 封装double对象成大于等于语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumberBiggerEqualPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumberBiggerEqualPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装double对象成小于语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumberSmallerPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumberSmallerPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装double对象成小于等于语句
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumberSmallerEqualPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumberSmallerEqualPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装long或者int的整数对象成equal语句(不等于)
     *
     * @param data
     * @param columnName 列名
     * @param packBean
     */
    public static void getNumNOEqualPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNumNOEqualPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装in查询语句
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getInPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getInPack(entityType, data, columnName, packBean);
    }

    /**
     * 两个提交用or拼接
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getNotOrIsNull(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNotOrIsNull(entityType, data, columnName, packBean);
    }

    /**
     * 封装in查询语句
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getOrInPack(String data, String columnName, DdlPackMdmModelBean packBean) {
        getOrInPack(entityType, data, columnName, packBean);
    }

    /**
     * 封装in String查询语句
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getInPackArray(Object[] data, String columnName, DdlPackMdmModelBean packBean) {
        getInPackArray(entityType, data, columnName, packBean);
    }

    /**
     * 封装not in String查询语句
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getNotInPackArray(Object[] data, String columnName, DdlPackMdmModelBean packBean) {
        getNotInPackArray(entityType, data, columnName, packBean);
    }

    /**
     * 封装in String查询语句
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getInPackList(List<?> data, String columnName, DdlPackMdmModelBean packBean) {
        getInPackList(entityType, data, columnName, packBean);
    }

    /**
     * 封装not in List查询语句
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getNotInPackList(List<?> data, String columnName, DdlPackMdmModelBean packBean) {
        getNotInPackList(entityType, data, columnName, packBean);
    }

    /**
     * 封装in String查询语句
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getInOrPackString(String data, String columnName, DdlPackMdmModelBean packBean) {
        getInOrPackString(entityType, data, columnName, packBean);
    }

    /**
     * 封装in String查询语句
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getNotInPackString(String data, String columnName, DdlPackMdmModelBean packBean) {
        getNotInPackString(entityType, data, columnName, packBean);
    }

    /**
     * 封装not in查询语句
     *
     * @param data
     * @param columnName
     * @param packBean
     */
    public static void getNotInPack(Object data, String columnName, DdlPackMdmModelBean packBean) {
        getNotInPack(entityType, data, columnName, packBean);
    }

    /**
     * 转换排序列
     *
     * @param columnName 列名
     * @param basisType  基本类型
     * @return
     * @see CommonEnumUtil.BASIS_TYPE
     */
    public static String getOrderColConvertType(String columnName, int basisType) {
        return getOrderColConvertType(entityType, columnName, basisType);
    }

}