package com.sundot.airport.attendance.mapper;

import java.util.Date;
import java.util.List;

import com.sundot.airport.attendance.domain.AttendanceTeamUserRecord;
import org.apache.ibatis.annotations.Param;

/**
 * 考勤班组成员Mapper接口
 *
 * @author ruoyi
 * @date 2025-09-06
 */
public interface AttendanceTeamUserRecordMapper {
    /**
     * 查询考勤班组成员
     *
     * @param userId 考勤班组成员主键
     * @return 考勤班组成员
     */
    public AttendanceTeamUserRecord selectAttendanceTeamUserRecordByUserId(@Param("userId") Long userId, @Param("attendanceDate") Date attendanceDate, @Param("checkInType") String checkInType);

    /**
     * 查询考勤班组成员列表
     *
     * @param attendanceTeamUserRecord 考勤班组成员
     * @return 考勤班组成员集合
     */
    public List<AttendanceTeamUserRecord> selectAttendanceTeamUserRecordList(AttendanceTeamUserRecord attendanceTeamUserRecord);

    /**
     * 新增考勤班组成员
     *
     * @param attendanceTeamUserRecord 考勤班组成员
     * @return 结果
     */
    public int insertAttendanceTeamUserRecord(AttendanceTeamUserRecord attendanceTeamUserRecord);

    /**
     * 修改考勤班组成员
     *
     * @param attendanceTeamUserRecord 考勤班组成员
     * @return 结果
     */
    public int updateAttendanceTeamUserRecord(AttendanceTeamUserRecord attendanceTeamUserRecord);

    /**
     * 删除考勤班组成员
     *
     * @param userId 考勤班组成员主键
     * @return 结果
     */
    public int deleteAttendanceTeamUserRecordByUserId(Long userId);

    /**
     * 批量删除考勤班组成员
     *
     * @param userIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAttendanceTeamUserRecordByUserIds(Long[] userIds);

    int insertAttendanceTeamUserRecordList(List<AttendanceTeamUserRecord> attendanceTeamUserRecord);

    /**
     * 根据用户ID和时间范围查询考勤班组成员
     *
     * @param userId    用户ID
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return 考勤班组成员列表
     */
    List<AttendanceTeamUserRecord> selectAttendanceTeamUserRecordByUserIdAndDateRange(Long userId, Date startDate, Date endDate);

    /**
     * 批量删除考勤班组成员
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAttendanceTeamUserRecordByIds(Long[] ids);

    /**
     * 查询指定用户最近维护班组长成员时的考勤日期
     *
     * @param attendanceTeamUserRecord 查询条件
     * @return 考勤日期
     */
    public Date selectMaxDateBy(AttendanceTeamUserRecord attendanceTeamUserRecord);
}
