From 2f16c2e5a23587005e9ad5651f1807e618d999b4 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期五, 06 十一月 2026 09:53:06 +0800
Subject: [PATCH] fix(hrm): 考勤记录支持员工姓名搜索,并全量核对两个模块的所有搜索条件

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/attendance/HrmAttendanceRecordMapper.java |   35 ++++++++++++++++++++++++++++++++++-
 1 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/attendance/HrmAttendanceRecordMapper.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/attendance/HrmAttendanceRecordMapper.java
index 292540d..91dccb8 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/attendance/HrmAttendanceRecordMapper.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/attendance/HrmAttendanceRecordMapper.java
@@ -5,15 +5,18 @@
 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> {
@@ -21,6 +24,21 @@
     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())
@@ -43,4 +61,19 @@
                 .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));
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3