package jnpf.attendance.mapper;

import jnpf.base.mapper.SuperMapper;
import jnpf.entity.attendance.AttendancePublicHolidayRules;
import jnpf.model.attendance.dto.AttendancePublicHolidayRulesDto;
import jnpf.model.attendance.vo.attendance.AttendancePublicHolidayBalance;
import jnpf.model.attendance.vo.attendance.AttendancePublicHolidayRulesVo;
import jnpf.model.attendance.vo.attendance.PublicHolidayTransferListVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * @author panpan
 */
public interface PublicHolidayRulesMapper extends SuperMapper<AttendancePublicHolidayRules> {
    /**
     * 列表
     * @param iText 搜索条件
     * @return 列表
     */
    List<AttendancePublicHolidayRulesVo> list(@Param("iText") String iText);

    /**
     * 添加
     * @param publicHolidayRulesDto 实体
     * @return 主键
     */
    void insert(@Param("publicHolidayRulesDto") AttendancePublicHolidayRulesDto publicHolidayRulesDto, @Param("userId") String userId);

    /**
     * 修改
     * @param publicHolidayRulesDto 实体
     */
    void update(@Param("publicHolidayRulesDto") AttendancePublicHolidayRulesDto publicHolidayRulesDto, @Param("userId") String userId);


    /**
     * 修改状态
     * @param id 主键
     * @param state 状态 1是 0否
     * @param userId 用户id
     */
    void updateState(@Param("id") String id, @Param("state") int state, @Param("userId") String userId);

    /**
     * 公休余额查询
     * @param yearMonth 年月格式yyyy-MM
     * @param userIds 用户ID列表
     * @return 公休余额列表
     */
    List<AttendancePublicHolidayBalance> getBalanceList(@Param("yearMonth") String yearMonth, @Param("userIds") List<String> userIds);

    /**
     * 公休余额批量添加
     * @param addList 公休余额列表
     * @param yearMonth 年月格式yyyy-MM
     */
    void batchAddPublicHolidayBalance(@Param("addList") List<AttendancePublicHolidayBalance> addList, @Param("yearMonth") String yearMonth);

    /**
     * 公休余额查询
     * @param yearMonth 年月格式yyyy-MM
     * @param userIds 用户ID列表
     * @return 公休余额列表
     */
    List<AttendancePublicHolidayBalance> getPublicHolidayBalanceList(@Param("yearMonth") String yearMonth, @Param("userIds") List<String> userIds);

    /**
     * 公休余额删除
     * @param yearMonth 年月格式yyyy-MM
     * @param userIds 用户ID列表
     */
    void deletePublicHolidayBalance(@Param("yearMonth") String yearMonth, @Param("userIds") List<String> userIds);

    /**
     * 批量查询用户公休转存休天数
     * @param yearMonth 年月格式yyyy-MM
     * @param userIds 用户ID列表
     */
    List<PublicHolidayTransferListVo> getPublicHolidayTransferList(@Param("yearMonth") String yearMonth, @Param("userIds") List<String> userIds);

    /**
     * 清除公休范围
     */
    void updateScopeOfAdaptation();

    /**
     * 查询用户指定月份公休已有记录
     * @param yearMonth 年月格式yyyy-MM
     * @param userIds 用户ID列表
     * @return 公休余额列表
     */
    List<String> selectPublicHolidayBalanceList(@Param("yearMonth") String yearMonth, @Param("userIds") List<String> userIds);
}
