yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/approval/HrmLeaveApplicationMapper.java
@@ -6,9 +6,12 @@
import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationPageReqVO;
import cn.iocoder.yudao.module.hrm.dal.dataobject.approval.HrmLeaveApplicationDO;
import cn.iocoder.yudao.module.hrm.enums.HrmAuditStatusEnum;
import cn.hutool.core.collection.CollUtil;
import org.apache.ibatis.annotations.Mapper;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
@@ -54,4 +57,24 @@
                .le(HrmLeaveApplicationDO::getEndTime, endTime));
    }
    /**
     * 批量查询多个员工在指定时间范围内已审批通过的请假记录(用于按日区间的考勤统计)
     *
     * @param userIds   员工ID集合(系统用户ID)
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 请假记录列表
     */
    default List<HrmLeaveApplicationDO> selectApprovedListByUserIdsAndTimeRange(Collection<Long> userIds,
                                                                                LocalDateTime startTime, LocalDateTime endTime) {
        if (CollUtil.isEmpty(userIds)) {
            return new ArrayList<>();
        }
        return selectList(new LambdaQueryWrapperX<HrmLeaveApplicationDO>()
                .in(HrmLeaveApplicationDO::getUserId, userIds)
                .eq(HrmLeaveApplicationDO::getStatus, HrmAuditStatusEnum.APPROVE.getStatus())
                .le(HrmLeaveApplicationDO::getStartTime, endTime)
                .ge(HrmLeaveApplicationDO::getEndTime, startTime));
    }
}