@ -73,10 +73,12 @@ public class AttendanceService {
+ "COALESCE(fd.facialNotRegistered, 0) AS facialNotRegistered, "
+ "COALESCE(fd.facialNotRegistered, 0) AS facialNotRegistered, "
+ "COUNT(DISTINCT CASE WHEN att.indatetime >= ? AND att.indatetime <= ? THEN att.enrollment_id END) AS AttendanceMarked, "
+ "COUNT(DISTINCT CASE WHEN att.indatetime >= ? AND att.indatetime <= ? THEN att.enrollment_id END) AS AttendanceMarked, "
+ "COUNT(DISTINCT CASE WHEN att.oddatetime >= ? AND att.oddatetime <= ? THEN att.enrollment_id END) AS ODCount, "
+ "COUNT(DISTINCT CASE WHEN att.oddatetime >= ? AND att.oddatetime <= ? THEN att.enrollment_id END) AS ODCount, "
+ "COUNT(DISTINCT CASE WHEN att.leavedatetime >= ? AND att.leavedatetime <= ? THEN att.enrollment_id END) AS LeaveCount "
+ "COUNT(DISTINCT CASE WHEN att.leavedatetime >= ? AND att.leavedatetime <= ? THEN att.enrollment_id END) AS LeaveCount, "
+ "COUNT(distinct et.incharge_id) AS SupervisorCount "
+ "FROM enrollment_table et "
+ "FROM enrollment_table et "
+ "LEFT JOIN attendance att ON et.enrollment_id = att.enrollment_id "
+ "LEFT JOIN attendance att ON et.enrollment_id = att.enrollment_id "
+ "LEFT JOIN facial_data fd ON et.zone = fd.zone "
+ "LEFT JOIN facial_data fd ON et.zone = fd.zone "
+ "LEFT JOIN park_details pd ON et.incharge_id = pd.supervisor_id AND pd.is_active = 1 AND pd.is_delete = 0 "
+ "WHERE et.isactive = 1 AND et.isdelete = 0 AND et.emp_type = ? AND et.zone != 0 "
+ "WHERE et.isactive = 1 AND et.isdelete = 0 AND et.emp_type = ? AND et.zone != 0 "
+ "GROUP BY et.zone, fd.facialRegistered, fd.facialNotRegistered "
+ "GROUP BY et.zone, fd.facialRegistered, fd.facialNotRegistered "
+ "ORDER BY et.zone" ;
+ "ORDER BY et.zone" ;
@ -112,30 +114,33 @@ public class AttendanceService {
dateColumn = "att.indatetime" ;
dateColumn = "att.indatetime" ;
filterDateColumn = "att.indatetime" ;
filterDateColumn = "att.indatetime" ;
String sql = "SELECT et.enrollment_id, et.name, et.designation, et.department, et.incharge_name, et.incharge_phoneno, et.park_name, emp.image as image "
String sql = "SELECT et.enrollment_id, et.name, et.designation, et.department, et.incharge_name, et.incharge_phoneno, "
+ "COALESCE(pd.park_name, '') AS park_name, et.park_id, emp.image as image "
+ " FROM enrollment_table et "
+ " FROM enrollment_table et "
+ " left join gccfacialdb.employees emp on et.enrollment_id = emp.employeeid "
+ " where et.isactive =1 and et.isdelete = 0 and et.emp_type = ? and et.zone !=0 "
+ " and et.enrollment_id not in (select enrollment_id from attendance where date(indatetime) between ? and ?) " ;
+ " LEFT JOIN park_details pd ON et.park_id = pd.park_id AND pd.is_active = 1 AND pd.is_delete = 0 "
+ " LEFT JOIN gccfacialdb.employees emp ON et.enrollment_id = emp.employeeid "
+ " WHERE et.isactive = 1 AND et.isdelete = 0 AND et.emp_type = ? AND et.zone != 0 AND et.facial_attendance != 1 "
+ " AND et.enrollment_id NOT IN (SELECT enrollment_id FROM attendance WHERE date(indatetime) BETWEEN ? AND ? "
+ " OR date(oddatetime) BETWEEN ? AND ? OR date(leavedatetime) BETWEEN ? AND ?)" ;
java . util . List < Object > params = new java . util . ArrayList < > ( ) ;
java . util . List < Object > params = new java . util . ArrayList < > ( ) ;
params . add ( empType ) ;
params . add ( empType ) ;
params . add ( fromDate ) ;
params . add ( fromDate ) ;
params . add ( toDate ) ;
params . add ( toDate ) ;
params . add ( fromDate ) ;
params . add ( toDate ) ;
params . add ( fromDate ) ;
params . add ( toDate ) ;
if ( zone ! = null ) {
if ( zone ! = null ) {
sql + = " and et.zone = ? " ;
sql + = " AND et.zone = ? " ;
params . add ( zone ) ;
params . add ( zone ) ;
}
}
if ( parkName ! = null & & ! parkName . isEmpty ( ) & & ! parkName . equals ( "-" ) ) {
if ( parkName ! = null & & ! parkName . isEmpty ( ) & & ! parkName . equals ( "-" ) ) {
sql + = " and et.park_name = ? " ;
sql + = " AND et.park_id = ? " ;
params . add ( parkName ) ;
params . add ( parkName ) ;
}
}
if ( parkName ! = null & & ! parkName . isEmpty ( ) & & parkName . equals ( "-" ) ) {
sql + = " and et.park_name = '' " ;
}
/ / sql + = " order by " + dateColumn + " desc " ;
/ / sql + = " order by " + dateColumn + " desc " ;
System . out . println ( "EmpType: " + empType + ", Category: " + category + ", From: " + fromDateTime + ", To: "
System . out . println ( "EmpType: " + empType + ", Category: " + category + ", From: " + fromDateTime + ", To: "
@ -143,33 +148,69 @@ public class AttendanceService {
return jdbcTemplate . queryForList ( sql , params . toArray ( ) ) ;
return jdbcTemplate . queryForList ( sql , params . toArray ( ) ) ;
} else if ( category ! = null & & category . equals ( "notregistered" ) ) {
} else if ( category ! = null & & category . equals ( "notregistered" ) ) {
String sql = "SELECT et.enrollment_id, et.name, et.designation, et.department, et.incharge_name, et.incharge_phoneno, et.park_name, emp.image as image "
String sql = "SELECT et.enrollment_id, et.name, et.designation, et.department, et.incharge_name, et.incharge_phoneno, "
+ "COALESCE(pd.park_name, '') AS park_name, et.park_id, emp.image as image "
+ " FROM enrollment_table et "
+ " FROM enrollment_table et "
+ " left join gccfacialdb.employees emp on et.enrollment_id = emp.employeeid "
+ " where et.isactive =1 and et.isdelete = 0 and et.emp_type = ? and et.zone !=0 and facial_attendance = 0 " ;
+ " LEFT JOIN park_details pd ON et.park_id = pd.park_id AND pd.is_active = 1 AND pd.is_delete = 0 "
+ " LEFT JOIN gccfacialdb.employees emp ON et.enrollment_id = emp.employeeid "
+ " WHERE et.isactive = 1 AND et.isdelete = 0 AND et.emp_type = ? AND et.zone != 0 AND facial_attendance = 0 " ;
java . util . List < Object > params = new java . util . ArrayList < > ( ) ;
java . util . List < Object > params = new java . util . ArrayList < > ( ) ;
params . add ( empType ) ;
params . add ( empType ) ;
if ( zone ! = null ) {
if ( zone ! = null ) {
sql + = " and et.zone = ? " ;
sql + = " AND et.zone = ? " ;
params . add ( zone ) ;
params . add ( zone ) ;
}
}
if ( parkName ! = null & & ! parkName . isEmpty ( ) & & ! parkName . equals ( "-" ) ) {
if ( parkName ! = null & & ! parkName . isEmpty ( ) & & ! parkName . equals ( "-" ) ) {
sql + = " and et.park_name = ? " ;
sql + = " AND et.park_id = ? " ;
params . add ( parkName ) ;
params . add ( parkName ) ;
}
}
if ( parkName ! = null & & ! parkName . isEmpty ( ) & & parkName . equals ( "-" ) ) {
sql + = " and et.park_name = '' " ;
}
/ / sql + = " order by " + dateColumn + " desc " ;
/ / sql + = " order by " + dateColumn + " desc " ;
System . out . println ( "EmpType: " + empType + ", Category: " + category + ", From: " + fromDateTime + ", To: "
System . out . println ( "EmpType: " + empType + ", Category: " + category + ", From: " + fromDateTime + ", To: "
+ toDateTime + ", Zone: " + zone + ", ParkName: " + parkName ) ;
+ toDateTime + ", Zone: " + zone + ", ParkName: " + parkName ) ;
return jdbcTemplate . queryForList ( sql , params . toArray ( ) ) ;
return jdbcTemplate . queryForList ( sql , params . toArray ( ) ) ;
} else if ( category ! = null & & category . equalsIgnoreCase ( "supervisor" ) ) {
/ / String sql = " SELECT et . enrollment_id , et . name , et . designation ,
/ / et . department , et . incharge_name , et . incharge_phoneno , emp . image as image "
/ / + "FROM enrollment_table et "
/ / + "LEFT JOIN gccfacialdb.employees emp ON et.enrollment_id = emp.employeeid "
/ / + " WHERE et . isactive = 1 AND et . isdelete = 0 AND et . emp_type = ? AND et . zone
/ / ! = 0 "
/ / + " AND et . enrollment_id IN ( SELECT supervisor_id FROM park_details WHERE
/ / is_active = 1 AND is_delete = 0 ) " ;
String sql = "SELECT pd.supervisor_id, pd.supervisor_name as name, pd.supervisor_designation AS designation, "
+
" et.department, et.incharge_name, et.incharge_phoneno " +
"FROM ( " +
" SELECT DISTINCT supervisor_id, supervisor_name, supervisor_designation " +
" FROM park_details " +
" WHERE is_active = 1 AND is_delete = 0 AND zone = ? " +
") pd " +
"LEFT JOIN ( " +
" SELECT DISTINCT incharge_id, department, incharge_name, incharge_phoneno " +
" FROM enrollment_table " +
" WHERE isactive = 1 AND isdelete = 0 and emp_type = ? " +
") et ON pd.supervisor_id = et.incharge_id" ;
java . util . List < Object > params = new java . util . ArrayList < > ( ) ;
params . add ( zone ) ;
params . add ( empType ) ;
/ / if ( zone ! = null ) {
/ / sql + = " AND et.zone = ? " ;
/ / params . add ( zone ) ;
/ / }
/ / sql + = " ORDER BY et.name " ;
System . out . println ( "Supervisor - EmpType: " + empType + ", From: " + fromDateTime + ", To: "
+ toDateTime + ", Zone: " + zone ) ;
return jdbcTemplate . queryForList ( sql , params . toArray ( ) ) ;
} else {
} else {
switch ( category = = null ? "present" : category . toLowerCase ( ) ) {
switch ( category = = null ? "present" : category . toLowerCase ( ) ) {
@ -186,17 +227,19 @@ public class AttendanceService {
filterDateColumn = "att.indatetime" ;
filterDateColumn = "att.indatetime" ;
}
}
String sql = "SELECT et.enrollment_id, et.name, et.designation, et.department, et.incharge_name, et.incharge_phoneno, et.emp_id, et.park_name, "
+ "ifnull(att.appversion,'') as appversion, ifnull(att.apptype,'')as apptype, ifnull(att.location,'') as location, "
String sql = "SELECT et.enrollment_id, et.name, et.designation, et.department, et.incharge_name, et.incharge_phoneno, et.emp_id, "
+ "COALESCE(pd.park_name, '') AS park_name, et.park_id, "
+ "IFNULL(att.appversion,'') as appversion, IFNULL(att.apptype,'') as apptype, IFNULL(att.location,'') as location, "
+ "DATE_FORMAT(att.indatetime, '%d-%m-%Y %h:%i %p') as intime, att.inphoto as inphoto, att.inby, "
+ "DATE_FORMAT(att.indatetime, '%d-%m-%Y %h:%i %p') as intime, att.inphoto as inphoto, att.inby, "
+ "DATE_FORMAT(att.outdatetime, '%d-%m-%Y %h:%i %p') as outtime, att.outphoto as outphoto, att.outby, "
+ "DATE_FORMAT(att.outdatetime, '%d-%m-%Y %h:%i %p') as outtime, att.outphoto as outphoto, att.outby, "
+ "DATE_FORMAT(att.oddatetime, '%d-%m-%Y %h:%i %p') as odtime, att.odby, et.zone, "
+ "DATE_FORMAT(att.oddatetime, '%d-%m-%Y %h:%i %p') as odtime, att.odby, et.zone, "
+ "DATE_FORMAT(att.leavedatetime, '%d-%m-%Y %h:%i %p') as leavedatetime, att.leaveby "
+ "DATE_FORMAT(att.leavedatetime, '%d-%m-%Y %h:%i %p') as leavedatetime, att.leaveby "
+ "FROM enrollment_table et "
+ "FROM enrollment_table et "
+ "inner join attendance att on et.enrollment_id = att.enrollment_id "
+ " and " + filterDateColumn + " >= ? and " + filterDateColumn + " <= ? "
+ "where et.isactive =1 and et.isdelete = 0 and et.emp_type = ? and et.zone !=0 "
+ " and " + filterDateColumn + " is not null " ;
+ "LEFT JOIN park_details pd ON et.park_id = pd.park_id AND pd.is_active = 1 AND pd.is_delete = 0 "
+ "INNER JOIN attendance att ON et.enrollment_id = att.enrollment_id "
+ " AND " + filterDateColumn + " >= ? AND " + filterDateColumn + " <= ? "
+ "WHERE et.isactive = 1 AND et.isdelete = 0 AND et.emp_type = ? AND et.zone != 0 "
+ " AND " + filterDateColumn + " IS NOT NULL " ;
java . util . List < Object > params = new java . util . ArrayList < > ( ) ;
java . util . List < Object > params = new java . util . ArrayList < > ( ) ;
params . add ( fromDateTime ) ;
params . add ( fromDateTime ) ;
@ -204,12 +247,12 @@ public class AttendanceService {
params . add ( empType ) ;
params . add ( empType ) ;
if ( zone ! = null ) {
if ( zone ! = null ) {
sql + = " and et.zone = ? " ;
sql + = " AND et.zone = ? " ;
params . add ( zone ) ;
params . add ( zone ) ;
}
}
if ( parkName ! = null & & ! parkName . isEmpty ( ) ) {
if ( parkName ! = null & & ! parkName . isEmpty ( ) ) {
sql + = " and et.park_name = ? " ;
sql + = " AND et.park_id = ? " ;
params . add ( parkName ) ;
params . add ( parkName ) ;
}
}
@ -243,24 +286,28 @@ public class AttendanceService {
System . out . println ( "Zone: " + zone + ", From: " + fromDateTime + ", To: " + toDateTime ) ;
System . out . println ( "Zone: " + zone + ", From: " + fromDateTime + ", To: " + toDateTime ) ;
String sql = "WITH facial_data AS ( "
String sql = "WITH facial_data AS ( "
+ "SELECT park_name , "
+ "SUM(CASE WHEN facial_attendance = 1 THEN 1 ELSE 0 END) AS facialRegistered, "
+ "SUM(CASE WHEN facial_attendance = 0 THEN 1 ELSE 0 END) AS facialNotRegistered "
+ "FROM enrollment_table "
+ "WHERE isactive = 1 AND isdelete = 0 AND emp_type = 'Park' AND zone = ? "
+ "GROUP BY park_name "
+ "SELECT et2.park_id , "
+ "SUM(CASE WHEN et2. facial_attendance = 1 THEN 1 ELSE 0 END) AS facialRegistered, "
+ "SUM(CASE WHEN et2. facial_attendance = 0 THEN 1 ELSE 0 END) AS facialNotRegistered "
+ "FROM enrollment_table et2 "
+ "WHERE et2. isactive = 1 AND et2. isdelete = 0 AND et2.e mp_type = 'Park' AND et2. zone = ? "
+ "GROUP BY et2.park_id "
+ ") "
+ ") "
+ "SELECT et.park_name, COUNT(DISTINCT et.enrollment_id) AS TotalCount, et.incharge_name, et.incharge_phoneno, "
+ "SELECT et.park_id, COALESCE(pd.park_name, '') AS park_name, "
+ "COUNT(DISTINCT et.enrollment_id) AS TotalCount, "
+ "COALESCE(pd.supervisor_name, '') AS supervisor_name, COALESCE(pd.supervisor_mobile, '') AS supervisor_mobile, "
+ "COALESCE(fd.facialRegistered, 0) AS facialRegistered, COALESCE(fd.facialNotRegistered, 0) AS facialNotRegistered, "
+ "COALESCE(fd.facialRegistered, 0) AS facialRegistered, COALESCE(fd.facialNotRegistered, 0) AS facialNotRegistered, "
+ "COUNT(DISTINCT CASE WHEN att.indatetime >= ? AND att.indatetime <= ? THEN att.enrollment_id END) AS AttendanceMarked, "
+ "COUNT(DISTINCT CASE WHEN att.indatetime >= ? AND att.indatetime <= ? THEN att.enrollment_id END) AS AttendanceMarked, "
+ "COUNT(DISTINCT CASE WHEN att.oddatetime >= ? AND att.oddatetime <= ? THEN att.enrollment_id END) AS ODCount, "
+ "COUNT(DISTINCT CASE WHEN att.oddatetime >= ? AND att.oddatetime <= ? THEN att.enrollment_id END) AS ODCount, "
+ "COUNT(DISTINCT CASE WHEN att.leavedatetime >= ? AND att.leavedatetime <= ? THEN att.enrollment_id END) AS LeaveCount "
+ "COUNT(DISTINCT CASE WHEN att.leavedatetime >= ? AND att.leavedatetime <= ? THEN att.enrollment_id END) AS LeaveCount, "
+ "COUNT(distinct et.incharge_id) AS SupervisorCount "
+ "FROM enrollment_table et "
+ "FROM enrollment_table et "
+ "LEFT JOIN park_details pd ON et.park_id = pd.park_id AND pd.is_active = 1 AND pd.is_delete = 0 "
+ "LEFT JOIN attendance att ON et.enrollment_id = att.enrollment_id "
+ "LEFT JOIN attendance att ON et.enrollment_id = att.enrollment_id "
+ "LEFT JOIN facial_data fd ON et.park_name = fd.park_name "
+ "LEFT JOIN facial_data fd ON et.park_id = fd.park_id "
+ "WHERE et.isactive = 1 AND et.isdelete = 0 AND et.emp_type = 'Park' AND et.zone != 0 AND et.zone = ? "
+ "WHERE et.isactive = 1 AND et.isdelete = 0 AND et.emp_type = 'Park' AND et.zone != 0 AND et.zone = ? "
+ "GROUP BY et.park_name, fd.facialRegistered, fd.facialNotRegistered, et.incharge_name, et.incharge_phoneno "
+ "ORDER BY et .park_name" ;
+ "GROUP BY et.park_id, pd.park_ name, pd.supervisor_name, pd.supervisor_mobile, fd.facialRegistered, fd.facialNotRegistered "
+ "ORDER BY pd .park_name" ;
return jdbcTemplate . queryForList ( sql , new Object [ ] { zone , fromDateTime , toDateTime , fromDateTime , toDateTime ,
return jdbcTemplate . queryForList ( sql , new Object [ ] { zone , fromDateTime , toDateTime , fromDateTime , toDateTime ,
fromDateTime , toDateTime , zone } ) ;
fromDateTime , toDateTime , zone } ) ;