From 87d0248925a5a8c3cf07ba8a0283dc363e2b59f4 Mon Sep 17 00:00:00 2001
From: Fancy <Fancy.fx@outlook.com>
Date: 星期二, 07 一月 2025 17:02:20 +0800
Subject: [PATCH] statistic_work

---
 pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java           |   12 ++++++
 pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportCtrl.java         |   10 +++++
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoOth/OthStatisticWorkloadMapper.java |    4 ++
 pms-parent/pms-global/src/main/resources/mapper/OthStatisticWorkloadMapper.xml              |   40 +++++++++++++++++++
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaAssemblyWorkLastMapper.java  |    1 
 5 files changed, 66 insertions(+), 1 deletions(-)

diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoOth/OthStatisticWorkloadMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoOth/OthStatisticWorkloadMapper.java
index 3d14aff..e584c75 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoOth/OthStatisticWorkloadMapper.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoOth/OthStatisticWorkloadMapper.java
@@ -1,11 +1,13 @@
 package com.dy.pmsGlobal.daoOth;
 
+import cn.hutool.json.JSONObject;
 import com.dy.pmsGlobal.pojoOth.OthStatisticWorkload;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.time.LocalDate;
 import java.util.Date;
+import java.util.List;
 
 /**
 * @author User
@@ -31,4 +33,6 @@
     String selectMaxDate();
 
     void insertBatch(@Param("startDt")Date startDt, @Param("endDt") Date endDt);
+
+    List<JSONObject> queryStatisticWork(@Param("startDt")Date startDt, @Param("endDt") Date endDt);
 }
diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaAssemblyWorkLastMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaAssemblyWorkLastMapper.java
index 20be688..7e8b77d 100644
--- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaAssemblyWorkLastMapper.java
+++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaAssemblyWorkLastMapper.java
@@ -42,4 +42,5 @@
     List<JSONObject> queryWorkList();
 
     List<JSONObject> queryAttendUser(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("todayDt") Date todayDt);
+
 }
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 27203de..f4c89a9 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/OthStatisticWorkloadMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/OthStatisticWorkloadMapper.xml
@@ -34,7 +34,45 @@
                        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} 
diff --git a/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportCtrl.java b/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportCtrl.java
index 4ff045e..fdfb916 100644
--- a/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportCtrl.java
+++ b/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportCtrl.java
@@ -85,10 +85,20 @@
     /**
      * 浠诲姟鐪嬫澘  鏌ヨ鍦ㄤ骇浠诲姟鐪嬫澘
      * */
+    @GetMapping(path="queryStatisticWork")
+    @Log("鏌ヨ璁㈠崟鐪嬫澘")
+    public BaseResponse<List<JSONObject>> queryStatisticWork(){
+        List<JSONObject> list = sv.queryStatisticWork();
+        return BaseResponseUtils.buildSuccess(list);
+    }
+    /**
+     * 浠诲姟鐪嬫澘  鏌ヨ鍦ㄤ骇浠诲姟鐪嬫澘
+     * */
     @GetMapping(path="queryOrderList")
     @Log("鏌ヨ璁㈠崟鐪嬫澘")
     public BaseResponse<List<JSONObject>> queryOrderList(){
         List<JSONObject> list = sv.queryOrderList();
         return BaseResponseUtils.buildSuccess(list);
     }
+
 }
\ No newline at end of file
diff --git a/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java b/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java
index 8d6cd6e..a107e2a 100644
--- a/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java
+++ b/pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java
@@ -49,6 +49,7 @@
 
     private OthStatisticWorkloadMapper workloadDao;
     private PrOrderMapper orderDao;
+    private OthStatisticWorkloadMapper statisticWorkDao;
 
     @Autowired
     public void setOrderDao(PrOrderMapper orderDao) {
@@ -95,6 +96,10 @@
         this.workloadDao = workloadDao;
     }
 
+    @Autowired
+    public void setStatisticWorkDao(OthStatisticWorkloadMapper statisticWorkDao) {
+        this.statisticWorkDao = statisticWorkDao;
+    }
 
     public Map<String, Object> getDeviceInfo(String deviceNo) {
         if (StringUtils.isBlank(deviceNo)) {
@@ -221,4 +226,11 @@
         List<JSONObject> list = assemblyWorkLastDao.queryAttendUser(startDt, endDt,todayDt);
         return list;
     }
+
+    public List<JSONObject> queryStatisticWork() {
+        Date startDt = Date.from(LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant());
+        Date endDt = new Date();
+        List<JSONObject> list = statisticWorkDao.queryStatisticWork(startDt, endDt);
+        return list;
+    }
 }

--
Gitblit v1.8.0