From 344a18cc69dd2f728734e940421b717cacb85563 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 02 十一月 2026 22:33:38 +0800
Subject: [PATCH] fix(staff): 排班管理合计出勤改为按打卡记录统计

---
 src/main/resources/mapper/staff/PersonalShiftMapper.xml |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/src/main/resources/mapper/staff/PersonalShiftMapper.xml b/src/main/resources/mapper/staff/PersonalShiftMapper.xml
index b912e24..20cb284 100644
--- a/src/main/resources/mapper/staff/PersonalShiftMapper.xml
+++ b/src/main/resources/mapper/staff/PersonalShiftMapper.xml
@@ -112,6 +112,40 @@
         order by s.create_time
     </select>
 
+    <!-- 鏈堝害瀹為檯鍑哄嫟澶╂暟锛氭寜鎵撳崱璁板綍缁熻锛屼笉鎸夋帓鐝� -->
+    <select id="attendanceDayCountByMonth" resultType="java.util.Map">
+        SELECT r.staff_on_job_id AS user_id, COUNT(DISTINCT r.date) AS days
+        FROM personal_attendance_records r
+        INNER JOIN staff_on_job u ON u.id = r.staff_on_job_id
+        WHERE r.work_start_at IS NOT NULL
+          AND DATE_FORMAT(r.date, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m')
+        <if test="userName != null and userName != ''">
+            AND u.staff_name LIKE CONCAT('%', #{userName}, '%')
+        </if>
+        <if test="sysDeptId != null and sysDeptId != ''">
+            AND u.sys_dept_id = #{sysDeptId}
+        </if>
+        GROUP BY r.staff_on_job_id
+    </select>
+
+    <!-- 骞村害姣忎汉姣忔湀瀹為檯鍑哄嫟澶╂暟 -->
+    <select id="attendanceMonthCountByYear" resultType="java.util.Map">
+        SELECT r.staff_on_job_id AS user_id,
+               DATE_FORMAT(r.date, '%c') AS month,
+               COUNT(DISTINCT r.date) AS days
+        FROM personal_attendance_records r
+        INNER JOIN staff_on_job u ON u.id = r.staff_on_job_id
+        WHERE r.work_start_at IS NOT NULL
+          AND DATE_FORMAT(r.date, '%Y') = DATE_FORMAT(#{time}, '%Y')
+        <if test="userName != null and userName != ''">
+            AND u.staff_name LIKE CONCAT('%', #{userName}, '%')
+        </if>
+        <if test="sysDeptId != null and sysDeptId != ''">
+            AND u.sys_dept_id = #{sysDeptId}
+        </if>
+        GROUP BY r.staff_on_job_id, DATE_FORMAT(r.date, '%c')
+    </select>
+
     <select id="existsAttendanceUsedByConfig" resultType="boolean">
         SELECT EXISTS (
             SELECT 1

--
Gitblit v1.9.3