Commit 39fbe9d0 authored by mmudrakola-nisum-com's avatar mmudrakola-nisum-com Committed by rbonthala-nisum-com

Feature/mt 74 integrating biometric data to the application (#39)

* MT-74:integrating_biometric_data_to_the_application

* MT-74:integrating_biometric_data_to_the_application
parent 50122fbb
package com.nisum.mytime; package com.nisum.mytime;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
......
...@@ -3,29 +3,47 @@ package com.nisum.mytime.configuration; ...@@ -3,29 +3,47 @@ package com.nisum.mytime.configuration;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.transaction.Transactional;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.nisum.mytime.utils.MyTimeLogger;
public class DbConnection { @Component
@Transactional
public class DbConnection {
private static Logger log = LoggerFactory.getLogger(DbConnection.class); private static Logger log = LoggerFactory.getLogger(DbConnection.class);
private static Connection connection = null; private Connection connection = null;
@Value("${myTime.data.mssqldb.url}")
private String url;
@Value("${myTime.data.mssqldb.username}")
private String username;
@Value("${myTime.data.mssqldb.password}")
private String password;
@Value("${myTime.data.mssqldb.driver}")
private String driver;
public Connection getDBConnection() throws SQLException {
try {
Class.forName(driver);
connection = DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException cnfex) {
log.error("Problem in loading or " + "registering MS SQL JDBC driver", cnfex);
public static Connection getDBConnection(String dbURL) throws SQLException {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
connection = DriverManager.getConnection("jdbc:sqlserver://10.3.45.105:1433;databaseName=smartiSCC", "sa", "nisum@123");
} catch (ClassNotFoundException cnfex) {
log.error("Problem in loading or " + "registering mssql JDBC driver", cnfex);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
return connection; return connection;
} }
} }
\ No newline at end of file
...@@ -5,12 +5,11 @@ import java.sql.ResultSet; ...@@ -5,12 +5,11 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.nisum.mytime.configuration.DbConnection; import com.nisum.mytime.configuration.DbConnection;
...@@ -22,50 +21,34 @@ import com.nisum.mytime.utils.MyTimeUtils; ...@@ -22,50 +21,34 @@ import com.nisum.mytime.utils.MyTimeUtils;
@Service @Service
public class AttendanceServiceImpl implements AttendanceService { public class AttendanceServiceImpl implements AttendanceService {
@Autowired
private Connection connection = null; DbConnection dbConnection;
private Statement statement = null;
private ResultSet resultSet = null;
@Override @Override
public List getAttendanciesReport(String reportDate) throws MyTimeException, SQLException { public List getAttendanciesReport(String reportDate) throws MyTimeException, SQLException {
long start_ms = System.currentTimeMillis(); long start_ms = System.currentTimeMillis();
List listOfEmployees = new ArrayList<>(); List listOfEmployees = new ArrayList<>();
String querys="select distinct emp.EmployeeCode,emp.FirstName,'P' as AttStatus\n" + String querys=MyTimeUtils.ATTENDANCE_PRESENT_REPORT_QUERY +"'"+reportDate+"'"+ MyTimeUtils.UNION +MyTimeUtils.ATTENDANCE_ABSENT_REPORT_QUERY+"'"+reportDate+"'";
" FROM [smartiSCC].[dbo].[Transactions] as tr,[smartiSCC].[dbo].[EmployeeMaster] as emp\n" + try(Connection connection = dbConnection.getDBConnection();
" where tr.EmployeemasterID=emp.EmployeeMasterID and \n" + Statement statement = connection.createStatement();
" replace(convert(varchar,tr.aDateTime, 111), '/', '-')='"+reportDate+"'\n" + ResultSet resultSet = statement.executeQuery(querys.toString()))
" Union \n" + {
" select emp.EmployeeCode,emp.FirstName,'A' as AttStatus\n" + while (resultSet.next()) {
" FROM [smartiSCC].[dbo].[Transactions] as tr,[smartiSCC].[dbo].[EmployeeMaster] as emp\n" + AttendenceData attendData=new AttendenceData();
" where tr.EmployeemasterID!=emp.EmployeeMasterID and \n" + attendData.setEmployeeId(resultSet.getString("EmployeeCode"));
" replace(convert(varchar,tr.aDateTime, 111), '/', '-')='"+reportDate+"'"; attendData.setEmployeeName(resultSet.getString("FirstName"));
try { attendData.setIfPresent(resultSet.getString("AttStatus"));
String dbURL = MyTimeUtils.driverUrl; listOfEmployees.add(attendData);
MyTimeLogger.getInstance().info(dbURL); }
connection = DbConnection.getDBConnection(dbURL);
statement = connection.createStatement();
resultSet = statement.executeQuery(querys.toString());
while (resultSet.next()) {
AttendenceData attendData=new AttendenceData();
attendData.setEmployeeId(resultSet.getString(1));
attendData.setEmployeeName(resultSet.getString(2));
attendData.setIfPresent(resultSet.getString(3));
listOfEmployees.add(attendData);
}
MyTimeLogger.getInstance().info("Time Taken for " + (System.currentTimeMillis() - start_ms)); MyTimeLogger.getInstance().info("Time Taken for " + (System.currentTimeMillis() - start_ms));
} catch (Exception e) { } catch (Exception e) {
MyTimeLogger.getInstance().error("Exception occured due to : ", e); MyTimeLogger.getInstance().error("Exception occured due to : ", e);
throw new MyTimeException(e.getMessage()); throw new MyTimeException(e.getMessage());
}finally { }
if (null != connection) {
connection.close();
statement.close();
resultSet.close();
}
}
return listOfEmployees; return listOfEmployees;
}
} }
}
...@@ -16,7 +16,6 @@ import org.springframework.stereotype.Component; ...@@ -16,7 +16,6 @@ import org.springframework.stereotype.Component;
import com.nisum.mytime.configuration.DbConnection; import com.nisum.mytime.configuration.DbConnection;
import com.nisum.mytime.exception.handler.MyTimeException; import com.nisum.mytime.exception.handler.MyTimeException;
import com.nisum.mytime.model.EmpLoginData; import com.nisum.mytime.model.EmpLoginData;
import com.nisum.mytime.repository.EmployeeAttendanceRepo;
import com.nisum.mytime.utils.MyTimeLogger; import com.nisum.mytime.utils.MyTimeLogger;
import com.nisum.mytime.utils.MyTimeUtils; import com.nisum.mytime.utils.MyTimeUtils;
...@@ -24,47 +23,33 @@ import com.nisum.mytime.utils.MyTimeUtils; ...@@ -24,47 +23,33 @@ import com.nisum.mytime.utils.MyTimeUtils;
@Transactional @Transactional
public class EmployeeDataService { public class EmployeeDataService {
private Connection connection = null;
private Statement statement = null;
private ResultSet resultSet = null;
@Autowired @Autowired
private EmployeeAttendanceRepo employeeLoginsRepo; DbConnection dbConnection;
public List<EmpLoginData> fetchEmployeeLoginsBasedOnDates(long employeeId, String fromDate, String toDate) public List<EmpLoginData> fetchEmployeeLoginsBasedOnDates(long employeeId, String fromDate, String toDate)
throws MyTimeException { throws MyTimeException {
long start_ms = System.currentTimeMillis(); long start_ms = System.currentTimeMillis();
String querys="select emp.EmployeeCode,emp.FirstName,MIN(tr.aDateTime) AS FirstLogin,MAX(tr.aDateTime) AS LastLogin\n" + String querys=MyTimeUtils.ABESENT_STATUS_QUERY+"'"+fromDate+"'"+ MyTimeUtils.ABESENT_STATUS_QUERY1 +"'"+toDate+"'"+MyTimeUtils.ABESENT_STATUS_QUERY2+employeeId+MyTimeUtils.ABESENT_STATUS_QUERY3;
"from Transactions as tr,EmployeeMaster as emp\n" + System.out.println("fetch employee details"+querys);
"where tr.EmployeemasterID=emp.EmployeeMasterID and \n" + int countHours = 0;
"replace(convert(varchar,tr.aDateTime, 111), '/', '-')>='"+fromDate+"' and \n" +
"replace(convert(varchar,tr.aDateTime, 111), '/', '-')<='"+toDate+"' and emp.EmployeeCode="+employeeId+"\n" +
"group by convert(varchar,tr.aDateTime, 111),emp.EmployeeCode,emp.FirstName";
int countHours = 0;
List<EmpLoginData> listOfEmpLoginData = new ArrayList<>(); List<EmpLoginData> listOfEmpLoginData = new ArrayList<>();
try { try(Connection connection = dbConnection.getDBConnection();
if (employeeId > 0) { Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(querys.toString()))
String dbURL = MyTimeUtils.driverUrl; {
MyTimeLogger.getInstance().info(dbURL); if (employeeId > 0) {
connection = DbConnection.getDBConnection(dbURL);
System.out.println("Connection established");
statement = connection.createStatement();
resultSet = statement.executeQuery(querys.toString());
while (resultSet.next()) { while (resultSet.next()) {
EmpLoginData empLoginData = new EmpLoginData(); EmpLoginData empLoginData = new EmpLoginData();
empLoginData.setEmployeeId(resultSet.getString(1)); empLoginData.setEmployeeId(resultSet.getString("EmployeeCode"));
empLoginData.setEmployeeName(resultSet.getString(2)); empLoginData.setEmployeeName(resultSet.getString("FirstName"));
empLoginData.setDateOfLogin(resultSet.getDate(3).toString()); empLoginData.setDateOfLogin(resultSet.getDate("FirstLogin").toString());
empLoginData.setFirstLogin(resultSet.getTime(3).toString()); empLoginData.setFirstLogin(resultSet.getTime("FirstLogin").toString());
empLoginData.setLastLogout(resultSet.getTime(4).toString()); empLoginData.setLastLogout(resultSet.getTime("LastLogin").toString());
Time from = resultSet.getTime(3); Time from = resultSet.getTime("FirstLogin");
Time to = resultSet.getTime(4); Time to = resultSet.getTime("LastLogin");
long milliseconds=to.getTime() - from.getTime(); long milliseconds=to.getTime() - from.getTime();
int seconds = (int) milliseconds / 1000; int seconds = (int) milliseconds / 1000;
int hours = seconds / 3600; int hours = seconds / 3600;
int minutes = (seconds % 3600) / 60; int minutes = (seconds % 3600) / 60;
seconds = (seconds % 3600) % 60; seconds = (seconds % 3600) % 60;
......
...@@ -10,6 +10,7 @@ public class MyTimeUtils { ...@@ -10,6 +10,7 @@ public class MyTimeUtils {
} }
public final static String driverUrl = "jdbc:ucanaccess://"; public final static String driverUrl = "jdbc:ucanaccess://";
public final static String msdriveUrl ="jdbc:sqlserver://";
public final static DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public final static DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public final static DateFormat tdf = new SimpleDateFormat("HH:mm"); public final static DateFormat tdf = new SimpleDateFormat("HH:mm");
public final static DateFormat dfmt = new SimpleDateFormat("yyyy-MM-dd"); public final static DateFormat dfmt = new SimpleDateFormat("yyyy-MM-dd");
...@@ -59,13 +60,36 @@ public class MyTimeUtils { ...@@ -59,13 +60,36 @@ public class MyTimeUtils {
public final static String PROJECT_NAME = "projectName"; public final static String PROJECT_NAME = "projectName";
public final static String SET = "$set"; public final static String SET = "$set";
public final static int MINUS_ONE = -1; public final static int MINUS_ONE = -1;
public final static String FREE_POLL = "Free Pool";
public final static String START_DATE = "startDate";
// Domain Constants public final static String FREE_POLL="Free Pool";
public final static String DOM = "DOM"; public final static String START_DATE="startDate";
public final static String DOMAIN_NAME = "domainName";
public final static String DOMAIN_ID = "domainId"; //Domain Constants
public final static String DOM="DOM";
public final static String DOMAIN_NAME="domainName";
public final static String DOMAIN_ID="domainId";
//public final static String NAME="deliveryManagers";
//Biometric Attendance
public final static String ABESENT_STATUS_QUERY = "select emp.EmployeeCode,emp.FirstName,"
+ "MIN(tr.aDateTime) AS FirstLogin,MAX(tr.aDateTime) AS LastLogin\n" +
"from Transactions as tr,EmployeeMaster as emp\n" +
"where tr.EmployeemasterID=emp.EmployeeMasterID and \n" +
"replace(convert(varchar,tr.aDateTime, 111), '/', '-')>= ";
public final static String ABESENT_STATUS_QUERY1 =" and \n" +
"replace(convert(varchar,tr.aDateTime, 111), '/', '-')<= ";
public final static String ABESENT_STATUS_QUERY2 =" and emp.EmployeeCode=";
public final static String ABESENT_STATUS_QUERY3 =" group by convert(varchar,tr.aDateTime, 111),emp.EmployeeCode,emp.FirstName";
public final static String ATTENDANCE_PRESENT_REPORT_QUERY ="select distinct emp.EmployeeCode,emp.FirstName,'P' as AttStatus\n" +
" FROM Transactions as tr,EmployeeMaster as emp where tr.EmployeemasterID=emp.EmployeeMasterID and \n" +
" replace(convert(varchar,tr.aDateTime, 111), '/', '-')= ";
public final static String UNION=" Union ";
public final static String ATTENDANCE_ABSENT_REPORT_QUERY= " select distinct emp.EmployeeCode,emp.FirstName,'A' as AttStatus\n" +
" FROM Transactions as tr,EmployeeMaster as emp where tr.EmployeemasterID!=emp.EmployeeMasterID and \n" +
" replace(convert(varchar,tr.aDateTime, 111), '/', '-')=";
// Role Mapping Info // Role Mapping Info
public static final String ACCOUNT = "Account Manager"; public static final String ACCOUNT = "Account Manager";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment