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); }