package jnpf.attendance.service;
import jnpf.base.service.SuperService;
import jnpf.entity.AttendanceGroup;
import jnpf.entity.attendance.AttendanceShiftSettingEntity;
import jnpf.exception.HandleException;
import jnpf.model.attendance.dto.AttendanceShiftDto;
import jnpf.model.attendance.vo.AttendanceShiftSettingVo;
import jnpf.model.attendance.vo.ShiftPeriodVo;
import java.util.List;
import java.util.Map;
/**
*
* 考勤组配置-考勤配置 服务类
*
*
* @author ahua
* @since 2023-11-22
*/
public interface AttendanceShiftSettingService extends SuperService {
/**
* 根据考勤组ID和考勤组视图列表获取启用的班次设置信息。
*
* @param groupIds 考勤组ID列表
* @param attendanceGroupVos 考勤组视图对象列表
* @return 启用的班次设置信息映射
*/
Map getEnableShiftSetting(List groupIds, List attendanceGroupVos);
/**
* 初始化班次设置。
*
* @param groupId 考勤组ID
*/
void initShiftSetting(String groupId);
/**
* 根据考勤组ID获取所有班次设置。
*
* @param groupId 考勤组ID
* @return 班次设置视图对象
*/
AttendanceShiftSettingVo findAllByGroupId(String groupId);
/**
* 根据考勤组ID获取单个班次设置。
*
* @param groupId 考勤组ID
* @return 班次设置视图对象
*/
AttendanceShiftSettingVo findByGroupId(String groupId);
/**
* 保存班次设置信息。
*
* @param dto 班次设置数据传输对象
* @throws HandleException 处理异常
*/
void save(AttendanceShiftDto dto) throws HandleException;
/**
* 更改系统类型。
*
* @param groupId 考勤组ID
* @param systemType 系统类型
*/
void changeSystemType(String groupId, Integer systemType);
/**
* 删除指定的班次周期。
*
* @param periodId 班次周期ID
*/
void delPeriod(String periodId);
/**
* 更改班次设置的启用状态。
*
* @param groupId 考勤组ID
* @param enable 启用状态(0禁用,1启用)
* @param byGroupId 班次设置视图对象
*/
void changeStatus(String groupId, Integer enable, AttendanceShiftSettingVo byGroupId);
/**
* 根据考勤组ID获取班次周期列表。
*
* @param groupId 考勤组ID
* @return 班次周期视图对象列表
*/
List periodList(String groupId);
/**
* 智能排班专用:便于区分 §6.1(未取得班次定义)与 §6.2(已取得定义但班次列表为空)。
*
* @return {@code null} — 未取得该考勤组启用班次设置(与「占位空列表」不同);{@link Collections#emptyList()} —
* 已取得设置但未配置班次周期;否则为周期列表。
*/
List periodListForIntelligentSchedule(String groupId);
/**
* 自我排班的班次列表
*
* @return 班次周期视图对象列表
*/
List periodListForSelfScheduling();
void hisShiftSetting(Map group2orgMap, Map org2GroupMap);
}