From 28f6317f7189d5c4a7e64f57dd6c7fc2011f8632 Mon Sep 17 00:00:00 2001
From: Fancy <Fancy.fx@outlook.com>
Date: 星期二, 07 一月 2025 15:41:46 +0800
Subject: [PATCH] attend user

---
 pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java          |    7 +++++++
 pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportCtrl.java        |    9 +++++++++
 pms-parent/pms-global/src/main/resources/mapper/StaAssemblyWorkLastMapper.xml              |   22 ++++++++++++++++++++++
 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoSta/StaAssemblyWorkLastMapper.java |    4 ++++
 4 files changed, 42 insertions(+), 0 deletions(-)

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 24e3244..20be688 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
@@ -3,7 +3,9 @@
 import cn.hutool.json.JSONObject;
 import com.dy.pmsGlobal.pojoSta.StaAssemblyWorkLast;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -38,4 +40,6 @@
     StaAssemblyWorkLast existsEntity(StaAssemblyWorkLast record);
 
     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/StaAssemblyWorkLastMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/StaAssemblyWorkLastMapper.xml
index b31a6a2..ade031c 100644
--- a/pms-parent/pms-global/src/main/resources/mapper/StaAssemblyWorkLastMapper.xml
+++ b/pms-parent/pms-global/src/main/resources/mapper/StaAssemblyWorkLastMapper.xml
@@ -366,6 +366,28 @@
                                      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
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 83ea87f..4ff045e 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
@@ -76,6 +76,15 @@
     /**
      * 浠诲姟鐪嬫澘  鏌ヨ鍦ㄤ骇浠诲姟鐪嬫澘
      * */
+    @GetMapping(path="queryAttendUser")
+    @Log("鏌ヨ浜哄憳鍑哄嫟鐜�")
+    public BaseResponse<List<JSONObject>> queryAttendUser(){
+        List<JSONObject> list = sv.queryAttendUser();
+        return BaseResponseUtils.buildSuccess(list);
+    }
+    /**
+     * 浠诲姟鐪嬫澘  鏌ヨ鍦ㄤ骇浠诲姟鐪嬫澘
+     * */
     @GetMapping(path="queryOrderList")
     @Log("鏌ヨ璁㈠崟鐪嬫澘")
     public BaseResponse<List<JSONObject>> queryOrderList(){
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 92f48f8..8d6cd6e 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
@@ -214,4 +214,11 @@
         List<JSONObject> list = deviceProductionLogDao.queryTopError(startDt, endDt);
         return list;
     }
+    public List<JSONObject> queryAttendUser() {
+        Date startDt = Date.from(LocalDateTime.of(LocalDate.now().minusDays(2000), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant());
+        Date endDt = new Date();
+        Date todayDt = Date.from(LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant());
+        List<JSONObject> list = assemblyWorkLastDao.queryAttendUser(startDt, endDt,todayDt);
+        return list;
+    }
 }

--
Gitblit v1.8.0