gaoluyang
5 天以前 ce5f8a87bb5d411bae67c39b269d879677bb98da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package cn.iocoder.yudao.module.hrm.service.attendance;
 
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmEmployeeScheduleBatchAssignReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmEmployeeScheduleBatchAssignRespVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmEmployeeScheduleLeaveRespVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmEmployeeScheduleListReqVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmEmployeeScheduleRespVO;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmEmployeeScheduleSaveReqVO;
 
import java.util.List;
 
/**
 * 员工排班 Service 接口
 *
 * @author 超级管理员
 */
public interface HrmEmployeeScheduleService {
 
    /**
     * 查询某月排班列表
     */
    List<HrmEmployeeScheduleRespVO> getScheduleList(HrmEmployeeScheduleListReqVO reqVO);
 
    /**
     * 批量保存排班(整月覆盖式:有班次 upsert,无班次删除)
     */
    void saveSchedule(List<HrmEmployeeScheduleSaveReqVO> saveReqVOList);
 
    /**
     * 批量排班:按部门(含下级)+ 岗位 + 员工状态筛选员工,按日期区间统一排班。
     *
     * 规则:
     * 1. 节假日配置优先于周六日规则(由 {@code isWorkDay} 决定工作日/休息日);
     * 2. 工作日写入指定班次,休息日/节假日清空原有班次;
     * 3. 员工当天存在已审批通过的请假时跳过,不改动该单元格;
     * 4. 逻辑删除后遗留的唯一键冲突通过“复活旧行”规避。
     */
    HrmEmployeeScheduleBatchAssignRespVO batchAssign(HrmEmployeeScheduleBatchAssignReqVO reqVO);
 
    /**
     * 查询排班页需要标记的请假日期(已审批通过,按天展开)
     */
    List<HrmEmployeeScheduleLeaveRespVO> getScheduleLeaveList(HrmEmployeeScheduleListReqVO reqVO);
 
}