From c9d4ba37c1f681b12e24014013fa9a28734bad42 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期四, 20 八月 2026 17:00:02 +0800
Subject: [PATCH] feat 功能修正

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/attendance/HrmAttendanceRecordMapper.java |   21 ++++++++++++++++++++-
 1 files changed, 20 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..4b7beb7 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,16 +4,19 @@
 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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.time.LocalDate;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 鑰冨嫟鎵撳崱璁板綍 Mapper
  *
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  */
 @Mapper
 public interface HrmAttendanceRecordMapper extends BaseMapperX<HrmAttendanceRecordDO> {
@@ -29,6 +32,22 @@
                 .orderByDesc(HrmAttendanceRecordDO::getDate));
     }
 
+    /**
+     * 鍛樺伐宸ユ椂缁熻锛堣�冨嫟鍙e緞锛夛細鎸夊憳宸ヨ仛鍚堝嚭鍕ゅぉ鏁般�佹甯稿伐鏃朵笌鍔犵彮宸ユ椂
+     */
+    default List<Map<String, Object>> selectWorkHourSummary(HrmEmployeeWorkHourReqVO reqVO) {
+        return selectMaps(new QueryWrapper<HrmAttendanceRecordDO>()
+                .select("user_id",
+                        "COUNT(*) AS work_days",
+                        "SUM(IFNULL(work_hours, 0)) AS work_hours",
+                        "SUM(IFNULL(overtime_hours, 0)) AS overtime_hours")
+                .eq(reqVO.getUserId() != null, "user_id", reqVO.getUserId())
+                .eq(reqVO.getDeptId() != null, "dept_id", reqVO.getDeptId())
+                .ge(reqVO.getStartDate() != null, "date", reqVO.getStartDate())
+                .le(reqVO.getEndDate() != null, "date", reqVO.getEndDate())
+                .groupBy("user_id"));
+    }
+
     default HrmAttendanceRecordDO selectByUserIdAndDate(Long userId, LocalDate date) {
         return selectOne(new LambdaQueryWrapperX<HrmAttendanceRecordDO>()
                 .eq(HrmAttendanceRecordDO::getUserId, userId)

--
Gitblit v1.9.3