package com.qmth.sop.business.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qmth.sop.business.bean.dto.DataPermissionDto;
import com.qmth.sop.business.bean.result.DingSubmitResult;
import com.qmth.sop.business.entity.TBDingSubmit;
import com.qmth.sop.common.enums.DingSubmitStatusEnum;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description: 考勤提交mapper
 * @Author: CaoZixuan
 * @Date: 2023-08-25
 */
public interface TBDingSubmitMapper extends BaseMapper<TBDingSubmit> {

    /**
     * 考勤提交分页查询
     *
     * @param iPage                分页参数
     * @param serviceUnitId        服务单元id
     * @param dingSubmitStatusList 考勤提交状态
     * @param submitUserId         提交人id
     * @param archivesName         档案名称
     * @param supplierId           供应商id
     * @param customName           客户名
     * @param sopNo                sop号
     * @param violationHoursLimit  违规工时限制
     * @param dingExceptionLimit   需处理异常考勤限制
     * @param remainLimit          补卡限制
     * @param exceptionLimit       异常限制
     * @param dpr                  数据权限
     * @return 考勤提交分页查询结果
     */
    IPage<DingSubmitResult> findDingSubmitPage(@Param("iPage") Page<DingSubmitResult> iPage,
                                               @Param("serviceUnitId") Long serviceUnitId,
                                               @Param("dingSubmitStatusList") List<DingSubmitStatusEnum> dingSubmitStatusList,
                                               @Param("submitUserId") Long submitUserId,
                                               @Param("archivesName") String archivesName,
                                               @Param("supplierId") Long supplierId,
                                               @Param("customName") String customName,
                                               @Param("sopNo") String sopNo,
                                               @Param("violationHoursLimit") Integer violationHoursLimit,
                                               @Param("dingExceptionLimit") Integer dingExceptionLimit,
                                               @Param("remainLimit") Integer remainLimit,
                                               @Param("exceptionLimit") Integer exceptionLimit,
                                               @Param("dpr") DataPermissionDto dpr);

    /**
     * 考勤提交列表查询
     *
     * @param serviceUnitId        服务单元id
     * @param dingSubmitStatusList 考勤提交状态
     * @param submitUserId         提交人id
     * @param archivesId           用户档案id
     * @param archivesName         档案名称
     * @param supplierId           供应商id
     * @param customName           客户名
     * @param sopNo                sop号
     * @param violationHoursLimit  违规工时限制
     * @param dingExceptionLimit   需处理异常考勤限制
     * @param remainLimit          补卡限制
     * @param exceptionLimit       异常限制
     * @param dpr                  数据权限
     * @return 考勤提交分页查询结果
     */
    List<DingSubmitResult> findDingSubmitList(@Param("serviceUnitId") Long serviceUnitId,
                                              @Param("dingSubmitStatusList") List<DingSubmitStatusEnum> dingSubmitStatusList,
                                              @Param("submitUserId") Long submitUserId,
                                              @Param("archivesId") Long archivesId,
                                              @Param("archivesName") String archivesName,
                                              @Param("supplierId") Long supplierId,
                                              @Param("customName") String customName,
                                              @Param("sopNo") String sopNo,
                                              @Param("violationHoursLimit") Integer violationHoursLimit,
                                              @Param("dingExceptionLimit") Integer dingExceptionLimit,
                                              @Param("remainLimit") Integer remainLimit,
                                              @Param("exceptionLimit") Integer exceptionLimit,
                                              @Param("dpr") DataPermissionDto dpr);
}
