From c488d63b58458ea0dee56ffbb4c5b66b2141d4f1 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 30 五月 2025 09:59:30 +0800
Subject: [PATCH] 去除画蛇添足代码

---
 pms-parent/pms-global/src/main/resources/mapper/OthStatisticWorkloadMapper.xml |   46 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/pms-parent/pms-global/src/main/resources/mapper/OthStatisticWorkloadMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/OthStatisticWorkloadMapper.xml
index 314b3d2..728956c 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/OthStatisticWorkloadMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/OthStatisticWorkloadMapper.xml
@@ -34,12 +34,50 @@
                        DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY),'%Y-%m-%d') -- 濡傛灉涓や釜琛ㄩ兘娌℃湁鏁版嵁锛岃繑鍥炲墠涓�澶╂椂闂�  鏃犵敤
                    ) AS max_date;
     </select>
-
+    <select id="queryStatisticWork" resultType="cn.hutool.json.JSONObject">
+        WITH  total as (select
+        DISTINCT(t.device_no) device_no,t.curr_node,t.node_content,t.number,p.pro_name, p.plan_name,u.id user_id,u.`name` user_name
+        FROM
+        (select DISTINCT device_no,plan_id,station_id,curr_node,node_content,number,updated_by from sta_device_production_log_past
+        where out_time BETWEEN #{startDt} AND #{endDt}
+        union
+        select DISTINCT device_no,plan_id,station_id,curr_node,node_content,number,updated_by from sta_device_production_log
+        where out_time BETWEEN #{startDt} AND #{endDt}
+        ) t
+        left join (select pap.id,pap.`name` as plan_name,pp.`name` as pro_name
+        from  pr_assembly_plan pap, plt_product pp where pap.pro_id = pp.id) p on t.plan_id = p.id
+        left JOIN ba_user u on u.id=t.updated_by),
+        assistants_total as (select t.device_no,t.curr_node,t.node_content,t.number,p.pro_name, p.plan_name,u.id user_id,u.`name` user_name
+        FROM
+        ( SELECT a.*,SUBSTRING_INDEX( SUBSTRING_INDEX( a.assistants, ',', b.help_topic_id + 1 ), ',', - 1 ) AS assistant FROM
+        (select DISTINCT device_no,plan_id,station_id,curr_node,node_content,number,updated_by,assistants from sta_device_production_log_past
+        where assistants IS NOT NULL AND out_time BETWEEN  #{startDt} AND #{endDt}
+        union
+        select DISTINCT device_no,plan_id,station_id,curr_node,node_content,number,updated_by,assistants from sta_device_production_log
+        where assistants IS NOT NULL AND out_time BETWEEN #{startDt} AND #{endDt}) a
+        JOIN mysql.help_topic AS b ON b.help_topic_id  <![CDATA[ < ]]> ( LENGTH( a.assistants ) - LENGTH( REPLACE ( a.assistants, ',', '' ) ) + 1 )
+        ) t
+        left join (select pap.id,pap.`name` as plan_name,pp.`name` as pro_name
+        from  pr_assembly_plan pap, plt_product pp where pap.pro_id = pp.id) p on t.plan_id = p.id
+        left JOIN ba_user u on u.id=t.assistant)
+        SELECT  user_name, MAX(CASE record.type WHEN '璁″垝浠诲姟' THEN record.number ELSE 0 END) plan,
+        MAX(CASE record.type WHEN '涓存椂浠诲姟' THEN record.number ELSE 0 END) unplan_device,
+        MAX(CASE record.type WHEN '涓存椂浠诲姟(鏃犺澶囩爜)' THEN record.number ELSE 0 END) unplan,
+        MAX(CASE record.type WHEN '杈呭姪宸ヤ綔' THEN record.number ELSE 0 END) assistant
+        FROM (
+        select user_name,'璁″垝浠诲姟' AS type,sum(number) as number  from total where curr_node IS NOT NULL GROUP BY user_name
+        UNION
+        select user_name,'涓存椂浠诲姟' AS type, sum(number) as number  from total where curr_node IS NULL AND (device_no !='' AND device_no IS NOT NULL) GROUP BY user_name
+        UNION
+        select user_name,'涓存椂浠诲姟(鏃犺澶囩爜)' AS type, sum(number) as number  from total where curr_node IS NULL AND (device_no IS NULL OR device_no ='') GROUP BY user_name
+        UNION
+        select user_name,'杈呭姪宸ヤ綔' AS type , sum(number) as number  from assistants_total GROUP BY  user_name ) record GROUP BY  record.user_name;
+    </select>
     <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
         delete from oth_statistic_workload
         where  id = #{id,jdbcType=BIGINT} 
     </delete>
-    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pmsGlobal.pojoOth.OthStatisticWorkload" useGeneratedKeys="true">
+    <insert id="insert" parameterType="com.dy.pmsGlobal.pojoOth.OthStatisticWorkload">
         insert into oth_statistic_workload
         ( id,statistic_date,user_id
         ,user_name,type,node_content
@@ -48,7 +86,7 @@
         ,#{userName,jdbcType=VARCHAR},#{type,jdbcType=VARCHAR},#{nodeContent,jdbcType=VARCHAR}
         ,#{number,jdbcType=INTEGER})
     </insert>
-    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pmsGlobal.pojoOth.OthStatisticWorkload" useGeneratedKeys="true">
+    <insert id="insertSelective" parameterType="com.dy.pmsGlobal.pojoOth.OthStatisticWorkload">
         insert into oth_statistic_workload
         <trim prefix="(" suffix=")" suffixOverrides=",">
                 <if test="id != null">id,</if>
@@ -87,7 +125,7 @@
                left join (select pap.id,pap.`name` as plan_name,pp.`name` as pro_name
                from  pr_assembly_plan pap, plt_product pp where pap.pro_id = pp.id) p on t.plan_id = p.id
                left JOIN ba_user u on u.id=t.updated_by),
-        WITH  assistants_total as (select t.device_no,t.curr_node,t.node_content,t.number,p.pro_name, p.plan_name,u.id user_id,u.`name` user_name
+         assistants_total as (select t.device_no,t.curr_node,t.node_content,t.number,p.pro_name, p.plan_name,u.id user_id,u.`name` user_name
         FROM
         ( SELECT a.*,SUBSTRING_INDEX( SUBSTRING_INDEX( a.assistants, ',', b.help_topic_id + 1 ), ',', - 1 ) AS assistant FROM
         (select DISTINCT device_no,plan_id,station_id,curr_node,node_content,number,updated_by,assistants from sta_device_production_log_past

--
Gitblit v1.8.0