package com.zt.plat.module.erp.dal.mysql.erp;

import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpWarehouseDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * ERP库位 Mapper
 *
 * @author 后台管理
 */
@Mapper
public interface ErpWarehouseMapper extends BaseMapperX<ErpWarehouseDO> {

    default List<ErpWarehouseDO> selectList(ErpWarehousePageReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<ErpWarehouseDO>()
                .likeIfPresent(ErpWarehouseDO::getNumber, reqVO.getNumber())
                .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName())
                .orderByDesc(ErpWarehouseDO::getId));
    }

    String selectMaxCode();

    List<ErpWarehouseDO> getPageByReq(ErpWarehousePageReqVO pageReqVO);


    default PageResult<ErpWarehouseDO> selectPage(ErpWarehousePageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<ErpWarehouseDO>()
                .likeIfPresent(ErpWarehouseDO::getNumber, reqVO.getNumber())
                .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName())
                .likeIfPresent(ErpWarehouseDO::getCompanyIdCustom, reqVO.getCompanyIdCustom())
                .likeIfPresent(ErpWarehouseDO::getCompanyNameCustom, reqVO.getCompanyNameCustom())
                .orderByDesc(ErpWarehouseDO::getId));
    }

    List<ErpWarehouseDO> selectWarehouseByDynamicParams(
            @Param("paramReqVO") ErpWarehousePageReqVO reqVO,
            @Param("pageNum") Integer pageNum,
            @Param("pageSize") Integer pageSize);

    Long selectWarehouseByDynamicParamsCount(@Param("paramReqVO") ErpWarehousePageReqVO reqVO);
}