From d25b0270e0bb9266ed92c7c74ee1cb8fb24aa51a Mon Sep 17 00:00:00 2001
From: Fancy <Fancy.fx@outlook.com>
Date: 星期二, 14 一月 2025 10:53:02 +0800
Subject: [PATCH] add input_number

---
 pms-parent/pms-global/src/main/resources/mapper/StaAssemblyWorkLastMapper.xml |   43 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/pms-parent/pms-global/src/main/resources/mapper/StaAssemblyWorkLastMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/StaAssemblyWorkLastMapper.xml
index 908518c..2e4be54 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/StaAssemblyWorkLastMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/StaAssemblyWorkLastMapper.xml
@@ -64,6 +64,9 @@
                     column="assistants"/>
     </resultMap>
 
+<!--    <resultMap id="customResultMap" type="cn.hutool.json.JSONObject">-->
+<!--        <result column="columnName" typeHandler="com.yourpackage.CustomJsonTypeHandler"/>-->
+<!--    </resultMap>-->
     <sql id="Base_Column_List">
         id
         ,user_id,line_id,
@@ -332,33 +335,59 @@
             and id != #{id,jdbcType=BIGINT}
         </if>
     </select>
-    <select id="queryWorkList" resultType="cn.hutool.json.JSONObject">
-        WITH  a as ( SELECT pap.id as plan_id,pap.`name` as plan_name,
+    <select id="queryWorkList" resultType="cn.hutool.json.JSONObject" >
+        WITH  a as ( SELECT pap.id as plan_id,pap.order_name,pap.`name` as plan_name,pap.number,pap.input_number,pap.output_number,
                             ppp.id as process_id,ppp.`name` as process_name,
                             ppn.id as node_id, ppn.content as node_name,
                             pp.`code` as pro_code , pp.`name` as pro_name,
                             pbn.batch_number as batch_number, 	 ppn.sort as sort
-                     from  pr_assembly_plan pap, pr_production_process ppp,pr_production_node ppn,
-                           plt_product pp,pr_batch_number pbn
+                     from  (SELECT pl.*, po.`NAME` AS order_name FROM pr_assembly_plan pl  LEFT JOIN pr_order po ON pl.order_id = po.id) pap,
+                           pr_production_process ppp,pr_production_node ppn,plt_product pp,pr_batch_number pbn
                      WHERE pap.process_id = ppp.id and ppp.id = ppn.process_id
                        and pap.pro_id = pp.id and pap.batch_id = pbn.id
                      order by plan_id,process_id,sort)
-        SELECT ps.station_name,ppl.line_name,sawl.user_name,sawl.assistants_name,sawl.plan_name ,sawl.process_name,sawl.node_name,sawl.dt,sawl.work_type FROM
+        SELECT ps.station_name,IFNULL(ppl.line_name,'') AS line_name,IFNULL(sawl.user_name,'') AS user_name,IFNULL(sawl.assistants_name,'') AS assistants_name,
+               IFNULL(sawl.order_name,'') AS order_name,IFNULL(sawl.pro_name,'') AS pro_name, IFNULL(sawl.plan_name,'') AS plan_name,
+               IF(sawl.plan_name IS NULL,'',CONCAT(IFNULL(sawl.number,'0'),'/',IFNULL(sawl.input_number,'0'),'/',IFNULL(sawl.output_number,'0')))  AS plan_number,
+               IFNULL(sawl.process_name,'') AS process_name,IFNULL(sawl.node_name,'') AS node_name,IFNULL(sawl.dt,'') AS dt,sawl.work_type FROM
             (SELECT id,`name` AS station_name, line_id  FROM plt_station WHERE deleted = 0 AND disabled = 0) ps
                 LEFT JOIN  (SELECT id,`name` AS line_name FROM plt_production_line) ppl ON ps.line_id = ppl.id
-                LEFT JOIN  (select w.station_id,b.`name` as user_name ,GROUP_CONCAT(us.name) as assistants_name, a.plan_name, a.process_name, a.node_name,w.dt,
+                LEFT JOIN  (select w.station_id,b.`name` as user_name ,GROUP_CONCAT(us.name) as assistants_name,a.order_name, a.pro_name,a.plan_name,
+                                   a.number,a.input_number,a.output_number,a.process_name, a.node_name,w.dt,
                                    CASE w.work_type
                                        WHEN '1' THEN '缁勮'
                                        WHEN '2' THEN '娴嬭瘯'
                                        WHEN '3' THEN '鍝佹'
                                        WHEN '4' THEN '缁翠慨'
-                                       ELSE w.work_type END AS work_type
+                                       ELSE IFNULL(w.work_type,'') END AS work_type
                             from sta_assembly_work_last w
                                      LEFT JOIN ba_user b ON w.user_id = b.id
                                      LEFT JOIN a ON w.plan_id = a.plan_id AND w.node_id = a.node_id
                                      LEFT JOIN ba_user us  ON FIND_IN_SET(us.id,w.assistants) GROUP BY w.id
             ) sawl ON ps.id = sawl.station_id
     </select>
+    <select id="queryAttendUser" resultType="cn.hutool.json.JSONObject">
+        WITH  total AS	(
+        SELECT DISTINCT user_id,dt AS login_time FROM sta_assembly_work_last
+        union
+        SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(a.assistants, ',', b.help_topic_id + 1 ), ',', - 1 ) AS user_id ,login_time
+        FROM
+        (SELECT assistants ,dt AS login_time FROM sta_assembly_work_last)  a
+        JOIN mysql.help_topic AS b ON b.help_topic_id <![CDATA[ < ]]> ( LENGTH( a.assistants ) - LENGTH( REPLACE ( a.assistants, ',', '' ) ) + 1 )
+        union
+        SELECT DISTINCT user_id ,end_time AS login_time FROM sta_assembly_work_history WHERE end_time BETWEEN #{startTime,jdbcType=TIMESTAMP} AND #{endTime,jdbcType=TIMESTAMP}
+        union
+        SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(c.assistants, ',', d.help_topic_id + 1 ), ',', - 1 ) AS user_id ,login_time
+        FROM
+        (SELECT assistants,end_time AS login_time FROM sta_assembly_work_history WHERE end_time BETWEEN #{startTime,jdbcType=TIMESTAMP} AND #{endTime,jdbcType=TIMESTAMP})  c
+        JOIN mysql.help_topic AS d ON d.help_topic_id <![CDATA[ < ]]> ( LENGTH( c.assistants ) - LENGTH( REPLACE ( c.assistants, ',', '' ) ) + 1 ))
+        SELECT MAX(CASE record.title WHEN 'require_attend' THEN record.count_user ELSE 0 END) require_attend,
+        MAX(CASE record.title WHEN 'actual_attend' THEN record.count_user ELSE 0 END) actual_attend
+        FROM
+        (SELECT COUNT(DISTINCT user_id) AS count_user,'require_attend' AS title  FROM total WHERE user_id !=''
+        UNION
+        SELECT COUNT(DISTINCT user_id) AS count_user,'actual_attend' AS title  FROM total WHERE user_id !=''  AND login_time <![CDATA[ > ]]>  #{todayDt,jdbcType=TIMESTAMP}) record
+    </select>
 
     <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
         delete

--
Gitblit v1.8.0