package jnpf.attendance.mapper;

import jnpf.base.mapper.SuperMapper;
import jnpf.entity.attendance.AttendanceShiftNameEntity;
import jnpf.entity.attendance.AttendanceShiftSettingPeriodEntity;
import jnpf.model.attendance.dto.FixedClassDto;
import jnpf.model.attendance.dto.FixedClassSaveDto;
import jnpf.model.attendance.dto.ShiftNameDto;
import jnpf.model.attendance.dto.ShiftNameQueryDto;
import jnpf.model.attendance.vo.attendance.ShiftNameListVo;
import jnpf.model.attendance.vo.attendance.ShiftNameVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author huanglinpan
 * @Date 2024/5/9 10:27
 * @Version 1.0 （版本号）
 */
public interface AttendanceShiftNameSettingMapper extends SuperMapper<AttendanceShiftNameEntity> {

    /**
     * 校验班次名称是否重复
     * @param dto 保存数据
     */
    Integer checkName(@Param("dto") ShiftNameDto dto);

    /**
     * 新增班次名称信息
     * @param dto 保存数据
     */
    void save(@Param("dto") ShiftNameDto dto);

    /**
     * 保存班次名称信息
     * @param dto 保存数据
     */
    void update(@Param("dto") ShiftNameDto dto);

    /**
     * 获取班次名称信息详情
     * @param id 保存数据
     */
    ShiftNameVo getDetail(@Param("id") String id);

    /**
     * 删除原来的关联班次信息
     * @param id 班次名称信息id
     */
    void deletePeriodByShiftId(@Param("id") String id);

    /**
     * 修改启停状态
     * @param shiftNameId 班次名称Id
     * @param enable 状态（1启用 2停用）
     * @param userId 用户Id
     */
    void updateEnable(@Param("shiftNameId") String shiftNameId, @Param("enable") Integer enable, @Param("userId") String userId);

    /**
     * 删除班次
     * @param shiftNameId 班次Id
     * @param userId 用户
     */
    void delete(@Param("shiftNameId") String shiftNameId, @Param("userId") String userId);

    /**
     * 获取固定排班班次详情
     * @param groupId 考勤组
     */
    List<ShiftNameVo> getFixedClass(@Param("groupId") String groupId);


    /**
     * 新增固定排班班次详情
     * @param fixedClassDtos 固定班信息
     */
    void saveFixedClass(@Param("fixedClassDtos") List<FixedClassSaveDto> fixedClassDtos);

    /**
     * 删除固定排班信息
     * @param settingId 配置Id
     */
    void deleteFixedClass(@Param("settingId") String settingId);

    /**
     * 获取考勤组班次列表
     * @param queryDto 考勤组查询信息
     * @return
     */
    List<ShiftNameListVo> getListByGroupId(@Param("queryDto") ShiftNameQueryDto queryDto);

    /**
     * 修改排班基础配置
     * @param groupId 考勤组Id
     * @param systemType  班制类型（1固定班 2排班）
     * @param userId 用户
     */
    void updateByGroupId(@Param("groupId") String groupId, @Param("systemType") Integer systemType, @Param("userId") String userId);
}
