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

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.ConfigReportTemplatePageReqVO;
import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigReportTemplateDO;
import com.zt.plat.module.qms.enums.QmsCommonConstant;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

/**
 * 锐浪报表模版配置 Mapper
 *
 * @author 后台管理
 */
@Mapper
public interface ConfigReportTemplateMapper extends BaseMapperX<ConfigReportTemplateDO> {

    default PageResult<ConfigReportTemplateDO> selectPage(ConfigReportTemplatePageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<ConfigReportTemplateDO>()
                .likeIfPresent(ConfigReportTemplateDO::getName, reqVO.getName())
                .eqIfPresent(ConfigReportTemplateDO::getKey, reqVO.getKey())
                .eqIfPresent(ConfigReportTemplateDO::getContent, reqVO.getContent())
                .eqIfPresent(ConfigReportTemplateDO::getDataUrl, reqVO.getDataUrl())
                .eqIfPresent(ConfigReportTemplateDO::getData, reqVO.getData())
                .eqIfPresent(ConfigReportTemplateDO::getIsAuthority, reqVO.getIsAuthority())
                .eqIfPresent(ConfigReportTemplateDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
                .betweenIfPresent(ConfigReportTemplateDO::getCreateTime, reqVO.getCreateTime())
                .eqIfPresent(ConfigReportTemplateDO::getUpdateCount, reqVO.getUpdateCount())
                .eqIfPresent(ConfigReportTemplateDO::getRemark, reqVO.getRemark())
                .orderByDesc(ConfigReportTemplateDO::getId));
    }

	default List<ConfigReportTemplateDO> selectHistoryConfigReportTemplateByKey(String key) {
		return selectList(new LambdaQueryWrapperX<ConfigReportTemplateDO>().eq(ConfigReportTemplateDO::getKey, key).eq(ConfigReportTemplateDO::getIsLast, QmsCommonConstant.NO).orderByDesc(ConfigReportTemplateDO::getVersion));
	}
    
    default ConfigReportTemplateDO selectLatestConfigReportTemplateByKey(String key) {
    	return selectOne(new LambdaQueryWrapperX<ConfigReportTemplateDO>()
    			.eq(ConfigReportTemplateDO::getKey, key).eq(ConfigReportTemplateDO::getIsLast, QmsCommonConstant.YES));
    }

	default List<ConfigReportTemplateDO> selectLatestConfigReportTemplateListByKeys(List<String> keyList) {
		return selectList(new LambdaQueryWrapperX<ConfigReportTemplateDO>().in(ConfigReportTemplateDO::getKey, keyList).eq(ConfigReportTemplateDO::getIsLast, QmsCommonConstant.YES));
	}
}