package cn.iocoder.yudao.module.smartfactory.dal.mysql.handlinggroupamountspecifications;

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.smartfactory.controller.admin.handlinggroupamountspecifications.dto.HandlingGroupAmountSpecificationsTotalNumDTO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.handlinggroupamountspecifications.vo.HandlingGroupAmountSpecificationsTotalNumVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.handlinggroupamountspecifications.HandlingGroupAmountSpecificationsDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
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
 *
 * @author 艾楷
 */
@Mapper
public interface HandlingGroupAmountSpecificationsMapper extends BaseMapperX<HandlingGroupAmountSpecificationsDO> {

    default PageResult<HandlingGroupAmountSpecificationsDO> selectPage(HandlingGroupAmountSpecificationsPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<HandlingGroupAmountSpecificationsDO>()
                .eqIfPresent(HandlingGroupAmountSpecificationsDO::getHandlingSpecificationsId, reqVO.getHandlingSpecificationsId())
                .eqIfPresent(HandlingGroupAmountSpecificationsDO::getTotalCount, reqVO.getTotalCount())
                .eqIfPresent(HandlingGroupAmountSpecificationsDO::getDateStr, reqVO.getDateStr())
                .eqIfPresent(HandlingGroupAmountSpecificationsDO::getAmount, reqVO.getAmount())
                .betweenIfPresent(HandlingGroupAmountSpecificationsDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(HandlingGroupAmountSpecificationsDO::getId));
    }

    /**
     * 获取分页列表
     *
     * @param page
     * @param vo
     * @return
     */
    IPage<HandlingGroupAmountSpecificationsDO> getHandlingGroupAmountSpecificationsPage(@Param("page") Page page, @Param("vo") HandlingGroupAmountSpecificationsPageReqVO vo);

    /**
     * 获取详情
     *
     * @param id
     * @return
     */
    HandlingGroupAmountSpecificationsDO getHandlingGroupAmountSpecifications(@Param("id") Long id);

    /**
     * 获取详情 多条
     *
     * @param factoryId
     * @param dateStr
     * @param handlingGroupId
     * @return
     */
    List<HandlingGroupAmountSpecificationsDO> getHandlingGroupAmountSpecificationsList(@Param("factoryId") Long factoryId, @Param("dateStr") String dateStr, @Param("handlingGroupId") Long handlingGroupId);

    /**
     * 获取总金额
     *
     * @param dto
     * @return
     */
    HandlingGroupAmountSpecificationsTotalNumVO getTotalNum(@Param("dto") HandlingGroupAmountSpecificationsTotalNumDTO dto);
}
