| | |
| | | /** |
| | | * 请假申请 Mapper |
| | | * |
| | | * @author 芋道源码 |
| | | * @author 超级管理员 |
| | | */ |
| | | @Mapper |
| | | public interface HrmLeaveApplicationMapper extends BaseMapperX<HrmLeaveApplicationDO> { |
| | |
| | | * @param endTime 结束时间 |
| | | * @return 请假记录列表 |
| | | */ |
| | | /** |
| | | * 查询与指定时间区间【有交集】的请假单 |
| | | * |
| | | * <p>语义与 selectApprovedListByUserIdAndTimeRange 不同:那边要求请假单完整落在区间内, |
| | | * 这里只要有重叠就算命中。考勤判断「某天是否请假」必须用这个: |
| | | * 跨天的请假单(如 9/24 18:00 ~ 9/25 18:00)在 9/25 这天也算请假。</p> |
| | | * |
| | | * <p>交集条件:start_time < rangeEnd 且 end_time >= rangeStart</p> |
| | | * |
| | | * @param userId 员工ID(hrm_leave_application.user_id) |
| | | * @param status 审批状态,传 null 不过滤 |
| | | * @param rangeStart 区间开始(含) |
| | | * @param rangeEnd 区间结束(不含) |
| | | * @return 与区间有交集的请假单 |
| | | */ |
| | | default List<HrmLeaveApplicationDO> selectListByUserIdAndOverlapDate( |
| | | Long userId, Integer status, LocalDateTime rangeStart, LocalDateTime rangeEnd) { |
| | | return selectList(new LambdaQueryWrapperX<HrmLeaveApplicationDO>() |
| | | .eq(HrmLeaveApplicationDO::getUserId, userId) |
| | | .eqIfPresent(HrmLeaveApplicationDO::getStatus, status) |
| | | .lt(HrmLeaveApplicationDO::getStartTime, rangeEnd) |
| | | .ge(HrmLeaveApplicationDO::getEndTime, rangeStart) |
| | | .orderByAsc(HrmLeaveApplicationDO::getStartTime)); |
| | | } |
| | | |
| | | default List<HrmLeaveApplicationDO> selectApprovedListByUserIdAndTimeRange(Long userId, LocalDateTime startTime, LocalDateTime endTime) { |
| | | return selectList(new LambdaQueryWrapperX<HrmLeaveApplicationDO>() |
| | | .eq(HrmLeaveApplicationDO::getUserId, userId) |