package com.zt.plat.module.qms.business.config.dal.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigReportFieldPageReqVO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigReportFieldDO;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import com.zt.plat.module.qms.business.config.controller.vo.*;

/**
 * 报表字段配置 Mapper
 *
 * @author 后台管理
 */
@Mapper
public interface ConfigReportFieldMapper extends BaseMapperX<ConfigReportFieldDO> {

    default PageResult<ConfigReportFieldDO> selectPage(ConfigReportFieldPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<ConfigReportFieldDO>()
                .eqIfPresent(ConfigReportFieldDO::getConfigReportTypeId, reqVO.getConfigReportTypeId())
                .eqIfPresent(ConfigReportFieldDO::getField, reqVO.getField())
                .likeIfPresent(ConfigReportFieldDO::getFieldName, reqVO.getFieldName())
                .eqIfPresent(ConfigReportFieldDO::getFieldType, reqVO.getFieldType())
                .eqIfPresent(ConfigReportFieldDO::getFieldWidth, reqVO.getFieldWidth())
                .eqIfPresent(ConfigReportFieldDO::getDataType, reqVO.getDataType())
                .eqIfPresent(ConfigReportFieldDO::getDecimalPosition, reqVO.getDecimalPosition())
                .eqIfPresent(ConfigReportFieldDO::getIsGroup, reqVO.getIsGroup())
                .eqIfPresent(ConfigReportFieldDO::getTitleGroup, reqVO.getTitleGroup())
                .betweenIfPresent(ConfigReportFieldDO::getIsUpdate, reqVO.getIsUpdate())
                .eqIfPresent(ConfigReportFieldDO::getFormula, reqVO.getFormula())
                .eqIfPresent(ConfigReportFieldDO::getNo, reqVO.getNo())
                .eqIfPresent(ConfigReportFieldDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
                .betweenIfPresent(ConfigReportFieldDO::getCreateTime, reqVO.getCreateTime())
                .eqIfPresent(ConfigReportFieldDO::getRemark, reqVO.getRemark())
                .eqIfPresent(ConfigReportFieldDO::getVersion, reqVO.getVersion())
                .orderByAsc(ConfigReportFieldDO::getNo));
    }
    
    default List<ConfigReportFieldDO> selectList(ConfigReportFieldReqVO reqVO) {
    	return selectList(new LambdaQueryWrapperX<ConfigReportFieldDO>()
                .eqIfPresent(ConfigReportFieldDO::getConfigReportTypeId, reqVO.getConfigReportTypeId())
                .eqIfPresent(ConfigReportFieldDO::getField, reqVO.getField())
                .likeIfPresent(ConfigReportFieldDO::getFieldName, reqVO.getFieldName())
                .eqIfPresent(ConfigReportFieldDO::getFieldType, reqVO.getFieldType())
                .eqIfPresent(ConfigReportFieldDO::getFieldWidth, reqVO.getFieldWidth())
                .eqIfPresent(ConfigReportFieldDO::getDataType, reqVO.getDataType())
                .eqIfPresent(ConfigReportFieldDO::getDecimalPosition, reqVO.getDecimalPosition())
                .eqIfPresent(ConfigReportFieldDO::getIsGroup, reqVO.getIsGroup())
                .eqIfPresent(ConfigReportFieldDO::getTitleGroup, reqVO.getTitleGroup())
                .betweenIfPresent(ConfigReportFieldDO::getIsUpdate, reqVO.getIsUpdate())
                .eqIfPresent(ConfigReportFieldDO::getFormula, reqVO.getFormula())
                .eqIfPresent(ConfigReportFieldDO::getNo, reqVO.getNo())
                .eqIfPresent(ConfigReportFieldDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
                .betweenIfPresent(ConfigReportFieldDO::getCreateTime, reqVO.getCreateTime())
                .eqIfPresent(ConfigReportFieldDO::getRemark, reqVO.getRemark())
                .eqIfPresent(ConfigReportFieldDO::getVersion, reqVO.getVersion())
                .orderByAsc(ConfigReportFieldDO::getNo));
    }

    default List<ConfigReportFieldDO> selectByConfigReportTypeIds(List<Long> configReportTypeIds, List<String> fieldTypes) {
    	return selectList(new LambdaQueryWrapperX<ConfigReportFieldDO>()
    			.inIfPresent(ConfigReportFieldDO::getConfigReportTypeId, configReportTypeIds)
    			.inIfPresent(ConfigReportFieldDO::getFieldType, fieldTypes)			
                .orderByAsc(ConfigReportFieldDO::getNo));
    	
    }
}