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 < 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