gaoluyang
119 分钟以前 578f84ece732a710278e7914396e127d8a27ed8a
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/approval/HrmLeaveApplicationMapper.java
@@ -54,4 +54,25 @@
                .le(HrmLeaveApplicationDO::getEndTime, endTime));
    }
    /**
     * 查询与指定时间范围有交集的审批通过请假记录(可限定申请人)
     *
     * 请假开始早于范围起点、结束晚于范围终点也算交集,因此用 start <= 范围终点 且 end >= 范围起点。
     *
     * @param startTime 范围开始时间
     * @param endTime   范围结束时间
     * @param userIds   申请人ID集合,为空表示不限
     * @return 请假记录列表
     */
    default List<HrmLeaveApplicationDO> selectApprovedListByTimeRange(LocalDateTime startTime, LocalDateTime endTime,
                                                                      java.util.Collection<Long> userIds) {
        LambdaQueryWrapperX<HrmLeaveApplicationDO> query = new LambdaQueryWrapperX<HrmLeaveApplicationDO>()
                .inIfPresent(HrmLeaveApplicationDO::getUserId, userIds);
        query.eq(HrmLeaveApplicationDO::getStatus, HrmAuditStatusEnum.APPROVE.getStatus())
                .le(HrmLeaveApplicationDO::getStartTime, endTime)
                .ge(HrmLeaveApplicationDO::getEndTime, startTime)
                .orderByAsc(HrmLeaveApplicationDO::getStartTime);
        return selectList(query);
    }
}