package cn.iocoder.yudao.module.hrm.service.attendance; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceRecordPageReqVO; import cn.iocoder.yudao.module.hrm.dal.dataobject.attendance.HrmAttendanceRecordDO; import cn.iocoder.yudao.module.hrm.dal.dataobject.attendance.HrmAttendanceExceptionDO; import jakarta.validation.Valid; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; /** * 考勤记录 Service 接口 * * @author 芋道源码 */ public interface HrmAttendanceRecordService { /** * 获得考勤记录分页 */ PageResult getAttendanceRecordPage(HrmAttendanceRecordPageReqVO pageReqVO); /** * 获得考勤记录 */ HrmAttendanceRecordDO getAttendanceRecord(Long id); /** * 获取员工指定日期范围的考勤记录 */ List getAttendanceRecordListByUserIdAndDateBetween(Long userId, String startDate, String endDate); /** * 获取员工指定日期的考勤记录 */ HrmAttendanceRecordDO getAttendanceRecordByUserIdAndDate(Long userId, LocalDate date); /** * 打卡(上班打卡) * * @param userId 员工ID * @param clockTime 打卡时间 * @param location 打卡地点 * @return 考勤记录 */ HrmAttendanceRecordDO clockIn(Long userId, LocalDateTime clockTime, String location); /** * 打卡(下班打卡) * * @param userId 员工ID * @param clockTime 打卡时间 * @param location 打卡地点 * @return 考勤记录 */ HrmAttendanceRecordDO clockOut(Long userId, LocalDateTime clockTime, String location); /** * 补卡审批通过后更新考勤记录 * * @param exception 考勤异常申请 */ void supplementClockIn(HrmAttendanceExceptionDO exception); }