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;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
......
......@@ -3,29 +3,47 @@ package com.nisum.mytime.configuration;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.transaction.Transactional;
import org.slf4j.Logger;
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 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;
}
}
}
\ No newline at end of file
......@@ -5,12 +5,11 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import com.nisum.mytime.configuration.DbConnection;
......@@ -22,50 +21,34 @@ import com.nisum.mytime.utils.MyTimeUtils;
@Service
public class AttendanceServiceImpl implements AttendanceService {
private Connection connection = null;
private Statement statement = null;
private ResultSet resultSet = null;
@Autowired
DbConnection dbConnection;
@Override
public List getAttendanciesReport(String reportDate) throws MyTimeException, SQLException {
long start_ms = System.currentTimeMillis();
List listOfEmployees = new ArrayList<>();
String querys="select distinct emp.EmployeeCode,emp.FirstName,'P' as AttStatus\n" +
" FROM [smartiSCC].[dbo].[Transactions] as tr,[smartiSCC].[dbo].[EmployeeMaster] as emp\n" +
" where tr.EmployeemasterID=emp.EmployeeMasterID and \n" +
" replace(convert(varchar,tr.aDateTime, 111), '/', '-')='"+reportDate+"'\n" +
" Union \n" +
" select emp.EmployeeCode,emp.FirstName,'A' as AttStatus\n" +
" FROM [smartiSCC].[dbo].[Transactions] as tr,[smartiSCC].[dbo].[EmployeeMaster] as emp\n" +
" where tr.EmployeemasterID!=emp.EmployeeMasterID and \n" +
" replace(convert(varchar,tr.aDateTime, 111), '/', '-')='"+reportDate+"'";
try {
String dbURL = MyTimeUtils.driverUrl;
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);
}
List listOfEmployees = new ArrayList<>();
String querys=MyTimeUtils.ATTENDANCE_PRESENT_REPORT_QUERY +"'"+reportDate+"'"+ MyTimeUtils.UNION +MyTimeUtils.ATTENDANCE_ABSENT_REPORT_QUERY+"'"+reportDate+"'";
try(Connection connection = dbConnection.getDBConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(querys.toString()))
{
while (resultSet.next()) {
AttendenceData attendData=new AttendenceData();
attendData.setEmployeeId(resultSet.getString("EmployeeCode"));
attendData.setEmployeeName(resultSet.getString("FirstName"));
attendData.setIfPresent(resultSet.getString("AttStatus"));
listOfEmployees.add(attendData);
}
MyTimeLogger.getInstance().info("Time Taken for " + (System.currentTimeMillis() - start_ms));
} catch (Exception e) {
MyTimeLogger.getInstance().error("Exception occured due to : ", e);
throw new MyTimeException(e.getMessage());
}finally {
if (null != connection) {
connection.close();
statement.close();
resultSet.close();
}
}
}
return listOfEmployees;
}
}
}
......@@ -16,7 +16,6 @@ import org.springframework.stereotype.Component;
import com.nisum.mytime.configuration.DbConnection;
import com.nisum.mytime.exception.handler.MyTimeException;
import com.nisum.mytime.model.EmpLoginData;
import com.nisum.mytime.repository.EmployeeAttendanceRepo;
import com.nisum.mytime.utils.MyTimeLogger;
import com.nisum.mytime.utils.MyTimeUtils;
......@@ -24,47 +23,33 @@ import com.nisum.mytime.utils.MyTimeUtils;
@Transactional
public class EmployeeDataService {
private Connection connection = null;
private Statement statement = null;
private ResultSet resultSet = null;
@Autowired
private EmployeeAttendanceRepo employeeLoginsRepo;
DbConnection dbConnection;
public List<EmpLoginData> fetchEmployeeLoginsBasedOnDates(long employeeId, String fromDate, String toDate)
throws MyTimeException {
long start_ms = System.currentTimeMillis();
String querys="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), '/', '-')>='"+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;
String querys=MyTimeUtils.ABESENT_STATUS_QUERY+"'"+fromDate+"'"+ MyTimeUtils.ABESENT_STATUS_QUERY1 +"'"+toDate+"'"+MyTimeUtils.ABESENT_STATUS_QUERY2+employeeId+MyTimeUtils.ABESENT_STATUS_QUERY3;
System.out.println("fetch employee details"+querys);
int countHours = 0;
List<EmpLoginData> listOfEmpLoginData = new ArrayList<>();
try {
if (employeeId > 0) {
String dbURL = MyTimeUtils.driverUrl;
MyTimeLogger.getInstance().info(dbURL);
connection = DbConnection.getDBConnection(dbURL);
System.out.println("Connection established");
statement = connection.createStatement();
resultSet = statement.executeQuery(querys.toString());
try(Connection connection = dbConnection.getDBConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(querys.toString()))
{
if (employeeId > 0) {
while (resultSet.next()) {
EmpLoginData empLoginData = new EmpLoginData();
empLoginData.setEmployeeId(resultSet.getString(1));
empLoginData.setEmployeeName(resultSet.getString(2));
empLoginData.setDateOfLogin(resultSet.getDate(3).toString());
empLoginData.setFirstLogin(resultSet.getTime(3).toString());
empLoginData.setLastLogout(resultSet.getTime(4).toString());
Time from = resultSet.getTime(3);
Time to = resultSet.getTime(4);
empLoginData.setEmployeeId(resultSet.getString("EmployeeCode"));
empLoginData.setEmployeeName(resultSet.getString("FirstName"));
empLoginData.setDateOfLogin(resultSet.getDate("FirstLogin").toString());
empLoginData.setFirstLogin(resultSet.getTime("FirstLogin").toString());
empLoginData.setLastLogout(resultSet.getTime("LastLogin").toString());
Time from = resultSet.getTime("FirstLogin");
Time to = resultSet.getTime("LastLogin");
long milliseconds=to.getTime() - from.getTime();
int seconds = (int) milliseconds / 1000;
int seconds = (int) milliseconds / 1000;
int hours = seconds / 3600;
int minutes = (seconds % 3600) / 60;
seconds = (seconds % 3600) % 60;
......
......@@ -10,6 +10,7 @@ public class MyTimeUtils {
}
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 tdf = new SimpleDateFormat("HH:mm");
public final static DateFormat dfmt = new SimpleDateFormat("yyyy-MM-dd");
......@@ -59,13 +60,36 @@ public class MyTimeUtils {
public final static String PROJECT_NAME = "projectName";
public final static String SET = "$set";
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 DOM = "DOM";
public final static String DOMAIN_NAME = "domainName";
public final static String DOMAIN_ID = "domainId";
public final static String FREE_POLL="Free Pool";
public final static String START_DATE="startDate";
//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
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