From 6ad5c2cdc193cf7bb02884961b7434cd7f607a0d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 16 四月 2026 10:48:09 +0800
Subject: [PATCH] feat(production): 扩展生产工艺路线支持多产品绑定及工单权限控制

---
 src/main/resources/mapper/production/ProductWorkOrderMapper.xml |   41 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 40 insertions(+), 1 deletions(-)

diff --git a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
index 6eea92a..b026862 100644
--- a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -21,12 +21,23 @@
     <select id="pageProductWorkOrder" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
         SELECT
         pwo.*,
+        pwo.report_user_ids,
         pp.NAME as processName,
         pm.model,
         pm.unit,
         p.product_name AS productName,
         po.nps_no AS productOrderNpsNo,
-        ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus
+        (
+        SELECT GROUP_CONCAT(COALESCE(NULLIF(su.nick_name, ''), su.user_name)
+        ORDER BY FIND_IN_SET(su.user_id, pwo.report_user_ids) SEPARATOR ',')
+        FROM sys_user su
+        WHERE FIND_IN_SET(su.user_id, pwo.report_user_ids)
+        ) AS reportUserNames,
+        ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus,
+        CASE
+        WHEN pwo.work_order_no LIKE 'FG%' THEN '杩斿伐杩斾慨'
+        ELSE '姝e父'
+        END AS work_order_type
         FROM
         product_work_order pwo
         LEFT JOIN product_process_route_item ppri ON ppri.id = pwo.product_process_route_item_id
@@ -44,6 +55,15 @@
             <if test="c.productOrderId != null and c.productOrderId != ''">
                and pwo.product_order_id = #{c.productOrderId}
             </if>
+            <if test="isAdmin == false">
+               and find_in_set(#{userId}, pwo.report_user_ids)
+            </if>
+    </select>
+    <select id="checkUserCanAccess" resultType="java.lang.Integer">
+        SELECT COUNT(1)
+        FROM product_work_order pwo
+        WHERE pwo.id = #{workOrderId}
+          AND find_in_set(#{userId}, pwo.report_user_ids)
     </select>
     <select id="getProductWorkOrderFlowCard" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
         SELECT
@@ -72,4 +92,23 @@
                 p.product_name,
                 po.nps_no
     </select>
+    <select id="selectWorkOrderStartStats" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
+        SELECT
+            id,
+            actual_start_time AS planStartTime,
+            plan_quantity
+        FROM
+            product_work_order
+        WHERE
+            actual_start_time &gt;= #{startDate}
+            AND actual_start_time &lt;= #{endDate}
+    </select>
+    <select id="selectMax" resultType="com.ruoyi.production.pojo.ProductWorkOrder">
+        SELECT SUBSTRING(work_order_no, 3) as work_order_no
+        FROM product_work_order
+        WHERE SUBSTRING(work_order_no, 3) like concat(#{datePrefix},'%')
+        order by work_order_no  desc
+        limit 1
+        ;
+    </select>
 </mapper>

--
Gitblit v1.9.3