package cn.iocoder.yudao.module.asset.dal.mysql.assetinfo;

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.asset.controller.admin.assetinfo.vo.AssetInfoPageReqVO;
import cn.iocoder.yudao.module.asset.controller.admin.assetinfo.vo.AssetInfoRespVO;
import cn.iocoder.yudao.module.asset.dal.dataobject.assetinfo.AssetInfoDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 固定资产信息 Mapper
 *
 * @author dp
 */
@Mapper
public interface AssetInfoMapper extends BaseMapperX<AssetInfoDO> {

    default PageResult<AssetInfoDO> selectPage(AssetInfoPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<AssetInfoDO>()
                .eqIfPresent(AssetInfoDO::getAssetInfoUuid, reqVO.getAssetInfoUuid())
                .likeIfPresent(AssetInfoDO::getName, reqVO.getName())
                .eqIfPresent(AssetInfoDO::getTypeNumber, reqVO.getTypeNumber())
                .eqIfPresent(AssetInfoDO::getSerialNumber, reqVO.getSerialNumber())
                .betweenIfPresent(AssetInfoDO::getCapitalizationDate, reqVO.getCapitalizationDate())
                .eqIfPresent(AssetInfoDO::getDepreciationYear, reqVO.getDepreciationYear())
                .eqIfPresent(AssetInfoDO::getAssetState, reqVO.getAssetState())
                .eqIfPresent(AssetInfoDO::getAssetDeptId, reqVO.getAssetDeptId())
                .orderByDesc(AssetInfoDO::getId));
    }

    /**
     * 查询资产信息的总条数
     *
     * @param pageReqVO 包含查询条件的分页请求对象
     * @return 总条数
     */
    long selectPageCount(@Param("page") AssetInfoPageReqVO pageReqVO);

    /**
     * 根据分页条件查询资产信息列表
     *
     * @param pageReqVO 包含查询条件的分页请求对象
     * @return 资产信息列表
     */
    List<AssetInfoRespVO> selectPageList(@Param("page") AssetInfoPageReqVO pageReqVO);
}
