package cn.iocoder.yudao.module.hrm.dal.mysql.attendance; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.hrm.dal.dataobject.attendance.HrmAttendanceHolidayDO; import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceHolidayPageReqVO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import org.apache.ibatis.annotations.Mapper; import java.time.LocalDate; import java.util.List; /** * 考勤节假日配置 Mapper * * @author 超级管理员 */ @Mapper public interface HrmAttendanceHolidayMapper extends BaseMapperX { default PageResult selectPage(HrmAttendanceHolidayPageReqVO reqVO) { LambdaQueryWrapperX query = new LambdaQueryWrapperX() .likeIfPresent(HrmAttendanceHolidayDO::getName, reqVO.getName()) .eqIfPresent(HrmAttendanceHolidayDO::getType, reqVO.getType()) .eqIfPresent(HrmAttendanceHolidayDO::getIsLegal, reqVO.getIsLegal()); // 日期筛选:配置时间段与查询区间有交集即命中 LocalDate[] dateRange = reqVO.getDate(); if (dateRange != null && dateRange.length >= 2 && dateRange[0] != null && dateRange[1] != null) { query.le(HrmAttendanceHolidayDO::getStartDate, dateRange[1]) .ge(HrmAttendanceHolidayDO::getEndDate, dateRange[0]); } return selectPage(reqVO, query.orderByDesc(HrmAttendanceHolidayDO::getStartDate) .orderByDesc(HrmAttendanceHolidayDO::getId)); } /** * 查询时间段与 [startDate, endDate] 有交集的配置 * 传入同一天(date, date)时,即查询覆盖该日的配置 */ default List selectListByDateRange(LocalDate startDate, LocalDate endDate) { return selectList(new LambdaQueryWrapperX() .le(HrmAttendanceHolidayDO::getStartDate, endDate) .ge(HrmAttendanceHolidayDO::getEndDate, startDate) .orderByAsc(HrmAttendanceHolidayDO::getStartDate) .orderByAsc(HrmAttendanceHolidayDO::getId)); } }