| | |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceRecordPageReqVO; |
| | | import cn.iocoder.yudao.module.hrm.dal.dataobject.attendance.HrmAttendanceRecordDO; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.util.ArrayList; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 考勤打卡记录 Mapper |
| | | * |
| | | * @author 芋道源码 |
| | | * @author 超级管理员 |
| | | */ |
| | | @Mapper |
| | | public interface HrmAttendanceRecordMapper extends BaseMapperX<HrmAttendanceRecordDO> { |
| | |
| | | default PageResult<HrmAttendanceRecordDO> selectPage(HrmAttendanceRecordPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<HrmAttendanceRecordDO>() |
| | | .eqIfPresent(HrmAttendanceRecordDO::getUserId, reqVO.getUserId()) |
| | | .eqIfPresent(HrmAttendanceRecordDO::getDeptId, reqVO.getDeptId()) |
| | | .geIfPresent(HrmAttendanceRecordDO::getDate, reqVO.getStartDate()) |
| | | .leIfPresent(HrmAttendanceRecordDO::getDate, reqVO.getEndDate()) |
| | | .eqIfPresent(HrmAttendanceRecordDO::getClockInType, reqVO.getClockInType()) |
| | | .eqIfPresent(HrmAttendanceRecordDO::getClockOutType, reqVO.getClockOutType()) |
| | | .orderByDesc(HrmAttendanceRecordDO::getDate)); |
| | | } |
| | | |
| | | /** |
| | | * 分页查询(支持按员工ID集合过滤,用于「员工姓名」模糊搜索) |
| | | */ |
| | | default PageResult<HrmAttendanceRecordDO> selectPage(HrmAttendanceRecordPageReqVO reqVO, Collection<Long> userIds) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<HrmAttendanceRecordDO>() |
| | | .eqIfPresent(HrmAttendanceRecordDO::getUserId, reqVO.getUserId()) |
| | | .inIfPresent(HrmAttendanceRecordDO::getUserId, userIds) |
| | | .eqIfPresent(HrmAttendanceRecordDO::getDeptId, reqVO.getDeptId()) |
| | | .geIfPresent(HrmAttendanceRecordDO::getDate, reqVO.getStartDate()) |
| | | .leIfPresent(HrmAttendanceRecordDO::getDate, reqVO.getEndDate()) |
| | |
| | | .orderByAsc(HrmAttendanceRecordDO::getDate)); |
| | | } |
| | | |
| | | /** |
| | | * 按员工集合 + 日期区间批量查询打卡记录(用于按日区间的实时考勤统计) |
| | | */ |
| | | default List<HrmAttendanceRecordDO> selectListByUserIdsAndDateBetween(Collection<Long> userIds, |
| | | LocalDate startDate, LocalDate endDate) { |
| | | if (CollUtil.isEmpty(userIds)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | return selectList(new LambdaQueryWrapperX<HrmAttendanceRecordDO>() |
| | | .in(HrmAttendanceRecordDO::getUserId, userIds) |
| | | .ge(HrmAttendanceRecordDO::getDate, startDate) |
| | | .le(HrmAttendanceRecordDO::getDate, endDate) |
| | | .orderByAsc(HrmAttendanceRecordDO::getDate)); |
| | | } |
| | | |
| | | } |