package cn.iocoder.yudao.module.system.dal.mysql.yk;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.yk.vo.YkElderlyInfoExportReqVO;
import cn.iocoder.yudao.module.system.controller.admin.yk.vo.YkElderlyInfoPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.yk.vo.YkElderlyMealPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.yk.vo.YkElderlyMealRespVO;
import cn.iocoder.yudao.module.system.dal.dataobject.yk.YkElderlyInfoDO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface YkElderlyInfoMapper extends BaseMapperX<YkElderlyInfoDO> {

    default PageResult<YkElderlyInfoDO> selectPage(YkElderlyInfoPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<YkElderlyInfoDO>()
                .likeIfPresent(YkElderlyInfoDO::getElderName, reqVO.getElderName())
                .eqIfPresent(YkElderlyInfoDO::getIdCard, reqVO.getIdCard())
                .eqIfPresent(YkElderlyInfoDO::getSupportType, reqVO.getSupportType())
                .eqIfPresent(YkElderlyInfoDO::getSupportStatus, reqVO.getSupportStatus())
                .betweenIfPresent(YkElderlyInfoDO::getCreateTime, reqVO.getCreateTime())
                .inIfPresent(YkElderlyInfoDO::getTenantId,reqVO.getTenantIds())
                .orderByDesc(YkElderlyInfoDO::getId));
    }

    default List<YkElderlyInfoDO> selectList(YkElderlyInfoExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<YkElderlyInfoDO>()
                .likeIfPresent(YkElderlyInfoDO::getElderName, reqVO.getElderName())
                .eqIfPresent(YkElderlyInfoDO::getIdCard, reqVO.getIdCard())
                .eqIfPresent(YkElderlyInfoDO::getSupportType, reqVO.getSupportType())
                .eqIfPresent(YkElderlyInfoDO::getSupportStatus, reqVO.getSupportStatus())
                .betweenIfPresent(YkElderlyInfoDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(YkElderlyInfoDO::getId));
    }

    List<YkElderlyMealRespVO> selectElderlyMealPage(Page<YkElderlyMealRespVO> page, @Param("pageReqVO") YkElderlyMealPageReqVO pageReqVO);
}