From 0b3ff378a9faaf9d7a4831b7f0de67378fe0dfea Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 30 五月 2023 12:20:15 +0800
Subject: [PATCH] optimize 统计

---
 java110-db/src/main/resources/mapper/report/ReportAttendanceServiceDaoImplMapper.xml |   45 +++++++++++++++++++++++++--------------------
 1 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/java110-db/src/main/resources/mapper/report/ReportAttendanceServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/report/ReportAttendanceServiceDaoImplMapper.xml
index ea8c22a..8d414e6 100755
--- a/java110-db/src/main/resources/mapper/report/ReportAttendanceServiceDaoImplMapper.xml
+++ b/java110-db/src/main/resources/mapper/report/ReportAttendanceServiceDaoImplMapper.xml
@@ -6,36 +6,35 @@
 
     <!-- 鏌ヨ瀹炴敹閲戦 -->
     <select id="getMonthAttendanceCount" parameterType="Map" resultType="Map">
-        select count(1) count from (
-        select distinct t.staff_id
-        from attendance_classes_task t
-        left join u_user s on t.staff_id = s.user_id and s.status_cd = '0'
-        left join u_org_staff_rel uosr on uosr.staff_id = s.user_id and uosr.status_cd = '0'
-        left join u_org uo on uosr.org_id = uo.org_id and uo.status_cd = '0'
-        where 1 =1
-        and t.status_cd = '0'
+        select count(1) count from
+        attendance_classes_staff t
+        INNER JOIN attendance_classes ac ON t.classes_id = ac.classes_id
+        AND ac.status_cd = '0'
+        LEFT JOIN u_user s ON t.staff_id = s.user_id
+        AND s.status_cd = '0'
+        <if test="departmentId !=null and departmentId != ''">
+            LEFT JOIN u_org_staff_rel uosr ON uosr.staff_id = s.user_id
+            AND uosr.status_cd = '0'
+            LEFT JOIN u_org uo ON uosr.org_id = uo.org_id
+            AND uo.status_cd = '0'
+        </if>
+        WHERE
+        t.status_cd = '0'
         <if test="staffName !=null and staffName != ''">
-            and s.staff_name like concat('%',#{staffName},'%')
+            and t.staff_name like concat('%',#{staffName},'%')
         </if>
         <if test="departmentId !=null and departmentId != ''">
             and uo.org_id = #{departmentId}
         </if>
-        <if test="taskId !=null and taskId != ''">
-            and t.task_id= #{taskId}
-        </if>
         <if test="classId !=null and classId != ''">
-            and t.class_id= #{classId}
+            and t.classes_id= #{classId}
         </if>
         <if test="staffId !=null and staffId != ''">
             and t.staff_id= #{staffId}
         </if>
-        <if test="taskYear !=null and taskYear != ''">
-            and t.task_year= #{taskYear}
+        <if test="storeId !=null and storeId != ''">
+            and t.store_id = #{storeId}
         </if>
-        <if test="taskMonth !=null and taskMonth != ''">
-            and t.task_month= #{taskMonth}
-        </if>
-        ) tt
     </select>
 
     <!-- 鏌ヨ鎴垮眿涓暟 add by wuxw 2018-07-03 -->
@@ -55,6 +54,7 @@
         ac.classes_id = act.class_id
         AND act.status_cd = '0'
         AND act.task_id = b.task_id
+        and act.staff_id = t.staff_id
         AND b.state = '10000'
         and b.value &lt; now()
         <if test="taskYear !=null and taskYear != ''">
@@ -74,6 +74,7 @@
         ac.classes_id = act.class_id
         AND act.status_cd = '0'
         AND act.task_id = b.task_id
+        and act.staff_id = t.staff_id
         AND b.state in ('30000','70000')
         <if test="taskYear !=null and taskYear != ''">
             and act.task_year= #{taskYear}
@@ -92,6 +93,7 @@
         ac.classes_id = act.class_id
         AND act.status_cd = '0'
         AND act.task_id = b.task_id
+        and act.staff_id = t.staff_id
         AND b.state = '40000'
         <if test="taskYear !=null and taskYear != ''">
             and act.task_year= #{taskYear}
@@ -110,6 +112,7 @@
         ac.classes_id = act.class_id
         AND act.status_cd = '0'
         AND act.task_id = b.task_id
+        and act.staff_id = t.staff_id
         AND b.state = '50000'
         <if test="taskYear !=null and taskYear != ''">
             and act.task_year= #{taskYear}
@@ -128,6 +131,7 @@
         ac.classes_id = act.class_id
         AND act.status_cd = '0'
         AND act.task_id = b.task_id
+        and act.staff_id = t.staff_id
         AND b.state = '60000'
         <if test="taskYear !=null and taskYear != ''">
             and act.task_year= #{taskYear}
@@ -171,7 +175,8 @@
     </select>
 
     <select id="getMonthAttendanceDetail" parameterType="Map" resultType="Map">
-        select t.detail_id detailId,t.spec_cd specCd,t.`value`,t.check_time checkTime,t.state,t.face_path facePath,t.create_time createTime,act.task_day  taskDay,td.`name` stateName
+        select t.detail_id detailId,t.spec_cd specCd,t.`value`,t.check_time checkTime,t.state,t.face_path facePath,t.create_time createTime,act.task_day  taskDay,
+        td.`name` stateName,act.staff_id staffId
         from attendance_classes_task_detail t
         left join attendance_classes_task act on t.task_id = act.task_id and act.status_cd = '0'
         left join t_dict td on t.state = td.status_cd and td.table_name = 'attendance_classes_task_detail' and td.table_columns = 'state'

--
Gitblit v1.8.0