From f088078e626e16b28d69cdbcbf514b30f1dcefe7 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 22 四月 2026 11:51:58 +0800
Subject: [PATCH] refactor(production): 优化生产订单及工单号生成逻辑

---
 src/main/resources/mapper/staff/StaffOnJobMapper.xml |   77 ++++++++++++++++++++++++++++++++++----
 1 files changed, 69 insertions(+), 8 deletions(-)

diff --git a/src/main/resources/mapper/staff/StaffOnJobMapper.xml b/src/main/resources/mapper/staff/StaffOnJobMapper.xml
index 6e0a956..24c6623 100644
--- a/src/main/resources/mapper/staff/StaffOnJobMapper.xml
+++ b/src/main/resources/mapper/staff/StaffOnJobMapper.xml
@@ -3,14 +3,40 @@
 <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.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,
+        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
-        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}
+            AND staff_state = #{staffOnJob.staffState}
         </if>
         <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">
             AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
@@ -19,16 +45,19 @@
             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')
+            AND contract_expire_time &lt;= DATE_FORMAT(#{staffOnJob.entryDateEnd},'%Y-%m-%d')
         </if>
     </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
+        LEFT JOIN
+        sys_dept sd ON sd.dept_id = staff_on_job.sys_dept_id
         where 1=1
         <if test="staffOnJob.staffState != null">
             AND staff_state = #{staffOnJob.staffState}
@@ -37,4 +66,36 @@
             AND staff_name LIKE CONCAT('%',#{staffOnJob.staffName},'%')
         </if>
     </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