吴羡
3 小时以前 a797b5801af481990e40c029221c55229291eae8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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<HrmAttendanceHolidayDO> {
 
    default PageResult<HrmAttendanceHolidayDO> selectPage(HrmAttendanceHolidayPageReqVO reqVO) {
        LambdaQueryWrapperX<HrmAttendanceHolidayDO> query = new LambdaQueryWrapperX<HrmAttendanceHolidayDO>()
                .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<HrmAttendanceHolidayDO> selectListByDateRange(LocalDate startDate, LocalDate endDate) {
        return selectList(new LambdaQueryWrapperX<HrmAttendanceHolidayDO>()
                .le(HrmAttendanceHolidayDO::getStartDate, endDate)
                .ge(HrmAttendanceHolidayDO::getEndDate, startDate)
                .orderByAsc(HrmAttendanceHolidayDO::getStartDate)
                .orderByAsc(HrmAttendanceHolidayDO::getId));
    }
 
}