From 620bb4712a31791231c4381581f0f60088f079fe Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 27 五月 2026 14:03:45 +0800
Subject: [PATCH] Merge branch 'refs/heads/dev_New_pro' into dev_宁夏_英泽防锈

---
 src/main/resources/mapper/staff/StaffOnJobMapper.xml |  144 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 120 insertions(+), 24 deletions(-)

diff --git a/src/main/resources/mapper/staff/StaffOnJobMapper.xml b/src/main/resources/mapper/staff/StaffOnJobMapper.xml
index 6e0a956..90825e3 100644
--- a/src/main/resources/mapper/staff/StaffOnJobMapper.xml
+++ b/src/main/resources/mapper/staff/StaffOnJobMapper.xml
@@ -3,38 +3,134 @@
 <mapper namespace="com.ruoyi.staff.mapper.StaffOnJobMapper">
     <select id="staffOnJobListPage" resultType="com.ruoyi.staff.dto.StaffOnJobDto">
         SELECT
-        staff_on_job.*,
-        sp.post_name as postName
+        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.native_place,
+        staff_on_job.sys_post_id,
+        staff_on_job.sys_dept_id,
+        staff_on_job.role_id,
+        staff_on_job.adress,
+        staff_on_job.first_study,
+        staff_on_job.profession,
+        staff_on_job.identity_card,
+        staff_on_job.age,
+        staff_on_job.phone,
+        staff_on_job.contract_term,
+        staff_on_job.contract_expire_time,
+        staff_on_job.trial_end_date,
+        staff_on_job.trial_start_date,
+        staff_on_job.sign_date,
+        staff_on_job.salary_select,
+        staff_on_job.pro_salary,
+        staff_on_job.date_select,
+        staff_on_job.remark,
+        staff_on_job.create_time,
+        staff_on_job.create_user,
+        staff_on_job.update_time,
+        staff_on_job.update_user,
+        staff_on_job.tenant_id,
+        staff_on_job.alias,
+        staff_on_job.birth_date,
+        staff_on_job.nation,
+        staff_on_job.marital_status,
+        staff_on_job.pro_term,
+        staff_on_job.positive_date,
+        staff_on_job.basic_salary,
+        staff_on_job.dept_id,
+        sp.post_name AS post_name,
+        sd.dept_name AS dept_name,
+        MIN(t1.contract_start_time) AS contract_start_time,
+        MAX(t1.contract_end_time) AS contract_end_time,
+        (
+        SELECT GROUP_CONCAT(sec.contact_name SEPARATOR ',')
+        FROM staff_emergency_contact sec
+        WHERE sec.staff_on_job_id = staff_on_job.id
+        ) AS emergency_contact,
+        (
+        SELECT GROUP_CONCAT(sec.contact_phone SEPARATOR ',')
+        FROM staff_emergency_contact sec
+        WHERE sec.staff_on_job_id = staff_on_job.id
+        ) AS emergency_contact_phone
         FROM staff_on_job
-        LEFT JOIN
-        sys_post sp ON sp.post_id = staff_on_job.sys_post_id
-        where 1=1
-        <if test="staffOnJob.staffState != null">
-        AND staff_state = #{staffOnJob.staffState}
+        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 staff_contract AS t1 ON t1.staff_on_job_id = staff_on_job.id
+        <where>
+            <if test="staffOnJob.staffState != null">
+                AND staff_on_job.staff_state = #{staffOnJob.staffState}
+            </if>
+            <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
+                AND staff_on_job.staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
+            </if>
+            <if test="staffOnJob.entryDateStart != null and staffOnJob.entryDateStart != '' ">
+                AND staff_on_job.contract_expire_time &gt;= DATE_FORMAT(#{staffOnJob.entryDateStart},'%Y-%m-%d')
+            </if>
+            <if test="staffOnJob.entryDateEnd != null and staffOnJob.entryDateEnd != '' ">
+                AND staff_on_job.contract_expire_time &lt;= DATE_FORMAT(#{staffOnJob.entryDateEnd},'%Y-%m-%d')
+            </if>
+            <if test="staffOnJob.sysDeptId != null">
+                AND staff_on_job.sys_dept_id = #{staffOnJob.sysDeptId}
+            </if>
+        </where>
+        GROUP BY staff_on_job.id
+        <if test="staffOnJob.contractStartTime != null">
+            HAVING MIN(t1.contract_start_time) = #{staffOnJob.contractStartTime}
         </if>
-        <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
-            AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
-        </if>
-        <if test="staffOnJob.entryDateStart != null and staffOnJob.entryDateStart != '' ">
-            AND contract_expire_time &gt;= DATE_FORMAT(#{staffOnJob.entryDateStart},'%Y-%m-%d')
-        </if>
-        <if test="staffOnJob.entryDateEnd != null and staffOnJob.entryDateEnd != '' ">
-            AND  contract_expire_time &lt;= DATE_FORMAT(#{staffOnJob.entryDateEnd},'%Y-%m-%d')
-        </if>
+        order by staff_on_job.create_time desc
     </select>
     <select id="staffOnJobList" resultType="com.ruoyi.staff.dto.StaffOnJobDto">
         SELECT
         staff_on_job.*,
-        sp.post_name as postName
+        sp.post_name as postName,
+        sd.dept_name as deptName
         FROM staff_on_job
         LEFT JOIN
         sys_post sp ON sp.post_id = staff_on_job.sys_post_id
-        where 1=1
-        <if test="staffOnJob.staffState != null">
-            AND staff_state = #{staffOnJob.staffState}
-        </if>
-        <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
-            AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
-        </if>
+        LEFT JOIN
+        sys_dept sd ON sd.dept_id = staff_on_job.sys_dept_id
+        <where>
+            <if test="staffOnJob.staffState != null">
+                AND staff_state = #{staffOnJob.staffState}
+            </if>
+            <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
+                AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
+            </if>
+        </where>
+        order by staff_on_job.create_time desc
+    </select>
+    <!-- 缁熻鎸囧畾鏃ユ湡鐨勫湪鑱屽憳宸ユ暟 -->
+    <select id="countOnJobStaffByDate" resultType="java.lang.Integer">
+        SELECT COUNT(*)
+        FROM staff_on_job
+        WHERE staff_state = 1
+          AND DATE_FORMAT(create_time, '%Y-%m-%d') &lt;= #{date}
+    </select>
+
+    <!-- 缁熻鎸囧畾鏈堜唤鐨勬柊鍏ヨ亴鍛樺伐鏁� -->
+    <select id="countNewHireByMonth" resultType="java.lang.Integer">
+        SELECT COUNT(*)
+        FROM staff_on_job
+        WHERE staff_state = 1
+          AND DATE_FORMAT(create_time, '%Y-%m-%d') BETWEEN #{monthStart} AND #{monthEnd}
+    </select>
+
+    <select id="selectStaffByNickName" resultType="com.ruoyi.staff.pojo.StaffOnJob" parameterType="java.lang.String">
+        SELECT
+        id
+        nick_name AS staffName
+        FROM staff_on_job
+        WHERE del_flag = '0'
+        <choose>
+            <when test="staffName != null and staffName != ''">
+                AND nick_name = #{staffName}
+            </when>
+            <otherwise>
+                AND 1 = 0
+            </otherwise>
+        </choose>
+        LIMIT 1
     </select>
 </mapper>

--
Gitblit v1.9.3