liyong
2026-04-11 5e53e2ad185c189696d96b77cbf4cb845079452a
src/main/resources/mapper/staff/StaffOnJobMapper.xml
@@ -3,15 +3,38 @@
<mapper namespace="com.ruoyi.staff.mapper.StaffOnJobMapper">
    <select id="staffOnJobListPage" resultType="com.ruoyi.staff.dto.StaffOnJobDto">
        SELECT
        staff_on_job.*,
        staff_on_job.id,
        staff_on_job.staff_state,
        staff_on_job.staff_no,
        staff_on_job.staff_name,
        staff_on_job.sex,
        staff_on_job.age,
        staff_on_job.native_place,
        staff_on_job.phone,
        staff_on_job.role_id,
        staff_on_job.adress,
        staff_on_job.contract_expire_time,
        sp.post_name as postName,
        sd.dept_name as deptName
        sd.dept_name as deptName,
        sec.contact_name as emergency_contact,
        sec.contact_phone as emergency_contact_phone
        FROM staff_on_job
        LEFT JOIN
        sys_post sp ON sp.post_id = staff_on_job.sys_post_id
        LEFT JOIN
        sys_dept sd ON sd.dept_id = staff_on_job.sys_dept_id
        where 1=1
        LEFT JOIN sys_post sp ON sp.post_id = staff_on_job.sys_post_id
        LEFT JOIN sys_dept sd ON sd.dept_id = staff_on_job.sys_dept_id
        LEFT JOIN (
        SELECT
        sec1.*
        FROM staff_emergency_contact sec1
        INNER JOIN (
        SELECT
        staff_on_job_id,
        MAX(create_time) as max_create_time
        FROM staff_emergency_contact
        GROUP BY staff_on_job_id
        ) sec2 ON sec1.staff_on_job_id = sec2.staff_on_job_id
        AND sec1.create_time = sec2.max_create_time
        ) sec ON sec.staff_on_job_id = staff_on_job.id
        WHERE 1=1
        <if test="staffOnJob.staffState != null">
            AND staff_state = #{staffOnJob.staffState}
        </if>