Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
attendance-performance-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
attendance-performance-platform
Commits
bf74e50e
Commit
bf74e50e
authored
Aug 20, 2024
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改请假计算考勤
parent
8fd1ba6e
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
64 additions
and
39 deletions
+64
-39
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordErrorServiceImpl.java
...ndance/service/impl/AttendanceRecordErrorServiceImpl.java
+59
-34
attendance-performance-manager/src/test/java/com/mortals/httpclient/system.http
...-manager/src/test/java/com/mortals/httpclient/system.http
+5
-5
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordErrorServiceImpl.java
View file @
bf74e50e
...
...
@@ -313,12 +313,10 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
private
String
getRuleCode
(
AttendanceRecordErrorEntity
entity
)
{
//请假时间段排除
//判断当天是否请假 请假分为多个区间段与请假类型。
boolean
isLeave
=
false
;
AttendanceLeaveRecordQuery
leaveRecordQuery
=
new
AttendanceLeaveRecordQuery
();
leaveRecordQuery
.
setLeavePersonId
(
entity
.
getStaffId
());
/* leaveRecordQuery.setStartTimeStart(DateUtil.formatDate(entity.getErrorDateTime()));
leaveRecordQuery.setStartTimeEnd(DateUtil.formatDate(entity.getErrorDateTime()));*/
leaveRecordQuery
.
setAuditResultList
(
Arrays
.
asList
(
1
,
4
));
boolean
isLeave
=
false
;
List
<
AttendanceLeaveRecordEntity
>
leaveRecordEntities
=
attendanceLeaveRecordService
.
find
(
leaveRecordQuery
);
List
<
AttendanceLeaveRecordEntity
>
leaveRecords
=
null
;
...
...
@@ -339,12 +337,8 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
}
}
if
(!
ObjectUtils
.
isEmpty
(
leaveRecords
))
{
//当前日期范围内 存在请假。判断请假计入考勤。目前只有事件计入
isLeave
=
true
;
}
Long
shiftsId
=
entity
.
getShiftsId
();
AttendanceClassDetailEntity
attendanceClassDetailEntity
=
classDetailService
.
get
(
shiftsId
);
String
ruleCode
=
""
;
if
(
ErrorStatusEnum
.
早退
.
getValue
()
==
DataUtil
.
converStr2Int
(
entity
.
getProcessResult
(),
3
))
{
if
(!
ObjectUtils
.
isEmpty
(
entity
.
getErrorDateTime
())
&&
!
ObjectUtils
.
isEmpty
(
entity
.
getGoOffDateTime
()))
{
...
...
@@ -352,35 +346,32 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
//判断如果有请假记录记录。这计算早退时间与请假记录开始时间的差值
if
(
isLeave
)
{
List
<
Long
>
earlyMinList
=
new
ArrayList
<>();
Date
goOffDateTime
=
entity
.
getGoOffDateTime
();
if
(!
ObjectUtils
.
isEmpty
(
attendanceClassDetailEntity
)
&&
attendanceClassDetailEntity
.
getOffWorkDateBefore
()
>
0
)
{
goOffDateTime
=
DateUtil
.
offsetMinute
(
goOffDateTime
,
-
attendanceClassDetailEntity
.
getOffWorkDateBefore
());
}
for
(
AttendanceLeaveRecordEntity
leaveRecord
:
leaveRecords
)
{
long
between
=
DateUtil
.
between
(
leaveRecord
.
getStartTime
(),
leaveRecord
.
getEndTime
(),
DateUnit
.
DAY
);
if
(
between
==
0
)
{
//
非跨
天
// 1.判断异常时间与请假结束时间那个大。取大那个与当前班次下班时间比较差值,去正向值
//
当
天
// 1.判断异常时间与请假结束时间那个大。取大那个与当前班次下班时间比较差值,去正向值
偏移后的时间计算
int
compare
=
DateUtil
.
compare
(
entity
.
getErrorDateTime
(),
leaveRecord
.
getEndTime
());
if
(
compare
<
0
)
{
//异常时间小于请假结束时间,早退则计算假期结束时间与班次下班时间差值
long
tempEarly
=
DateUtil
.
between
(
leaveRecord
.
getEndTime
(),
entity
.
getGoOffDateTime
()
,
DateUnit
.
MINUTE
,
false
);
//异常时间小于请假结束时间,早退则计算假期结束时间与班次下班时间
还有前置时间
差值
long
tempEarly
=
DateUtil
.
between
(
leaveRecord
.
getEndTime
(),
goOffDateTime
,
DateUnit
.
MINUTE
,
false
);
if
(
tempEarly
>
0L
)
{
earlyMinList
.
add
(
tempEarly
);
}
}
if
(
compare
>
0
)
{
if
(
compare
>=
0
)
{
//异常时间大于请假结束时间,早退则计算异常时间与班次下班时间差值
long
tempEarly
=
DateUtil
.
between
(
entity
.
getErrorDateTime
(),
entity
.
getGoOffDateTime
(),
DateUnit
.
MINUTE
,
false
);
if
(
tempEarly
>
0L
)
{
earlyMinList
.
add
(
tempEarly
);
}
}
else
{
//异常时间小于请假结束时间,早退则计算异常时间与班次下班时间差值
long
tempEarly
=
DateUtil
.
between
(
entity
.
getErrorDateTime
(),
entity
.
getGoOffDateTime
(),
DateUnit
.
MINUTE
,
false
);
long
tempEarly
=
DateUtil
.
between
(
entity
.
getErrorDateTime
(),
goOffDateTime
,
DateUnit
.
MINUTE
,
false
);
if
(
tempEarly
>
0L
)
{
earlyMinList
.
add
(
tempEarly
);
}
}
}
if
(
between
>
0
)
{
/*
if (between > 0) {
//跨天 2024-07-01---2024-07-03
// 判断当前异常日期是否在请假全天,
long betweened = DateUtil.between(DateUtil.parseDate(DateUtil.formatDate(entity.getErrorDateTime())), leaveRecord.getEndTime(), DateUnit.DAY);
...
...
@@ -389,17 +380,15 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
int compare = DateUtil.compare(entity.getErrorDateTime(), leaveRecord.getEndTime());
}
}
}
*/
}
if
(!
ObjectUtils
.
isEmpty
(
earlyMinList
))
{
//去列表中最小值赋值给earlyMin
earlyMin
=
earlyMinList
.
stream
().
min
(
Comparator
.
comparing
(
x
->
x
)).
orElse
(
0L
);
}
else
{
//请假不满足条件
earlyMin
=
DateUtil
.
between
(
entity
.
getErrorDateTime
(),
entity
.
getGoOffDateTime
(),
DateUnit
.
MINUTE
);
earlyMin
=
DateUtil
.
between
(
entity
.
getErrorDateTime
(),
goOffDateTime
,
DateUnit
.
MINUTE
);
}
}
else
{
...
...
@@ -421,22 +410,58 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
ruleCode
=
"ATTEND1006"
;
}
}
else
{
ruleCode
=
"ATTEND1002"
;
}
}
else
if
(
ErrorStatusEnum
.
迟到
.
getValue
()
==
DataUtil
.
converStr2Int
(
entity
.
getProcessResult
(),
3
))
{
if
(!
ObjectUtils
.
isEmpty
(
entity
.
getErrorDateTime
())
&&
!
ObjectUtils
.
isEmpty
(
entity
.
getGoOffDateTime
()))
{
//判断如果有请假记录记录。这计算早退时间与请假记录开始时间的差值
List
<
Long
>
lateMinList
=
new
ArrayList
<>();
Long
lateMin
=
0L
;
if
(
isLeave
)
{
Date
goOffDateTime
=
entity
.
getGoOffDateTime
();
if
(!
ObjectUtils
.
isEmpty
(
attendanceClassDetailEntity
)
&&
attendanceClassDetailEntity
.
getGoWorkDateAfter
()
>
0
)
{
goOffDateTime
=
DateUtil
.
offsetMinute
(
goOffDateTime
,
attendanceClassDetailEntity
.
getGoWorkDateAfter
());
}
for
(
AttendanceLeaveRecordEntity
leaveRecord
:
leaveRecords
)
{
long
between
=
DateUtil
.
between
(
leaveRecord
.
getStartTime
(),
leaveRecord
.
getEndTime
(),
DateUnit
.
DAY
);
if
(
between
==
0
)
{
//当天
// 1.判断异常时间与请假开始时间那个大。
int
compare
=
DateUtil
.
compare
(
entity
.
getErrorDateTime
(),
leaveRecord
.
getStartTime
());
if
(
compare
<
0
)
{
//异常时间小于请假结束时间,迟到则计算异常时间与班次班次班时间还有前置时间差值
long
tempLate
=
DateUtil
.
between
(
goOffDateTime
,
entity
.
getErrorDateTime
(),
DateUnit
.
MINUTE
,
false
);
if
(
tempLate
>
0L
)
{
lateMinList
.
add
(
tempLate
);
}
}
if
(
compare
>=
0
)
{
//异常时间小于请假结束时间,迟到则计算异常时间与班次班次班时间还有前置时间差值
long
tempLate
=
DateUtil
.
between
(
goOffDateTime
,
leaveRecord
.
getEndTime
(),
DateUnit
.
MINUTE
,
false
);
if
(
tempLate
>
0L
)
{
lateMinList
.
add
(
tempLate
);
}
}
}
if
(
between
>
0
)
{
//todo 跨天
}
}
if
(!
ObjectUtils
.
isEmpty
(
lateMinList
))
{
lateMin
=
lateMinList
.
stream
().
min
(
Comparator
.
comparing
(
x
->
x
)).
orElse
(
0L
);
}
else
{
lateMin
=
DateUtil
.
between
(
entity
.
getErrorDateTime
(),
entity
.
getGoOffDateTime
(),
DateUnit
.
MINUTE
);
}
}
else
{
lateMin
=
DateUtil
.
between
(
entity
.
getErrorDateTime
(),
entity
.
getGoOffDateTime
(),
DateUnit
.
MINUTE
);
}
if
(
lateMin
>=
0L
&&
lateMin
<
5L
)
{
//迟到5分钟内
ruleCode
=
"ATTEND1001"
;
...
...
@@ -450,7 +475,7 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
ruleCode
=
"ATTEND1005"
;
}
}
else
{
//
早退
5分钟内
//
迟到
5分钟内
ruleCode
=
"ATTEND1001"
;
}
}
else
if
(
ErrorStatusEnum
.
缺卡
.
getValue
()
==
DataUtil
.
converStr2Int
(
entity
.
getProcessResult
(),
3
))
{
...
...
attendance-performance-manager/src/test/java/com/mortals/httpclient/system.http
View file @
bf74e50e
...
...
@@ -37,8 +37,8 @@ POST {{baseUrl}}/attendance/record/hik/addAttendanceRecord
Content-Type: application/json
{
"attendanceDateStart": "2024-07-0
1
",
"attendanceDateEnd": "2024-07-
31
"
"attendanceDateStart": "2024-07-0
8
",
"attendanceDateEnd": "2024-07-
10
"
}
###海康考勤打卡记录计算1
...
...
@@ -46,9 +46,9 @@ POST {{baseUrl}}/attendance/record/hik/addAttendanceRecord
Content-Type: application/json
{
"attendanceDateStart": "2024-07-0
3
",
"attendanceDateEnd": "2024-07-
03
",
"staffId":
365
"attendanceDateStart": "2024-07-0
1
",
"attendanceDateEnd": "2024-07-
31
",
"staffId":
737
}
...
...
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