From b09cca58f08d1fe55a7b0e16574fd71cd8b66d8c Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 07 七月 2026 16:49:54 +0800
Subject: [PATCH] 排班排除在这个月之前离职的人员
---
src/main/resources/mapper/staff/PersonalShiftMapper.xml | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/src/main/resources/mapper/staff/PersonalShiftMapper.xml b/src/main/resources/mapper/staff/PersonalShiftMapper.xml
index bd1e5fc..e872e01 100644
--- a/src/main/resources/mapper/staff/PersonalShiftMapper.xml
+++ b/src/main/resources/mapper/staff/PersonalShiftMapper.xml
@@ -18,6 +18,7 @@
u.id user_id
FROM personal_shift s
LEFT JOIN staff_on_job u ON u.id = s.staff_on_job_id
+ LEFT JOIN staff_leave sl ON sl.staff_on_job_id = u.id
LEFT JOIN personal_attendance_location_config palc ON palc.id = s.personal_attendance_location_config_id
<where>
u.id IS NOT NULL
@@ -26,6 +27,7 @@
</if>
<if test="time != null and time != ''">
and DATE_FORMAT(s.work_time, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m')
+ AND (u.staff_state = 1 OR (u.staff_state = 0 AND sl.leave_date IS NOT NULL AND sl.leave_date >= DATE_FORMAT(#{time}, '%Y-%m-01')))
</if>
<if test="userName != null and userName != ''">
and u.staff_name like concat('%', #{userName}, '%')
@@ -44,10 +46,12 @@
GROUP_CONCAT(DATE_FORMAT(s.work_time, '%c'), '锛�', IFNULL(palc.shift, '') order by s.work_time SEPARATOR ';') month_str
FROM personal_shift s
LEFT JOIN staff_on_job u ON u.id = s.staff_on_job_id
- LEFT JOIN personal_attendance_location_config palc ON palc.id = s.personal_attendance_location_config_id
+ LEFT JOIN staff_leave sl ON sl.staff_on_job_id = u.id
+ LEFT JOIN personal_attendance_location_config palc ON palc.id = s.personal_attendance_location_config_id
<where>
<if test="time != null and time != ''">
and DATE_FORMAT(s.work_time, '%Y') = DATE_FORMAT(#{time}, '%Y' )
+ AND (u.staff_state = 1 OR (u.staff_state = 0 AND sl.leave_date IS NOT NULL AND sl.leave_date >= DATE_FORMAT(#{time}, '%Y-01-01')))
</if>
<if test="userName != null and userName != ''">
and u.staff_name like concat('%', #{userName}, '%')
@@ -67,10 +71,12 @@
GROUP_CONCAT(DATE_FORMAT(s.work_time, '%c'), '锛�', IFNULL(palc.shift, '') order by s.work_time SEPARATOR ';') month_str
FROM personal_shift s
LEFT JOIN staff_on_job u ON u.id = s.staff_on_job_id
+ LEFT JOIN staff_leave sl ON sl.staff_on_job_id = u.id
LEFT JOIN personal_attendance_location_config palc ON palc.id = s.personal_attendance_location_config_id
<where>
<if test="time != null and time != ''">
and DATE_FORMAT(s.work_time, '%Y') = DATE_FORMAT(#{time}, '%Y' )
+ AND (u.staff_state = 1 OR (u.staff_state = 0 AND sl.leave_date IS NOT NULL AND sl.leave_date >= DATE_FORMAT(#{time}, '%Y-01-01')))
</if>
<if test="userName != null and userName != ''">
and u.staff_name like concat('%', #{userName}, '%')
@@ -88,10 +94,12 @@
GROUP_CONCAT(s.work_time, '锛�', IFNULL(palc.shift, ''), '锛�', s.id order by s.work_time SEPARATOR ';') AS shift_time, u.id user_id
FROM personal_shift s
LEFT JOIN staff_on_job u ON u.id = s.staff_on_job_id
+ LEFT JOIN staff_leave sl ON sl.staff_on_job_id = u.id
LEFT JOIN personal_attendance_location_config palc ON palc.id = s.personal_attendance_location_config_id
<where>
<if test="time != null and time != ''">
and DATE_FORMAT(s.work_time, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m' )
+ AND (u.staff_state = 1 OR (u.staff_state = 0 AND sl.leave_date IS NOT NULL AND sl.leave_date >= DATE_FORMAT(#{time}, '%Y-%m-01')))
</if>
<if test="userName != null and userName != ''">
and u.staff_name like concat('%', #{userName}, '%')
--
Gitblit v1.9.3