From e15efbe0bcb1b5e5ea21f0c937635746a3143321 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 29 六月 2026 10:08:12 +0800
Subject: [PATCH] 1.大屏接口增加空指针防护

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

diff --git a/src/main/resources/mapper/staff/PersonalShiftMapper.xml b/src/main/resources/mapper/staff/PersonalShiftMapper.xml
index d8ddb1d..9ece2d1 100644
--- a/src/main/resources/mapper/staff/PersonalShiftMapper.xml
+++ b/src/main/resources/mapper/staff/PersonalShiftMapper.xml
@@ -12,28 +12,28 @@
         <result column="work_time" property="workTime" />
     </resultMap>
     <select id="performanceShiftPage" resultType="com.ruoyi.staff.dto.PerformanceShiftMapDto">
-         SELECT
+        SELECT
         u.staff_name name,
-        GROUP_CONCAT(s.work_time, '锛�', IFNULL(palc.shift, ''), '锛�', s.id order by s.work_time SEPARATOR ';') AS shift_time,
-                u.id user_id
+        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 personal_attendance_location_config palc ON palc.id = s.personal_attendance_location_config_id
         <where>
-             <if test="sysDeptId != null and sysDeptId != ''">
+            <if test="sysDeptId != null and sysDeptId != ''">
                 and u.sys_dept_id = #{sysDeptId}
             </if>
             <if test="time != null and time != ''">
-                and DATE_FORMAT(s.work_time, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m' )
+                and DATE_FORMAT(s.work_time, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m')
             </if>
             <if test="userName != null and userName != ''">
                 and u.staff_name like concat('%', #{userName}, '%')
             </if>
         </where>
-        GROUP BY u.id
-        order by s.create_time
+        GROUP BY u.id, u.staff_name
+        ORDER BY MAX(s.create_time) desc
     </select>
-   
+
     <select id="performanceShiftYear" resultType="java.util.Map">
          SELECT
          u.staff_name name,
@@ -103,4 +103,22 @@
         order by s.create_time
     </select>
 
+    <!-- 鏌ヨ鍛樺伐鐨勮鍋囦俊鎭紙浠巃pproval_instance鐨刦orm_config瑙f瀽锛� -->
+    <!-- 鍏宠仈璺緞: staff_on_job.staff_no = sys_user.user_name, sys_user.user_id = approval_instance.applicant_id -->
+    <select id="selectStaffHolidayDates" resultType="java.util.Map">
+        SELECT
+            soj.id AS staff_id,
+            ai.form_config
+        FROM staff_on_job soj
+        INNER JOIN sys_user su ON su.user_name = soj.staff_no
+        INNER JOIN approval_instance ai ON ai.applicant_id = su.user_id
+        WHERE soj.id IN
+        <foreach collection="staffIds" item="staffId" open="(" separator="," close=")">
+            #{staffId}
+        </foreach>
+        AND ai.business_type IN (14, 19)
+        AND ai.status = 'APPROVED'
+        AND ai.deleted = 0
+    </select>
+
 </mapper>

--
Gitblit v1.9.3