Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mytime
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Narendar Vakiti
mytime
Commits
5a24c359
Commit
5a24c359
authored
Feb 13, 2020
by
Md Suleman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Effective login time implementation and utilization report changes
parent
f7fbec33
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
300 additions
and
6 deletions
+300
-6
EffectiveLoginTimeController.java
...nisum/myteam/controller/EffectiveLoginTimeController.java
+44
-0
EmployeeLoginData.java
src/main/java/com/nisum/myteam/model/EmployeeLoginData.java
+22
-0
EffectiveLoginData.java
...n/java/com/nisum/myteam/model/dao/EffectiveLoginData.java
+38
-0
EffectiveLoginDataRepo.java
...a/com/nisum/myteam/repository/EffectiveLoginDataRepo.java
+14
-0
EmployeeRepo.java
src/main/java/com/nisum/myteam/repository/EmployeeRepo.java
+2
-0
EffectiveLoginTimeScheduler.java
...m/nisum/myteam/schedular/EffectiveLoginTimeScheduler.java
+33
-0
IEffectiveLoginTimeService.java
.../com/nisum/myteam/service/IEffectiveLoginTimeService.java
+17
-0
EffectiveLoginTimeService.java
.../nisum/myteam/service/impl/EffectiveLoginTimeService.java
+117
-0
EmployeeService.java
...n/java/com/nisum/myteam/service/impl/EmployeeService.java
+4
-4
ReportService.java
...ain/java/com/nisum/myteam/service/impl/ReportService.java
+1
-1
MyTeamUtils.java
src/main/java/com/nisum/myteam/utils/MyTeamUtils.java
+6
-0
application.properties
src/main/resources/application.properties
+2
-1
No files found.
src/main/java/com/nisum/myteam/controller/EffectiveLoginTimeController.java
0 → 100644
View file @
5a24c359
package
com
.
nisum
.
myteam
.
controller
;
import
com.nisum.myteam.service.IEffectiveLoginTimeService
;
import
com.nisum.myteam.service.IEmployeeService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.text.ParseException
;
import
java.util.Date
;
import
java.util.Map
;
@RestController
@Slf4j
public
class
EffectiveLoginTimeController
{
@Autowired
IEffectiveLoginTimeService
effectiveLoginTimeService
;
@Autowired
private
IEmployeeService
employeeService
;
// @GetMapping("/effecitveLoginTime")
// public EffectiveLoginData getLoginData(@RequestParam("loginId") String loginEmpId) throws MyTeamException {
//// List<Employee> allEmployees = employeeService.getActiveEmployees();
//// for(Employee employee:allEmployees){
//// EffectiveLoginData effectiveLoginData =
//// effectiveLoginTimeService.calculateEffectiveLoginTimeForEmpAndSave(employee.getEmployeeId());
//// }
// return effectiveLoginTimeService.calculateEffectiveLoginTimeForEmpAndSave(loginEmpId);
// }
@GetMapping
(
"/effectiveLogin"
)
public
Map
<
String
,
Object
>
getAllEmployeesLoginData
(
@RequestParam
(
"employeeId"
)
long
employeeId
,
@RequestParam
(
"fromDate"
)
@DateTimeFormat
(
iso
=
DateTimeFormat
.
ISO
.
DATE
)
Date
fromDate
,
@RequestParam
(
"toDate"
)
@DateTimeFormat
(
iso
=
DateTimeFormat
.
ISO
.
DATE
)
Date
toDate
)
throws
ParseException
{
return
effectiveLoginTimeService
.
getEmployeesEffLoginData
(
employeeId
,
fromDate
,
toDate
);
}
}
src/main/java/com/nisum/myteam/model/EmployeeLoginData.java
0 → 100644
View file @
5a24c359
package
com
.
nisum
.
myteam
.
model
;
import
lombok.*
;
import
java.sql.Time
;
import
java.util.Date
;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public
class
EmployeeLoginData
{
private
String
employeeId
;
private
String
name
;
private
Date
date
;
private
Time
time
;
private
String
EntryType
;
private
String
entryDoor
;
}
src/main/java/com/nisum/myteam/model/dao/EffectiveLoginData.java
0 → 100644
View file @
5a24c359
package
com
.
nisum
.
myteam
.
model
.
dao
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
import
org.bson.types.ObjectId
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Setter
@Getter
@AllArgsConstructor
@ToString
@Document
(
collection
=
"effectiveLoginData"
)
public
class
EffectiveLoginData
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
private
ObjectId
id
;
private
String
employeeId
;
private
Date
date
;
private
String
loginTime
;
private
String
logoutTime
;
private
String
durationAtWorkPlace
;
private
List
<
String
>
orphanLogin
;
public
EffectiveLoginData
(){
orphanLogin
=
new
ArrayList
<>();
}
}
src/main/java/com/nisum/myteam/repository/EffectiveLoginDataRepo.java
0 → 100644
View file @
5a24c359
package
com
.
nisum
.
myteam
.
repository
;
import
com.nisum.myteam.model.dao.EffectiveLoginData
;
import
org.springframework.data.mongodb.repository.MongoRepository
;
import
java.util.Date
;
import
java.util.List
;
public
interface
EffectiveLoginDataRepo
extends
MongoRepository
<
EffectiveLoginData
,
String
>
{
List
<
EffectiveLoginData
>
findByEmployeeId
(
String
employeeId
);
List
<
EffectiveLoginData
>
findByDateBetween
(
Date
from
,
Date
to
);
}
src/main/java/com/nisum/myteam/repository/EmployeeRepo.java
View file @
5a24c359
...
@@ -31,6 +31,8 @@ public interface EmployeeRepo
...
@@ -31,6 +31,8 @@ public interface EmployeeRepo
List
<
Employee
>
findByEmpStatusAndShiftLikeOrderByEmployeeIdDesc
(
String
status
,
String
shift
);
List
<
Employee
>
findByEmpStatusAndShiftLikeOrderByEmployeeIdDesc
(
String
status
,
String
shift
);
List
<
Employee
>
findByDesignation
(
String
designation
);
List
<
Employee
>
findByDesignation
(
String
designation
);
List
<
Employee
>
findByFunctionalGroup
(
String
functionalGroup
);
int
countByDesignation
(
String
designation
);
int
countByDesignation
(
String
designation
);
}
}
...
...
src/main/java/com/nisum/myteam/schedular/EffectiveLoginTimeScheduler.java
0 → 100644
View file @
5a24c359
package
com
.
nisum
.
myteam
.
schedular
;
import
com.nisum.myteam.exception.handler.MyTeamException
;
import
com.nisum.myteam.model.dao.EffectiveLoginData
;
import
com.nisum.myteam.model.dao.Employee
;
import
com.nisum.myteam.service.IEffectiveLoginTimeService
;
import
com.nisum.myteam.service.IEmployeeService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
@Component
public
class
EffectiveLoginTimeScheduler
{
@Autowired
private
IEmployeeService
employeeService
;
@Autowired
private
IEffectiveLoginTimeService
effectiveLoginTimeService
;
@Scheduled
(
cron
=
"${effective.login.time.cron}"
)
public
void
calculateLoginTime
()
throws
MyTeamException
{
List
<
Employee
>
allEmployees
=
employeeService
.
getActiveEmployees
();
for
(
Employee
employee:
allEmployees
){
EffectiveLoginData
effectiveLoginData
=
effectiveLoginTimeService
.
calculateEffectiveLoginTimeForEmpAndSave
(
employee
.
getEmployeeId
());
}
}
}
src/main/java/com/nisum/myteam/service/IEffectiveLoginTimeService.java
0 → 100644
View file @
5a24c359
package
com
.
nisum
.
myteam
.
service
;
import
com.nisum.myteam.exception.handler.MyTeamException
;
import
com.nisum.myteam.model.EmployeeLoginData
;
import
com.nisum.myteam.model.dao.EffectiveLoginData
;
import
java.text.ParseException
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
public
interface
IEffectiveLoginTimeService
{
public
EffectiveLoginData
calculateEffectiveLoginTimeForEmpAndSave
(
String
employeeId
)
throws
MyTeamException
;
public
Map
<
String
,
Object
>
getEmployeesEffLoginData
(
long
employeeId
,
Date
fromDate
,
Date
toDate
)
throws
ParseException
;
}
src/main/java/com/nisum/myteam/service/impl/EffectiveLoginTimeService.java
0 → 100644
View file @
5a24c359
package
com
.
nisum
.
myteam
.
service
.
impl
;
import
com.nisum.myteam.configuration.DbConnection
;
import
com.nisum.myteam.exception.handler.MyTeamException
;
import
com.nisum.myteam.model.EmployeeLoginData
;
import
com.nisum.myteam.model.dao.EffectiveLoginData
;
import
com.nisum.myteam.repository.EffectiveLoginDataRepo
;
import
com.nisum.myteam.service.IEffectiveLoginTimeService
;
import
com.nisum.myteam.utils.CommomUtil
;
import
com.nisum.myteam.utils.MyTeamLogger
;
import
com.nisum.myteam.utils.MyTeamUtils
;
import
org.assertj.core.util.Strings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.sql.Connection
;
import
java.sql.ResultSet
;
import
java.sql.Statement
;
import
java.sql.Time
;
import
java.text.ParseException
;
import
java.util.*
;
@Service
public
class
EffectiveLoginTimeService
implements
IEffectiveLoginTimeService
{
@Autowired
DbConnection
dbConnection
;
@Autowired
private
EffectiveLoginDataRepo
effectiveLoginDataRepo
;
@Override
public
EffectiveLoginData
calculateEffectiveLoginTimeForEmpAndSave
(
String
employeeId
)
throws
MyTeamException
{
String
query
=
String
.
format
(
MyTeamUtils
.
EMPLOYEE_YESTERDAY_LOGIN_DETAILS_QUERY
,
employeeId
);
EffectiveLoginData
effectiveLoginData
=
null
;
try
(
Connection
connection
=
dbConnection
.
getDBConnection
();
Statement
statement
=
connection
.
createStatement
();
ResultSet
resultSet
=
statement
.
executeQuery
(
query
.
toString
()))
{
String
entryType
=
null
;
long
time
=
0
;
long
totalTime
=
0
;
StringBuilder
times
=
new
StringBuilder
();
while
(
resultSet
.
next
())
{
long
differenceTime
;
EmployeeLoginData
employeeLoginData
=
new
EmployeeLoginData
();
employeeLoginData
.
setEmployeeId
(
resultSet
.
getString
(
"EmployeeCode"
));
employeeLoginData
.
setName
(
resultSet
.
getString
(
"FirstName"
));
employeeLoginData
.
setDate
(
resultSet
.
getDate
(
"TransactionDateTime"
));
employeeLoginData
.
setTime
(
resultSet
.
getTime
(
"TransactionDateTime"
));
employeeLoginData
.
setEntryType
(
resultSet
.
getString
(
"IOEntryStatus"
));
employeeLoginData
.
setEntryDoor
(
resultSet
.
getString
(
"ReaderName"
));
if
(
Objects
.
nonNull
(
entryType
)
&&
entryType
.
equals
(
employeeLoginData
.
getEntryType
())){
String
type
=
entryType
.
equals
(
"IN"
)
?
entryType
+
"-"
+
new
Time
(
time
)
:
employeeLoginData
.
getEntryType
()
+
"-"
+
new
Time
(
employeeLoginData
.
getTime
().
getTime
());
effectiveLoginData
.
getOrphanLogin
().
add
(
type
);
}
if
(
Strings
.
isNullOrEmpty
(
entryType
)){
effectiveLoginData
=
new
EffectiveLoginData
();
entryType
=
employeeLoginData
.
getEntryType
();
effectiveLoginData
.
setEmployeeId
(
employeeLoginData
.
getEmployeeId
());
effectiveLoginData
.
setDate
(
employeeLoginData
.
getDate
());
effectiveLoginData
.
setLoginTime
(
employeeLoginData
.
getTime
().
toString
());
}
if
(
entryType
.
equals
(
"IN"
)
&&
employeeLoginData
.
getEntryType
().
equals
(
"OUT"
)){
differenceTime
=
employeeLoginData
.
getTime
().
getTime
()
-
time
;
totalTime
+=
differenceTime
;
effectiveLoginData
.
setLogoutTime
(
employeeLoginData
.
getTime
().
toString
());
effectiveLoginData
.
setDurationAtWorkPlace
(
getTimeInString
(
totalTime
));
}
time
=
employeeLoginData
.
getTime
().
getTime
();
entryType
=
employeeLoginData
.
getEntryType
();
}
if
(
Objects
.
nonNull
(
effectiveLoginData
)){
if
(!
Strings
.
isNullOrEmpty
(
times
.
toString
()))
times
.
deleteCharAt
(
times
.
length
()-
1
);
// effectiveLoginData.setOrphanLogin(times.toString());
effectiveLoginDataRepo
.
save
(
effectiveLoginData
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
MyTeamLogger
.
getInstance
().
error
(
e
.
getMessage
());
throw
new
MyTeamException
(
e
.
getMessage
());
}
return
effectiveLoginData
;
}
@Override
public
Map
<
String
,
Object
>
getEmployeesEffLoginData
(
long
employeeId
,
Date
fromDate
,
Date
toDate
)
throws
ParseException
{
List
<
EffectiveLoginData
>
loginDataList
=
effectiveLoginDataRepo
.
findByDateBetween
(
fromDate
,
toDate
);
Map
<
String
,
Object
>
response
=
new
HashMap
<>();
if
(
Objects
.
nonNull
(
loginDataList
)
&&
employeeId
!=
0
){
long
totalTime
=
0
;
loginDataList
.
removeIf
(
effectiveLoginData
->
!
effectiveLoginData
.
getEmployeeId
().
equals
(
String
.
valueOf
(
employeeId
)));
for
(
EffectiveLoginData
effectiveLoginData:
loginDataList
)
{
Date
loginTime
=
MyTeamUtils
.
tdf
.
parse
(
effectiveLoginData
.
getDurationAtWorkPlace
());
totalTime
+=
loginTime
.
getTime
();
}
response
.
put
(
"averageTime"
,
MyTeamUtils
.
tdf
.
format
(
totalTime
/
loginDataList
.
size
()));
}
response
.
put
(
"data"
,
loginDataList
);
return
response
;
}
private
String
getTimeInString
(
long
timeLong
){
long
totalSeconds
=
timeLong
/
1000
;
int
hours
=
(
int
)
(
totalSeconds
/
3600
);
int
minutes
=
(
int
)
((
totalSeconds
%
3600
)
/
60
);
int
seconds
=
(
int
)
((
totalSeconds
%
3600
)
%
60
);
return
CommomUtil
.
appendZero
(
hours
)
+
":"
+
CommomUtil
.
appendZero
(
minutes
)
+
":"
+
CommomUtil
.
appendZero
(
seconds
);
}
}
src/main/java/com/nisum/myteam/service/impl/EmployeeService.java
View file @
5a24c359
...
@@ -436,7 +436,7 @@ public class EmployeeService implements IEmployeeService {
...
@@ -436,7 +436,7 @@ public class EmployeeService implements IEmployeeService {
@Override
@Override
public
List
<
Employee
>
getEmployeesByFunctionalGrp
(
String
functionalGrp
)
{
public
List
<
Employee
>
getEmployeesByFunctionalGrp
(
String
functionalGrp
)
{
return
employeeRepo
.
findBy
EmpStatusAndFunctionalGroup
(
"Active"
,
functionalGrp
);
return
employeeRepo
.
findBy
FunctionalGroup
(
functionalGrp
);
}
}
...
@@ -479,13 +479,13 @@ public class EmployeeService implements IEmployeeService {
...
@@ -479,13 +479,13 @@ public class EmployeeService implements IEmployeeService {
}
}
public
Employee
findByEmployeeId
AndEmpStatus
(
String
active
,
String
employeeId
)
{
public
Employee
findByEmployeeId
(
String
employeeId
)
{
// TODO Auto-generated method stub
// TODO Auto-generated method stub
return
employeeRepo
.
findByEmployeeId
AndEmpStatus
(
employeeId
,
active
);
return
employeeRepo
.
findByEmployeeId
(
employeeId
);
}
}
public
List
<
Employee
>
getAllEmployeeListByFunGrps
(
List
<
String
>
functionalGroupList
){
public
List
<
Employee
>
getAllEmployeeListByFunGrps
(
List
<
String
>
functionalGroupList
){
Query
query
=
new
Query
(
Criteria
.
where
(
"
empStatus"
).
is
(
"Active"
).
andOperator
(
Criteria
.
where
(
"functionalGroup"
).
in
(
functionalGroupList
)
));
Query
query
=
new
Query
(
Criteria
.
where
(
"
functionalGroup"
).
in
(
functionalGroupList
));
List
<
Employee
>
employeePersistedList
=
mongoTemplate
.
find
(
query
,
Employee
.
class
);
List
<
Employee
>
employeePersistedList
=
mongoTemplate
.
find
(
query
,
Employee
.
class
);
return
employeePersistedList
;
return
employeePersistedList
;
}
}
...
...
src/main/java/com/nisum/myteam/service/impl/ReportService.java
View file @
5a24c359
...
@@ -121,7 +121,7 @@ public class ReportService implements IReportService {
...
@@ -121,7 +121,7 @@ public class ReportService implements IReportService {
resourceService
.
getResourceByProjectId
(
p
.
getProjectId
()).
stream
().
filter
(
resource
->
resource
.
getBillingStartDate
().
compareTo
(
onDate
)
<=
0
&&
resourceService
.
getResourceByProjectId
(
p
.
getProjectId
()).
stream
().
filter
(
resource
->
resource
.
getBillingStartDate
().
compareTo
(
onDate
)
<=
0
&&
resource
.
getBillingEndDate
().
compareTo
(
onDate
)>=
0
).
resource
.
getBillingEndDate
().
compareTo
(
onDate
)>=
0
).
forEach
(
r
->{
forEach
(
r
->{
Employee
employee
=
employeeService
.
findByEmployeeId
AndEmpStatus
(
MyTeamUtils
.
ACTIVE
,
r
.
getEmployeeId
());
Employee
employee
=
employeeService
.
findByEmployeeId
(
r
.
getEmployeeId
());
if
(
employee
!=
null
)
if
(
employee
!=
null
)
employeeList
.
add
(
employeeService
.
getEmployeeById
(
r
.
getEmployeeId
()));
employeeList
.
add
(
employeeService
.
getEmployeeById
(
r
.
getEmployeeId
()));
});
});
...
...
src/main/java/com/nisum/myteam/utils/MyTeamUtils.java
View file @
5a24c359
...
@@ -103,6 +103,12 @@ public class MyTeamUtils {
...
@@ -103,6 +103,12 @@ public class MyTeamUtils {
public
final
static
String
EMPLOYEE_EFFORTS_QUERY1
=
" and convert(varchar,tr.aDateTime, 111) <="
;
public
final
static
String
EMPLOYEE_EFFORTS_QUERY1
=
" and convert(varchar,tr.aDateTime, 111) <="
;
public
final
static
String
EMPLOYEE_EFFORTS_QUERY2
=
" group by convert(varchar,tr.aDateTime, 111), emp.EmployeeCode, emp.FirstName)"
public
final
static
String
EMPLOYEE_EFFORTS_QUERY2
=
" group by convert(varchar,tr.aDateTime, 111), emp.EmployeeCode, emp.FirstName)"
+
"A Group by EmployeeCode, FirstName HAVING SUM(MinutesInOffice) >=3000"
;
+
"A Group by EmployeeCode, FirstName HAVING SUM(MinutesInOffice) >=3000"
;
public
final
static
String
EMPLOYEE_YESTERDAY_LOGIN_DETAILS_QUERY
=
"SELECT emp.FirstName, emp.EmployeeCode, pd.TransactionDateTime, re.IOEntryStatus, re.ReaderName\n"
+
"FROM ProcessData AS pd , EmployeeMaster AS emp, Readers AS re \n"
+
"WHERE emp.EmployeeMasterID = pd.EmployeeID AND re.ReaderID = pd.ReaderID AND emp.EmployeeCode = %s \n"
+
"AND pd.TransactionDateTime <= CONVERT(date,GETDATE()) AND pd.TransactionDateTime >= CONVERT(date,GETDATE()-1) "
+
"ORDER BY pd.TransactionDateTime"
;
public
final
static
String
UNION
=
" Union "
;
public
final
static
String
UNION
=
" Union "
;
...
...
src/main/resources/application.properties
View file @
5a24c359
...
@@ -24,7 +24,7 @@ myteam.localFile.directory=/home/nisum/Documents/
...
@@ -24,7 +24,7 @@ myteam.localFile.directory=/home/nisum/Documents/
spring.mail.host
=
smtp.gmail.com
spring.mail.host
=
smtp.gmail.com
spring.mail.port
=
587
spring.mail.port
=
587
spring.mail.username
=
mytime.nisum@gmail.com
spring.mail.username
=
mytime.nisum@gmail.com
spring.mail.password
=
nisum
myteam
@123
spring.mail.password
=
nisum@123
spring.mail.properties.mail.smtp.auth
=
true
spring.mail.properties.mail.smtp.auth
=
true
spring.mail.properties.mail.smtp.starttls.enable
=
true
spring.mail.properties.mail.smtp.starttls.enable
=
true
spring.mail.properties.mail.smtp.starttls.required
=
true
spring.mail.properties.mail.smtp.starttls.required
=
true
...
@@ -70,6 +70,7 @@ email.workAnniversary.notification.from=mytime.nisum@gmail.com
...
@@ -70,6 +70,7 @@ email.workAnniversary.notification.from=mytime.nisum@gmail.com
email.workAnniversary.notification.subject
=
Happy Work Anniversary
email.workAnniversary.notification.subject
=
Happy Work Anniversary
email.workAnniversary.notification.cron
=
00 00 06 * * 1-7
email.workAnniversary.notification.cron
=
00 00 06 * * 1-7
effective.login.time.cron
=
00 05 00 * * 1-7
spring.profiles.active
=
development
spring.profiles.active
=
development
message
=
this is from default configuration
message
=
this is from default configuration
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment