package cn.iocoder.yudao.module.erp.dal.mysql.autocode;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.erp.dal.dataobject.autocode.AutocodePartDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.autocode.AutocodeRecordDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.erp.controller.admin.autocode.vo.*;

/**
 * 编码生成记录 Mapper
 *
 * @author 内蒙必硕
 */
@Mapper
public interface AutocodeRecordMapper extends BaseMapperX<AutocodeRecordDO> {

    default PageResult<AutocodeRecordDO> selectPage(AutocodeRecordPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<AutocodeRecordDO>()
                .eqIfPresent(AutocodeRecordDO::getRuleId, reqVO.getRuleId())
                .eqIfPresent(AutocodeRecordDO::getGenDate, reqVO.getGenDate())
                .eqIfPresent(AutocodeRecordDO::getGenIndex, reqVO.getGenIndex())
                .eqIfPresent(AutocodeRecordDO::getLastResult, reqVO.getLastResult())
                .eqIfPresent(AutocodeRecordDO::getLastSerialNo, reqVO.getLastSerialNo())
                .eqIfPresent(AutocodeRecordDO::getLastInputChar, reqVO.getLastInputChar())
                .eqIfPresent(AutocodeRecordDO::getRemark, reqVO.getRemark())
                .betweenIfPresent(AutocodeRecordDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(AutocodeRecordDO::getId));
    }
    default List<AutocodeRecordDO> selectListByRuleId(Long ruleId) {
        return selectList(AutocodeRecordDO::getRuleId, ruleId);
    }
    default public List<AutocodeRecordDO> selectRecordList(AutocodeRecordDO reqVO){
        return selectList(new LambdaQueryWrapperX<AutocodeRecordDO>()
                .eqIfPresent(AutocodeRecordDO::getRuleId, reqVO.getRuleId())
                .eqIfPresent(AutocodeRecordDO::getLastInputChar, reqVO.getLastInputChar())
                .likeRight(reqVO.getGenDate() !=null,AutocodeRecordDO::getGenDate, reqVO.getGenDate())
                .orderByDesc(AutocodeRecordDO::getGenDate));
    }
}