package cn.iocoder.yudao.module.hrm.dal.mysql.approval; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 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 org.apache.ibatis.annotations.Mapper; import java.time.LocalDateTime; import java.util.List; /** * 请假申请 Mapper * * @author 芋道源码 */ @Mapper public interface HrmLeaveApplicationMapper extends BaseMapperX { default PageResult selectPage(HrmLeaveApplicationPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(HrmLeaveApplicationDO::getNo, reqVO.getNo()) .eqIfPresent(HrmLeaveApplicationDO::getUserId, reqVO.getUserId()) .eqIfPresent(HrmLeaveApplicationDO::getDeptId, reqVO.getDeptId()) .eqIfPresent(HrmLeaveApplicationDO::getLeaveType, reqVO.getLeaveType()) .eqIfPresent(HrmLeaveApplicationDO::getStatus, reqVO.getStatus()) .betweenIfPresent(HrmLeaveApplicationDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(HrmLeaveApplicationDO::getId)); } default HrmLeaveApplicationDO selectByNo(String no) { return selectOne(HrmLeaveApplicationDO::getNo, no); } default HrmLeaveApplicationDO selectByProcessInstanceId(String processInstanceId) { return selectOne(HrmLeaveApplicationDO::getProcessInstanceId, processInstanceId); } /** * 查询员工在指定时间范围内已审批通过的请假记录 * * @param userId 员工ID(系统用户ID) * @param startTime 开始时间 * @param endTime 结束时间 * @return 请假记录列表 */ default List selectApprovedListByUserIdAndTimeRange(Long userId, LocalDateTime startTime, LocalDateTime endTime) { return selectList(new LambdaQueryWrapperX() .eq(HrmLeaveApplicationDO::getUserId, userId) .eq(HrmLeaveApplicationDO::getStatus, HrmAuditStatusEnum.APPROVE.getStatus()) .ge(HrmLeaveApplicationDO::getStartTime, startTime) .le(HrmLeaveApplicationDO::getEndTime, endTime)); } }