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
27449693
Commit
27449693
authored
Oct 11, 2024
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
整理代码
parent
4df6a9b2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
69 additions
and
28 deletions
+69
-28
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
...tendance/service/impl/AttendanceRecordHikServiceImpl.java
+8
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/work/CommonData.java
...ortals/xhx/module/attendance/service/work/CommonData.java
+2
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/work/FixWorkOtherAttendance.java
...odule/attendance/service/work/FixWorkOtherAttendance.java
+59
-28
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
View file @
27449693
...
...
@@ -111,6 +111,12 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
Map
<
Long
,
AttendanceClassDetailEntity
>
classDetailEntityMap
=
attendanceClassDetailService
.
find
(
new
AttendanceClassDetailQuery
()).
parallelStream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
(),
y
->
y
,
(
o
,
n
)
->
n
));
Map
<
Long
,
List
<
AttendanceGroupFixedworkSpecialEntity
>>
fixedSpecialGroupMap
=
specialService
.
find
(
new
AttendanceGroupFixedworkSpecialEntity
()).
parallelStream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getFixedWorkId
()));
//获取当日未处理异常记录
AttendanceRecordErrorQuery
attendanceRecordErrorQuery
=
new
AttendanceRecordErrorQuery
();
attendanceRecordErrorQuery
.
setErrorDateTimeStart
(
attendanceRecordHikQuery
.
getAttendanceDateStart
());
attendanceRecordErrorQuery
.
setErrorDateTimeEnd
(
attendanceRecordErrorQuery
.
getActualAttendanceDateTimeEnd
());
Map
<
Long
,
List
<
AttendanceRecordErrorEntity
>>
errorGroupStaffMap
=
errorService
.
find
(
attendanceRecordErrorQuery
).
parallelStream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getStaffId
()));
String
attendanceDateStart
=
attendanceRecordHikQuery
.
getAttendanceDateStart
();
String
attendanceDateEnd
=
attendanceRecordHikQuery
.
getAttendanceDateEnd
();
...
...
@@ -179,6 +185,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData
.
setRecordHikEntities
(
recordHikEntities
);
commonData
.
setFixedSpecialGroupMap
(
fixedSpecialGroupMap
);
commonData
.
setClassDetailEntityMap
(
classDetailEntityMap
);
commonData
.
setErrorGroupStaffMap
(
errorGroupStaffMap
);
workAbstract
.
doHandleWork
(
commonData
);
}
//如果考勤人员信息list长度大于1 则该考勤人员有多个考勤组.
...
...
@@ -204,6 +211,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData
.
setRecordHikEntities
(
recordHikEntities
);
commonData
.
setFixedSpecialGroupMap
(
fixedSpecialGroupMap
);
commonData
.
setClassDetailEntityMap
(
classDetailEntityMap
);
commonData
.
setErrorGroupStaffMap
(
errorGroupStaffMap
);
workAbstract
.
doHandleWork
(
commonData
);
}
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/work/CommonData.java
View file @
27449693
...
...
@@ -41,6 +41,8 @@ public class CommonData {
private
Map
<
Long
,
List
<
AttendanceGroupFixedworkSpecialEntity
>>
fixedSpecialGroupMap
;
private
Map
<
Long
,
List
<
AttendanceRecordErrorEntity
>>
errorGroupStaffMap
;
// private Map<Long, List<AttendanceLeaveRecordEntity>> leaveRecordGroupMap;
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/work/FixWorkOtherAttendance.java
View file @
27449693
...
...
@@ -39,6 +39,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
private
Map
<
Long
,
AttendanceClassDetailEntity
>
classDetailEntityMap
;
private
CommonData
commonData
;
public
FixWorkOtherAttendance
(
int
type
)
{
super
(
type
);
this
.
attendanceGroupFixedworkService
=
SpringUtils
.
getBean
(
AttendanceGroupFixedworkService
.
class
);
...
...
@@ -57,6 +59,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
@Override
public
void
doHandleWork
(
CommonData
commonData
)
{
this
.
commonData
=
commonData
;
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
=
attendanceGroupFixedworkService
.
selectOne
(
new
AttendanceGroupFixedworkQuery
()
.
groupId
(
commonData
.
getAttendanceGroupEntity
().
getId
()));
Map
<
Long
,
AttendanceClassEntity
>
classEntityMap
=
commonData
.
getClassEntityMap
();
...
...
@@ -287,7 +290,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
//生成异常记录
StopWatch
stopWatch
=
new
StopWatch
();
StopWatch
stopWatch
=
new
StopWatch
();
stopWatch
.
start
(
"生成异常记录耗时"
);
genErrorAttendRecord
(
commonData
.
getContext
(),
commonData
.
getDateStr
(),
commonData
.
getAttendanceRecordEntity
(),
commonData
.
getDetailEntityList
());
stopWatch
.
stop
();
...
...
@@ -354,21 +357,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
private
void
deleteErrorRecord
(
String
dateStr
,
Long
staffId
,
Context
context
)
{
//删除当前员工当日未处理的异常后,重新添加
AttendanceRecordErrorQuery
errorQuery
=
new
AttendanceRecordErrorQuery
();
errorQuery
.
setErrorDateTimeStart
(
dateStr
);
errorQuery
.
setErrorDateTimeEnd
(
dateStr
);
errorQuery
.
setStaffId
(
staffId
);
errorQuery
.
setProcessStatus
(
YesNoEnum
.
NO
.
getValue
());
List
<
AttendanceRecordErrorEntity
>
attendanceRecordErrorEntities
=
errorService
.
find
(
errorQuery
);
Long
[]
errorIds
=
attendanceRecordErrorEntities
.
stream
().
map
(
i
->
i
.
getId
()).
toArray
(
Long
[]::
new
);
if
(!
ObjectUtils
.
isEmpty
(
errorIds
))
{
//log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities));
errorService
.
remove
(
errorIds
,
context
);
}
}
public
void
genErrorAttendRecord
(
Context
context
,
String
dateStr
,
AttendanceRecordEntity
attendanceRecordEntity
,
List
<
AttendanceRecordDetailEntity
>
detailEntityList
)
{
//处理异常打卡,所以异常打卡的 都新增一条记录
...
...
@@ -444,27 +432,70 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
//删除当前员工当日未处理的异常后,重新添加 处理的 不做删除
deleteErrorRecord
(
dateStr
,
attendanceRecordEntity
.
getStaffId
(),
context
);
AttendanceRecordErrorQuery
errorQuery
;
//deleteErrorRecord(dateStr, attendanceRecordEntity.getStaffId(), context);
//todo 缓存方式删除优化
deleteErrorRecordCache
(
attendanceRecordEntity
.
getStaffId
(),
context
);
if
(!
ObjectUtils
.
isEmpty
(
errorEntityList
))
{
//过滤异常列表中存在相同的记录
errorEntityList
=
errorEntityList
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
for
(
AttendanceRecordErrorEntity
errorEntity
:
errorEntityList
)
{
//查看是否存在相同的异常记录,如果存在 则不添加
errorQuery
=
new
AttendanceRecordErrorQuery
();
errorQuery
.
setErrorDateTime
(
errorEntity
.
getErrorDateTime
());
errorQuery
.
setStaffId
(
errorEntity
.
getStaffId
());
errorQuery
.
setShiftsId
(
errorEntity
.
getShiftsId
());
errorQuery
.
setProcessStatus
(
YesNoEnum
.
YES
.
getValue
());
AttendanceRecordErrorEntity
attendanceRecordErrorEntity
=
errorService
.
selectOne
(
errorQuery
,
context
);
if
(
ObjectUtils
.
isEmpty
(
attendanceRecordErrorEntity
))
{
errorService
.
save
(
errorEntity
,
context
);
}
//查看是否存在相同的异常记录,如果存在 则不添加 todo 非数据库查询方式判断优化
List
<
AttendanceRecordErrorEntity
>
attendanceRecordErrorEntities
=
commonData
.
getErrorGroupStaffMap
().
get
(
attendanceRecordEntity
.
getStaffId
());
checkAndSaveCache
(
context
,
attendanceRecordErrorEntities
,
errorEntity
);
// checkAndSave(context, errorEntity);
}
}
}
private
void
deleteErrorRecord
(
String
dateStr
,
Long
staffId
,
Context
context
)
{
//删除当前员工当日未处理的异常后,重新添加
AttendanceRecordErrorQuery
errorQuery
=
new
AttendanceRecordErrorQuery
();
errorQuery
.
setErrorDateTimeStart
(
dateStr
);
errorQuery
.
setErrorDateTimeEnd
(
dateStr
);
errorQuery
.
setStaffId
(
staffId
);
errorQuery
.
setProcessStatus
(
YesNoEnum
.
NO
.
getValue
());
List
<
AttendanceRecordErrorEntity
>
attendanceRecordErrorEntities
=
errorService
.
find
(
errorQuery
);
Long
[]
errorIds
=
attendanceRecordErrorEntities
.
stream
().
map
(
i
->
i
.
getId
()).
toArray
(
Long
[]::
new
);
if
(!
ObjectUtils
.
isEmpty
(
errorIds
))
{
//log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities));
errorService
.
remove
(
errorIds
,
context
);
}
}
private
void
deleteErrorRecordCache
(
Long
staffId
,
Context
context
)
{
//删除当前员工当日未处理的异常后,重新添加
List
<
AttendanceRecordErrorEntity
>
attendanceRecordErrorEntities
=
commonData
.
getErrorGroupStaffMap
().
get
(
staffId
);
Long
[]
errorIds
=
attendanceRecordErrorEntities
.
stream
()
.
filter
(
f
->
YesNoEnum
.
NO
.
getValue
()
==
f
.
getProcessStatus
())
.
map
(
i
->
i
.
getId
()).
toArray
(
Long
[]::
new
);
if
(!
ObjectUtils
.
isEmpty
(
errorIds
))
{
//log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities));
errorService
.
remove
(
errorIds
,
context
);
}
}
private
void
checkAndSaveCache
(
Context
context
,
List
<
AttendanceRecordErrorEntity
>
attendanceRecordErrorEntities
,
AttendanceRecordErrorEntity
errorEntity
)
{
AttendanceRecordErrorEntity
attendanceRecordErrorEntity
=
attendanceRecordErrorEntities
.
stream
()
.
filter
(
f
->
errorEntity
.
getErrorDateTime
().
getTime
()
==
f
.
getErrorDateTime
().
getTime
())
.
filter
(
f
->
errorEntity
.
getShiftsId
().
equals
(
f
.
getShiftsId
()))
.
filter
(
f
->
YesNoEnum
.
YES
.
getValue
()
==
f
.
getProcessStatus
()).
findAny
().
orElseGet
(()
->
null
);
if
(
ObjectUtils
.
isEmpty
(
attendanceRecordErrorEntity
))
{
errorService
.
save
(
errorEntity
,
context
);
}
}
private
void
checkAndSave
(
Context
context
,
AttendanceRecordErrorEntity
errorEntity
)
{
AttendanceRecordErrorQuery
errorQuery
;
errorQuery
=
new
AttendanceRecordErrorQuery
();
errorQuery
.
setErrorDateTime
(
errorEntity
.
getErrorDateTime
());
errorQuery
.
setStaffId
(
errorEntity
.
getStaffId
());
errorQuery
.
setShiftsId
(
errorEntity
.
getShiftsId
());
errorQuery
.
setProcessStatus
(
YesNoEnum
.
YES
.
getValue
());
AttendanceRecordErrorEntity
attendanceRecordErrorEntity
=
errorService
.
selectOne
(
errorQuery
,
context
);
if
(
ObjectUtils
.
isEmpty
(
attendanceRecordErrorEntity
))
{
errorService
.
save
(
errorEntity
,
context
);
}
}
public
static
void
main
(
String
[]
args
)
{
...
...
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