From 827d195ef301f562453fe4b8b4dc902e902a12c0 Mon Sep 17 00:00:00 2001
From: fl <3098731433@qq.com>
Date: Tue, 17 Dec 2024 16:47:06 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=80=83=E5=8B=A4=E6=8E=A8?=
=?UTF-8?q?=E9=80=81=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mapper/att/AttSourceDataMapper.xml | 479 +++++++++---------
1 file changed, 240 insertions(+), 239 deletions(-)
diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml
index 5fe6ae8..bd169a7 100644
--- a/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml
+++ b/bonus-modules/bonus-system/src/main/resources/mapper/att/AttSourceDataMapper.xml
@@ -105,251 +105,252 @@
-
-
-
-
-
-
+
delete from att_source_data where att_current_day = #{date};
- update att_data set att_current_time = null,att_status = 0,att_address = null,att_lon = null,att_lat = null where att_current_day = #{date};
- update att_data_update set att_current_time = null,att_status = 0,att_address = null,att_lon = null,att_lat = null where att_current_day = #{date};
+ delete from att_data where att_current_day = #{date};
+ delete from att_data_update where att_current_day = #{date};
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT la.*,
- sdd.dict_value AS attStatus
- FROM leave_apply la
- LEFT JOIN sys_dict_data sdd ON sdd.dict_label = if(la.type is not null,la.type,la.leave_type)
- AND sdd.dict_type = 'att_status'
- LEFT JOIN att_group_person_relation agpr ON la.user_id = agpr.user_id
- WHERE la.is_active = 1
- AND la.examine_status = 1
- AND sdd.dict_value IS NOT NULL
- AND agpr.is_active = 1
- ORDER BY leave_start_date DESC
-
+
+ select su.user_id, agpr.org_id, g.id as groupId, '1' as attType, '0' as attStatus
+ from sys_user su
+ left join att_group_person_relation agpr on agpr.user_id = su.user_id and agpr.is_active = 1
+ left join att_group g on g.id = agpr.group_id
+ where su.is_active = 1
+ and agpr.org_id is not null
+ union
+ select su.user_id, agpr.org_id, g.id as groupId, '2' as attType, '0' as attStatus
+ from sys_user su
+ left join att_group_person_relation agpr on agpr.user_id = su.user_id and agpr.is_active = 1
+ left join att_group g on g.id = agpr.group_id
+ where su.is_active = 1
+ and agpr.org_id is not null
+
-
- select asd.*,
- su.user_id,
- ag.org_id as orgId,
- g.id as groupId,
- g.att_type as groupType
- from att_source_data asd
- left join sys_user su on su.user_name = asd.name
- left join att_group_person_relation ag on ag.user_id = su.user_id and ag.is_active = 1
- left join att_group g on g.id = ag.group_id
- where att_current_day >= CURDATE()
- and g.id is not null
- and asd.data_source = 2
- and asd.att_type = 0
-
+
+ select att_current_day,
+ org_id,
+ IFNULL(sum(toWorkAttStatus = 1 and offWorkAttStatus = 1), 0) as normalNum,
+ IFNULL(sum(toWorkAttStatus = 2 or offWorkAttStatus = 2), 0) as lateNum,
+ IFNULL(sum(toWorkAttStatus = 3 or offWorkAttStatus = 3), 0) as skippingNum,
+ IFNULL(sum(toWorkAttStatus = 4 or offWorkAttStatus = 4), 0) as earlyNum,
+ IFNULL(sum(toWorkAttStatus = 5 or offWorkAttStatus = 5), 0) as restNum,
+ IFNULL(sum(toWorkAttStatus in (12, 13, 14, 15, 16, 17, 18) or
+ offWorkAttStatus in (12, 13, 14, 15, 16, 17, 18)), 0) as leaveNum,
+ IFNULL(sum(toWorkAttStatus = 7 or offWorkAttStatus = 7), 0) as outNum,
+ IFNULL(sum(toWorkAttStatus = 8 or offWorkAttStatus = 8), 0) as einErrorNum,
+ IFNULL(sum(toWorkAttStatus = 9 or offWorkAttStatus = 9), 0) as addressErrorNum
+ from v_att_update_data
+ where att_current_day
+
+ >= #{pushDate}
+
+
+ = #{pushDate}
+
+ GROUP BY att_current_day, org_id
+
-
- SELECT
- count(1)
- FROM
- leave_apply la
- WHERE
- la.is_active = 1
- AND la.examine_status = 1
- AND user_id = #{userId}
- AND #{attCurrentDay} BETWEEN leave_start_date and leave_end_date
-
-
\ No newline at end of file
+
+ select v.org_id,
+ v.user_id,
+ su.user_name,
+ so.org_name,
+ g.group_id,
+ DATE_FORMAT(att_current_day, '%Y-%m') as attCurrentMonth,
+ IFNULL(sum(toWorkAttStatus = 1 and offWorkAttStatus = 1), 0) as normalNum,
+ IFNULL(sum(toWorkAttStatus = 2 or offWorkAttStatus = 2), 0) as lateNum,
+ IFNULL(sum(toWorkAttStatus = 3 or offWorkAttStatus = 3), 0) as skippingNum,
+ IFNULL(sum(toWorkAttStatus = 4 or offWorkAttStatus = 4), 0) as earlyNum,
+ IFNULL(sum(toWorkAttStatus = 5 or offWorkAttStatus = 5), 0) as restNum,
+ IFNULL(sum(toWorkAttStatus in (12, 13, 14, 15, 16, 17, 18) or
+ offWorkAttStatus in (12, 13, 14, 15, 16, 17, 18)), 0) as leaveNum,
+ IFNULL(sum(toWorkAttStatus = 7 or offWorkAttStatus = 7), 0) as outNum,
+ IFNULL(sum(toWorkAttStatus = 8 or offWorkAttStatus = 8), 0) as einErrorNum,
+ IFNULL(sum(toWorkAttStatus = 9 or offWorkAttStatus = 9), 0) as addressErrorNum
+ from v_att_update_data v
+ left join sys_user su on su.user_id = v.user_id
+ left join sys_organization so on so.id = v.org_id
+ left join att_group_person_relation g
+ on g.user_id = v.user_id and g.org_id = v.org_id and g.is_active = 1
+ where DATE_FORMAT(att_current_day, '%Y-%m') = DATE_FORMAT(#{pushDate}, '%Y-%m')
+ and g.group_id is not null
+ GROUP BY DATE_FORMAT(att_current_day, '%Y-%m'), v.org_id, v.user_id;
+
+
+
+ select *
+ from sys_holiday
+ where `date`
+
+ >= #{pushDate}
+
+
+ = #{pushDate}
+
+
+
+
+ select DISTINCT sdd.dict_value
+ from leave_apply la
+ left join sys_dict_data sdd on sdd.dict_label = la.leave_type
+ where user_id = #{userId}
+ and org_id = #{orgId}
+ and CONCAT(#{attCurrentDay}, '|', #{attType})
+ BETWEEN CONCAT(leave_start_date, '|', leave_start_interval)
+ AND CONCAT(leave_end_date, '|', leave_end_interval)
+ AND examine_status = 1
+ GROUP BY la.user_id
+ ORDER BY la.create_time DESC
+
+
+
+ select asd.*,
+ su.user_id,
+ ag.org_id as orgId,
+ g.id as groupId,
+ g.att_type as groupType
+ from att_source_data asd
+ left join sys_user su on su.id_number = asd.id_number
+ left join att_group_person_relation ag on ag.user_id = su.user_id and ag.is_active = 1
+ left join att_group g on g.id = ag.group_id
+ where att_current_day
+
+ >= #{pushDate}
+
+
+ = #{pushDate}
+
+ and g.id is not null and asd.data_source = 1
+ union
+ select asd.*,
+ su.user_id,
+ ag.org_id as orgId,
+ g.id as groupId,
+ g.att_type as groupType
+ from att_source_data asd
+ left join sys_user su on su.user_name = asd.name
+ left join att_group_person_relation ag on ag.user_id = su.user_id and ag.is_active = 1
+ left join att_group g on g.id = ag.group_id
+ where att_current_day
+
+ >= #{pushDate}
+
+
+ = #{pushDate}
+
+ and g.id is not null
+ and asd.data_source in (2,3)
+ and (asd.att_type = 1
+ or asd.att_type = 2);
+
+
+
+ SELECT count(0)
+ FROM att_data
+ WHERE user_id = #{userId}
+ and org_id = #{orgId}
+ and att_type = #{attType}
+ and att_current_day = #{attCurrentDay}
+
+
+
+ SELECT count(0)
+ FROM att_data_update
+ WHERE user_id = #{userId}
+ and org_id = #{orgId}
+ and att_type = #{attType}
+ and att_current_day = #{attCurrentDay}
+
+
+
+ select *
+ from (select u.name,
+ '0' as idNumber,
+ '0' as orgId,
+ '0' as orgName,
+ DATE_FORMAT(c.checktime, '%Y-%m-%d') as attCurrentDay,
+ DATE_FORMAT(c.checktime, '%Y-%m-%d %H:%i:%s') as attCurrentTime,
+ if(i.alias like '%进%', 1, (if(i.alias like '%出%', 2, 0))) as attType,
+ i.alias as attAddress,
+ '0' as attLon,
+ '0' as attLat,
+ '2' as dataSource
+ from zkeco.checkinout c
+ left join zkeco.iclock i on i.sn = c.sn
+ left join zkeco.userinfo u on u.userid = c.userid
+ where DATE_FORMAT(c.checktime, '%Y-%m-%d')
+
+ >= #{pushDate}
+
+
+ = #{pushDate}
+
+ and u.name != '') a
+
+
+
+ SELECT la.*,
+ sdd.dict_value AS attStatus
+ FROM leave_apply la
+ LEFT JOIN sys_dict_data sdd ON sdd.dict_label = if(la.type is not null,la.type,la.leave_type)
+ AND sdd.dict_type = 'att_status'
+ LEFT JOIN att_group_person_relation agpr ON la.user_id = agpr.user_id
+ WHERE la.is_active = 1
+ AND la.examine_status = 1
+ AND sdd.dict_value IS NOT NULL
+ AND agpr.is_active = 1
+ ORDER BY leave_start_date DESC
+
+
+
+ select asd.*,
+ su.user_id,
+ ag.org_id as orgId,
+ g.id as groupId,
+ g.att_type as groupType
+ from att_source_data asd
+ left join sys_user su on su.user_name = asd.name
+ left join att_group_person_relation ag on ag.user_id = su.user_id and ag.is_active = 1
+ left join att_group g on g.id = ag.group_id
+ where att_current_day >= CURDATE()
+ and g.id is not null
+ and asd.data_source = 2
+ and asd.att_type = 0
+
+
+
+ SELECT
+ count(1)
+ FROM
+ leave_apply la
+ WHERE
+ la.is_active = 1
+ AND la.examine_status = 1
+ AND user_id = #{userId}
+ AND #{attCurrentDay} BETWEEN leave_start_date and leave_end_date
+
+
\ No newline at end of file