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 >= #{reqVO.startDate} </if>
+ <if test="reqVO.endDate != null"> AND date <= #{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