From b10ca1ac64b0d17cc17e1560cd6705d46baad106 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期二, 03 十一月 2026 19:44:20 +0800
Subject: [PATCH] fix(hrm): 补齐考勤工时聚合查询

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/attendance/HrmAttendanceRecordMapper.java |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 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 fb54086..66eeb7e 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
@@ -4,11 +4,15 @@
 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.attendance.vo.HrmAttendanceRecordPageReqVO;
+import cn.iocoder.yudao.module.hrm.controller.admin.workhour.vo.HrmEmployeeWorkHourReqVO;
 import cn.iocoder.yudao.module.hrm.dal.dataobject.attendance.HrmAttendanceRecordDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.time.LocalDate;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 鑰冨嫟鎵撳崱璁板綍 Mapper
@@ -44,4 +48,27 @@
                 .orderByAsc(HrmAttendanceRecordDO::getDate));
     }
 
+    /**
+     * 鎸夊憳宸ヨ仛鍚堣�冨嫟宸ユ椂锛岀敤浜庢湀搴﹀伐鏃舵眹鎬讳笌鍛樺伐宸ユ椂缁熻銆�
+     *
+     * @return user_id / work_days / work_hours / overtime_hours
+     */
+    @Select("""
+            <script>
+            SELECT user_id,
+                   COUNT(DISTINCT date) AS work_days,
+                   IFNULL(SUM(work_hours), 0) AS work_hours,
+                   IFNULL(SUM(overtime_hours), 0) AS overtime_hours
+            FROM hrm_attendance_record
+            WHERE deleted = 0
+              <if test="reqVO.userId != null"> AND user_id = #{reqVO.userId} </if>
+              <if test="reqVO.deptId != null"> AND dept_id = #{reqVO.deptId} </if>
+              <if test="reqVO.startDate != null"> AND date &gt;= #{reqVO.startDate} </if>
+              <if test="reqVO.endDate != null"> AND date &lt;= #{reqVO.endDate} </if>
+            GROUP BY user_id
+            ORDER BY user_id
+            </script>
+            """)
+    List<Map<String, Object>> selectWorkHourSummary(@Param("reqVO") HrmEmployeeWorkHourReqVO reqVO);
+
 }
\ No newline at end of file

--
Gitblit v1.9.3