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
77fdd2e0
Commit
77fdd2e0
authored
Aug 15, 2024
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化考勤计算
parent
03cb182b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
85 additions
and
60 deletions
+85
-60
attendance-performance-manager/src/main/java/com/mortals/xhx/common/utils/AddAttendThread.java
...in/java/com/mortals/xhx/common/utils/AddAttendThread.java
+7
-4
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java
.../mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java
+3
-4
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
...tendance/service/impl/AttendanceRecordHikServiceImpl.java
+17
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/work/CommonData.java
...ortals/xhx/module/attendance/service/work/CommonData.java
+7
-4
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/work/FixWorkOtherAttendance.java
...odule/attendance/service/work/FixWorkOtherAttendance.java
+51
-47
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java
.../module/attendance/web/AttendanceRecordHikController.java
+0
-1
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/common/utils/AddAttendThread.java
View file @
77fdd2e0
...
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
...
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
import
cn.hutool.core.date.DateUnit
;
import
cn.hutool.core.date.DateUnit
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity
;
...
@@ -15,6 +16,8 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -15,6 +16,8 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StopWatch
;
import
org.springframework.util.StopWatch
;
import
java.util.Arrays
;
import
static
com
.
mortals
.
xhx
.
common
.
key
.
RedisKey
.
KEY_ATTENDANCE_STAT_CACHE
;
import
static
com
.
mortals
.
xhx
.
common
.
key
.
RedisKey
.
KEY_ATTENDANCE_STAT_CACHE
;
...
@@ -53,16 +56,16 @@ public class AddAttendThread implements Runnable {
...
@@ -53,16 +56,16 @@ public class AddAttendThread implements Runnable {
Long
compare
=
DateUtil
.
between
(
attendEnd
,
attendStart
,
DateUnit
.
DAY
);
Long
compare
=
DateUtil
.
between
(
attendEnd
,
attendStart
,
DateUnit
.
DAY
);
StopWatch
stopWatch
=
new
StopWatch
(
"stopwatch attend"
);
StopWatch
stopWatch
=
new
StopWatch
(
"stopwatch attend"
);
log
.
info
(
"考勤计算天数区间:{}"
,
compare
);
log
.
info
(
"考勤计算天数区间:{}"
,
compare
);
stopWatch
.
start
(
"执行本地方法"
);
for
(
int
i
=
0
;
i
<=
compare
.
intValue
();
i
++)
{
for
(
int
i
=
0
;
i
<=
compare
.
intValue
();
i
++)
{
stopWatch
.
start
(
"执行本地方法"
);
DateTime
curDate
=
DateUtil
.
offsetDay
(
attendStart
,
i
);
DateTime
curDate
=
DateUtil
.
offsetDay
(
attendStart
,
i
);
log
.
info
(
"考勤计算日期:{}"
,
curDate
.
toDateStr
());
hikEntity
.
setAttendanceDateStart
(
curDate
.
toDateStr
());
hikEntity
.
setAttendanceDateStart
(
curDate
.
toDateStr
());
hikEntity
.
setAttendanceDateEnd
(
curDate
.
toDateStr
());
hikEntity
.
setAttendanceDateEnd
(
curDate
.
toDateStr
());
hikEntity
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"attendanceDate"
)));
hikService
.
addAttendanceRecordByQuery
(
hikEntity
,
context
);
hikService
.
addAttendanceRecordByQuery
(
hikEntity
,
context
);
stopWatch
.
stop
();
log
.
info
(
"考勤计算日期:{} 完成,耗时:{}ms"
,
curDate
.
toDateStr
(),
stopWatch
.
getLastTaskTimeMillis
());
}
}
stopWatch
.
stop
();
log
.
info
(
"完成,耗时:{}ms"
,
stopWatch
.
getLastTaskTimeMillis
());
//生成汇总信息
//生成汇总信息
log
.
info
(
"生成考勤汇总消息开始。。。"
);
log
.
info
(
"生成考勤汇总消息开始。。。"
);
AttendanceSummaryQuery
query
=
new
AttendanceSummaryQuery
();
AttendanceSummaryQuery
query
=
new
AttendanceSummaryQuery
();
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java
View file @
77fdd2e0
...
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON;
...
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.OrderCol
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.service.ITask
;
import
com.mortals.framework.service.ITask
;
import
com.mortals.framework.service.ITaskExcuteService
;
import
com.mortals.framework.service.ITaskExcuteService
;
...
@@ -31,10 +32,7 @@ import org.springframework.beans.factory.annotation.Value;
...
@@ -31,10 +32,7 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.ObjectUtils
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
com
.
mortals
.
xhx
.
common
.
key
.
RedisKey
.
KEY_ATTENDANCE_STAT_CACHE
;
import
static
com
.
mortals
.
xhx
.
common
.
key
.
RedisKey
.
KEY_ATTENDANCE_STAT_CACHE
;
...
@@ -102,6 +100,7 @@ public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService {
...
@@ -102,6 +100,7 @@ public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService {
AttendanceRecordHikQuery
recordHikQuery
=
new
AttendanceRecordHikQuery
();
AttendanceRecordHikQuery
recordHikQuery
=
new
AttendanceRecordHikQuery
();
recordHikQuery
.
setAttendanceDateStart
(
DateUtil
.
today
());
recordHikQuery
.
setAttendanceDateStart
(
DateUtil
.
today
());
recordHikQuery
.
setAttendanceDateEnd
(
DateUtil
.
today
());
recordHikQuery
.
setAttendanceDateEnd
(
DateUtil
.
today
());
recordHikQuery
.
setOrderColList
(
Arrays
.
asList
(
new
OrderCol
(
"attendanceDate"
)));
try
{
try
{
recordHikService
.
addAttendanceRecordByQuery
(
recordHikQuery
,
context
);
recordHikService
.
addAttendanceRecordByQuery
(
recordHikQuery
,
context
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
View file @
77fdd2e0
...
@@ -66,6 +66,10 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
...
@@ -66,6 +66,10 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
private
IHikDoorService
hikDoorService
;
private
IHikDoorService
hikDoorService
;
@Autowired
@Autowired
private
AttendanceClassService
attendanceClassService
;
private
AttendanceClassService
attendanceClassService
;
@Autowired
private
AttendanceGroupFixedworkSpecialService
specialService
;
@Autowired
private
AttendanceLeaveRecordService
attendanceLeaveRecordService
;
@Override
@Override
...
@@ -140,6 +144,13 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
...
@@ -140,6 +144,13 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
Map
<
Long
,
List
<
AttendanceGroupStaffEntity
>>
groupStaffMap
=
attendanceGroupStaffService
.
find
(
new
AttendanceGroupStaffQuery
()).
parallelStream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getStaffId
()));
Map
<
Long
,
List
<
AttendanceGroupStaffEntity
>>
groupStaffMap
=
attendanceGroupStaffService
.
find
(
new
AttendanceGroupStaffQuery
()).
parallelStream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getStaffId
()));
Map
<
Long
,
AttendanceGroupEntity
>
groupMap
=
attendanceGroupService
.
find
(
new
AttendanceGroupQuery
()).
parallelStream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
(),
y
->
y
,
(
o
,
n
)
->
n
));
Map
<
Long
,
AttendanceGroupEntity
>
groupMap
=
attendanceGroupService
.
find
(
new
AttendanceGroupQuery
()).
parallelStream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
(),
y
->
y
,
(
o
,
n
)
->
n
));
Map
<
Long
,
AttendanceClassEntity
>
classEntityMap
=
attendanceClassService
.
find
(
new
AttendanceClassQuery
()).
parallelStream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
(),
y
->
y
,
(
o
,
n
)
->
n
));
Map
<
Long
,
AttendanceClassEntity
>
classEntityMap
=
attendanceClassService
.
find
(
new
AttendanceClassQuery
()).
parallelStream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
(),
y
->
y
,
(
o
,
n
)
->
n
));
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
()));
AttendanceLeaveRecordQuery
leaveRecordQuery
=
new
AttendanceLeaveRecordQuery
();
leaveRecordQuery
.
setAuditResultList
(
Arrays
.
asList
(
1
,
4
));
Map
<
Long
,
List
<
AttendanceLeaveRecordEntity
>>
leaveRecordGroupMap
=
attendanceLeaveRecordService
.
find
(
leaveRecordQuery
).
parallelStream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getLeavePersonId
()));
for
(
Map
.
Entry
<
Long
,
List
<
AttendanceRecordHikEntity
>>
itemEntry
:
listMap
.
entrySet
())
{
for
(
Map
.
Entry
<
Long
,
List
<
AttendanceRecordHikEntity
>>
itemEntry
:
listMap
.
entrySet
())
{
//按人员
//按人员
...
@@ -200,6 +211,9 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
...
@@ -200,6 +211,9 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData
.
setStaffId
(
attendanceRecordEntity
.
getStaffId
());
commonData
.
setStaffId
(
attendanceRecordEntity
.
getStaffId
());
commonData
.
setDateStr
(
dateStr
);
commonData
.
setDateStr
(
dateStr
);
commonData
.
setClassEntityMap
(
classEntityMap
);
commonData
.
setClassEntityMap
(
classEntityMap
);
commonData
.
setRecordHikEntities
(
recordHikEntities
);
commonData
.
setFixedSpecialGroupMap
(
fixedSpecialGroupMap
);
commonData
.
setClassDetailEntityMap
(
classDetailEntityMap
);
workAbstract
.
doHandleWork
(
commonData
);
workAbstract
.
doHandleWork
(
commonData
);
}
}
...
@@ -226,6 +240,9 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
...
@@ -226,6 +240,9 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData
.
setStaffId
(
attendanceRecordEntity
.
getStaffId
());
commonData
.
setStaffId
(
attendanceRecordEntity
.
getStaffId
());
commonData
.
setDateStr
(
dateStr
);
commonData
.
setDateStr
(
dateStr
);
commonData
.
setClassEntityMap
(
classEntityMap
);
commonData
.
setClassEntityMap
(
classEntityMap
);
commonData
.
setRecordHikEntities
(
recordHikEntities
);
commonData
.
setFixedSpecialGroupMap
(
fixedSpecialGroupMap
);
commonData
.
setClassDetailEntityMap
(
classDetailEntityMap
);
workAbstract
.
doHandleWork
(
commonData
);
workAbstract
.
doHandleWork
(
commonData
);
}
}
}
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/work/CommonData.java
View file @
77fdd2e0
...
@@ -2,10 +2,7 @@ package com.mortals.xhx.module.attendance.service.work;
...
@@ -2,10 +2,7 @@ package com.mortals.xhx.module.attendance.service.work;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.Context
;
import
com.mortals.xhx.module.attendance.model.AttendanceClassEntity
;
import
com.mortals.xhx.module.attendance.model.*
;
import
com.mortals.xhx.module.attendance.model.AttendanceGroupEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordDetailEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordEntity
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -37,5 +34,11 @@ public class CommonData {
...
@@ -37,5 +34,11 @@ public class CommonData {
private
Map
<
Long
,
AttendanceClassEntity
>
classEntityMap
;
private
Map
<
Long
,
AttendanceClassEntity
>
classEntityMap
;
private
List
<
AttendanceRecordHikEntity
>
recordHikEntities
;
private
Map
<
Long
,
AttendanceClassDetailEntity
>
classDetailEntityMap
;
private
Map
<
Long
,
List
<
AttendanceGroupFixedworkSpecialEntity
>>
fixedSpecialGroupMap
;
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/work/FixWorkOtherAttendance.java
View file @
77fdd2e0
...
@@ -52,6 +52,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -52,6 +52,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
private
AttendanceRecordDetailService
attendanceRecordDetailService
;
private
AttendanceRecordDetailService
attendanceRecordDetailService
;
private
Map
<
Long
,
AttendanceClassDetailEntity
>
classDetailEntityMap
;
public
FixWorkOtherAttendance
(
int
type
)
{
public
FixWorkOtherAttendance
(
int
type
)
{
super
(
type
);
super
(
type
);
this
.
attendanceGroupFixedworkService
=
SpringUtils
.
getBean
(
AttendanceGroupFixedworkService
.
class
);
this
.
attendanceGroupFixedworkService
=
SpringUtils
.
getBean
(
AttendanceGroupFixedworkService
.
class
);
...
@@ -81,6 +83,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -81,6 +83,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
=
attendanceGroupFixedworkService
.
selectOne
(
new
AttendanceGroupFixedworkQuery
()
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
=
attendanceGroupFixedworkService
.
selectOne
(
new
AttendanceGroupFixedworkQuery
()
.
groupId
(
commonData
.
getAttendanceGroupEntity
().
getId
()));
.
groupId
(
commonData
.
getAttendanceGroupEntity
().
getId
()));
Map
<
Long
,
AttendanceClassEntity
>
classEntityMap
=
commonData
.
getClassEntityMap
();
Map
<
Long
,
AttendanceClassEntity
>
classEntityMap
=
commonData
.
getClassEntityMap
();
Map
<
Long
,
List
<
AttendanceGroupFixedworkSpecialEntity
>>
fixedSpecialGroupMap
=
commonData
.
getFixedSpecialGroupMap
();
this
.
classDetailEntityMap
=
commonData
.
getClassDetailEntityMap
();
if
(
ObjectUtils
.
isEmpty
(
attendanceGroupFixedworkEntity
))
{
if
(
ObjectUtils
.
isEmpty
(
attendanceGroupFixedworkEntity
))
{
log
.
info
(
"attendanceGroupFixedworkEntity is null ! groupId:{}"
,
commonData
.
getAttendanceGroupEntity
().
getId
());
log
.
info
(
"attendanceGroupFixedworkEntity is null ! groupId:{}"
,
commonData
.
getAttendanceGroupEntity
().
getId
());
return
;
return
;
...
@@ -99,9 +103,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -99,9 +103,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
if
(!
checkWorkByHoliday
)
{
if
(!
checkWorkByHoliday
)
{
// log.info("当前日期不在考勤时间范围内,不做处理!");
// log.info("当前日期不在考勤时间范围内,不做处理!");
return
;
return
;
}
else
{
}
else
{
//工作日要上班 获取配置的周六 周日班次 默认周一
//工作日要上班 获取配置的周六 周日班次 默认周一
weekClassId
=
this
.
getWeekClassId
(
attendanceGroupFixedworkEntity
,
"星期一"
);
weekClassId
=
this
.
getWeekClassId
(
attendanceGroupFixedworkEntity
,
"星期一"
);
}
}
}
else
{
}
else
{
if
(
checkHolidayByWorkDay
)
{
if
(
checkHolidayByWorkDay
)
{
...
@@ -114,11 +118,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -114,11 +118,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
AttendanceLeaveRecordQuery
leaveRecordQuery
=
new
AttendanceLeaveRecordQuery
();
AttendanceLeaveRecordQuery
leaveRecordQuery
=
new
AttendanceLeaveRecordQuery
();
leaveRecordQuery
.
setLeavePersonId
(
commonData
.
getStaffId
());
leaveRecordQuery
.
setLeavePersonId
(
commonData
.
getStaffId
());
leaveRecordQuery
.
setAuditResultList
(
Arrays
.
asList
(
1
,
4
));
leaveRecordQuery
.
setAuditResultList
(
Arrays
.
asList
(
1
,
4
));
// leaveRecordQuery.setAuditResult(AuditStatusEnum.通过.getValue());
// leaveRecordQuery.setEndTimeEnd(commonData.getDateStr());
// leaveRecordQuery.setStartTimeStart(commonData.getDateStr());
// leaveRecordQuery.setStartTimeEnd(commonData.getDateStr());
boolean
isLeave
=
false
;
boolean
isLeave
=
false
;
List
<
AttendanceLeaveRecordEntity
>
leaveRecordEntities
=
attendanceLeaveRecordService
.
find
(
leaveRecordQuery
);
List
<
AttendanceLeaveRecordEntity
>
leaveRecordEntities
=
attendanceLeaveRecordService
.
find
(
leaveRecordQuery
);
...
@@ -167,7 +166,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -167,7 +166,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}*/
}*/
//特殊日期考勤配置
//特殊日期考勤配置
List
<
AttendanceGroupFixedworkSpecialEntity
>
specialEntities
=
specialService
.
find
(
new
AttendanceGroupFixedworkSpecialQuery
().
fixedWorkId
(
attendanceGroupFixedworkEntity
.
getId
()));
//List<AttendanceGroupFixedworkSpecialEntity> specialEntities = specialService.find(new AttendanceGroupFixedworkSpecialQuery().fixedWorkId(attendanceGroupFixedworkEntity.getId()));
List
<
AttendanceGroupFixedworkSpecialEntity
>
specialEntities
=
fixedSpecialGroupMap
.
get
(
attendanceGroupFixedworkEntity
.
getId
());
if
(!
ObjectUtils
.
isEmpty
(
specialEntities
))
{
if
(!
ObjectUtils
.
isEmpty
(
specialEntities
))
{
//分组 需要考勤与不需要考勤
//分组 需要考勤与不需要考勤
Map
<
Boolean
,
List
<
AttendanceGroupFixedworkSpecialEntity
>>
collect
=
specialEntities
.
stream
().
collect
(
Collectors
.
partitioningBy
(
item
->
item
.
getMust
()
==
MustEnum
.
是
.
getValue
()));
Map
<
Boolean
,
List
<
AttendanceGroupFixedworkSpecialEntity
>>
collect
=
specialEntities
.
stream
().
collect
(
Collectors
.
partitioningBy
(
item
->
item
.
getMust
()
==
MustEnum
.
是
.
getValue
()));
...
@@ -216,7 +216,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -216,7 +216,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
//获取班次信息
//获取班次信息
// AttendanceClassEntity attendanceClassEntity = attendanceClassService.get(weekClassId);
// AttendanceClassEntity attendanceClassEntity = attendanceClassService.get(weekClassId);
AttendanceClassEntity
attendanceClassEntity
=
classEntityMap
.
get
(
weekClassId
);
AttendanceClassEntity
attendanceClassEntity
=
classEntityMap
.
get
(
weekClassId
);
if
(
ObjectUtils
.
isEmpty
(
attendanceClassEntity
))
{
if
(
ObjectUtils
.
isEmpty
(
attendanceClassEntity
))
{
log
.
info
(
"attendanceClassEntity is null ,weekClassId:{}"
,
weekClassId
);
log
.
info
(
"attendanceClassEntity is null ,weekClassId:{}"
,
weekClassId
);
...
@@ -224,12 +224,16 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -224,12 +224,16 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
//查询当天,该人员的考勤记录
//查询当天,该人员的考勤记录
AttendanceRecordHikQuery
recordHikQuery
=
new
AttendanceRecordHikQuery
();
/*
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(commonData.getDateStr());
recordHikQuery.setAttendanceDateStart(commonData.getDateStr());
recordHikQuery.setAttendanceDateEnd(commonData.getDateStr());
recordHikQuery.setAttendanceDateEnd(commonData.getDateStr());
recordHikQuery.setStaffId(commonData.getStaffId());
recordHikQuery.setStaffId(commonData.getStaffId());
recordHikQuery.setOrderColList(Arrays.asList(new OrderCol("attendanceDate")));
recordHikQuery.setOrderColList(Arrays.asList(new OrderCol("attendanceDate")));
List
<
AttendanceRecordHikEntity
>
recordHikEntities
=
recordHikService
.
find
(
recordHikQuery
);
List<AttendanceRecordHikEntity> recordHikEntities = recordHikService.find(recordHikQuery);*/
List
<
AttendanceRecordHikEntity
>
recordHikEntities
=
commonData
.
getRecordHikEntities
();
List
<
AttendanceClassDetailEntity
>
attendanceClassDetailEntities
=
attendanceClassEntity
.
getAttendanceClassDetailList
();
List
<
AttendanceClassDetailEntity
>
attendanceClassDetailEntities
=
attendanceClassEntity
.
getAttendanceClassDetailList
();
Integer
orderNum
=
0
;
Integer
orderNum
=
0
;
...
@@ -256,13 +260,13 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -256,13 +260,13 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
for
(
AttendanceClassDetailEntity
classDetail
:
attendanceClassDetailEntities
)
{
for
(
AttendanceClassDetailEntity
classDetail
:
attendanceClassDetailEntities
)
{
//计算区间范围
//计算区间范围
//上班打卡前时间
//上班打卡前时间
Date
goWorkDateBefore
=
DateUtil
.
offsetMinute
(
classDetail
.
getGoWorkDate
(),
-
classDetail
.
getGoWorkDateBefore
()
-
1
);
Date
goWorkDateBefore
=
DateUtil
.
offsetMinute
(
classDetail
.
getGoWorkDate
(),
-
classDetail
.
getGoWorkDateBefore
()
-
1
);
//上班打卡后时间
//上班打卡后时间
Date
goWorkDateAfter
=
DateUtil
.
offsetMinute
(
classDetail
.
getGoWorkDate
(),
classDetail
.
getGoWorkDateAfter
()
+
1
);
Date
goWorkDateAfter
=
DateUtil
.
offsetMinute
(
classDetail
.
getGoWorkDate
(),
classDetail
.
getGoWorkDateAfter
()
+
1
);
// 下班打卡前时间
// 下班打卡前时间
Date
offWorkDateBefore
=
DateUtil
.
offsetMinute
(
classDetail
.
getOffWorkDate
(),
-
classDetail
.
getOffWorkDateBefore
()
-
1
);
Date
offWorkDateBefore
=
DateUtil
.
offsetMinute
(
classDetail
.
getOffWorkDate
(),
-
classDetail
.
getOffWorkDateBefore
()
-
1
);
//下班打卡后时间,默认偏移多一分钟
//下班打卡后时间,默认偏移多一分钟
Date
offWorkDateAfter
=
DateUtil
.
offsetMinute
(
classDetail
.
getOffWorkDate
(),
classDetail
.
getOffWorkDateAfter
()
+
1
);
Date
offWorkDateAfter
=
DateUtil
.
offsetMinute
(
classDetail
.
getOffWorkDate
(),
classDetail
.
getOffWorkDateAfter
()
+
1
);
//判断考勤时间是否在上班打卡区间内 true 在 false 不在 格式化时间
//判断考勤时间是否在上班打卡区间内 true 在 false 不在 格式化时间
//String currDate = DateUtil.formatTime(attendanceDate);
//String currDate = DateUtil.formatTime(attendanceDate);
Date
curDateTime
=
DateUtil
.
parseTime
(
DateUtil
.
formatTime
(
attendanceDate
));
Date
curDateTime
=
DateUtil
.
parseTime
(
DateUtil
.
formatTime
(
attendanceDate
));
...
@@ -334,7 +338,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -334,7 +338,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
}
}
AttendanceClassDetailEntity
attendanceClassDetailEntity
=
attendanceClassDetailService
.
get
(
commonData
.
getDetailEntityList
().
get
(
0
).
getShiftsId
());
// AttendanceClassDetailEntity attendanceClassDetailEntity = attendanceClassDetailService.get(commonData.getDetailEntityList().get(0).getShiftsId());
AttendanceClassDetailEntity
attendanceClassDetailEntity
=
classDetailEntityMap
.
get
(
commonData
.
getDetailEntityList
().
get
(
0
).
getShiftsId
());
commonData
.
getAttendanceRecordEntity
().
setClassId
(
attendanceClassDetailEntity
==
null
?
0L
:
attendanceClassDetailEntity
.
getClassId
());
commonData
.
getAttendanceRecordEntity
().
setClassId
(
attendanceClassDetailEntity
==
null
?
0L
:
attendanceClassDetailEntity
.
getClassId
());
commonData
.
getAttendanceRecordEntity
().
setClassName
(
attendanceClassDetailEntity
==
null
?
""
:
attendanceClassDetailEntity
.
getClassName
());
commonData
.
getAttendanceRecordEntity
().
setClassName
(
attendanceClassDetailEntity
==
null
?
""
:
attendanceClassDetailEntity
.
getClassName
());
}
}
...
@@ -343,28 +348,26 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -343,28 +348,26 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
if
(
isLeave
)
{
if
(
isLeave
)
{
//查看请假时间段,是否为跨天记录
//查看请假时间段,是否为跨天记录
for
(
AttendanceLeaveRecordEntity
leaveRecord
:
leaveRecords
)
{
for
(
AttendanceLeaveRecordEntity
leaveRecord
:
leaveRecords
)
{
// AttendanceLeaveRecordEntity leaveRecord = leaveRecords.get(0);
// AttendanceLeaveRecordEntity leaveRecord = leaveRecords.get(0);
long
between
=
DateUtil
.
between
(
leaveRecord
.
getStartTime
(),
leaveRecord
.
getEndTime
(),
DateUnit
.
DAY
);
long
between
=
DateUtil
.
between
(
leaveRecord
.
getStartTime
(),
leaveRecord
.
getEndTime
(),
DateUnit
.
DAY
);
if
(
between
>
0
)
{
if
(
between
>
0
)
{
//跨天 判断当前日期是否在全天,没在 就
//跨天 判断当前日期是否在全天,没在 就
//判断日期是否在最后一天 不是的话 为全天
//判断日期是否在最后一天 不是的话 为全天
long
betweened
=
DateUtil
.
between
(
DateUtil
.
parseDate
(
commonData
.
getDateStr
()),
leaveRecord
.
getEndTime
(),
DateUnit
.
DAY
);
long
betweened
=
DateUtil
.
between
(
DateUtil
.
parseDate
(
commonData
.
getDateStr
()),
leaveRecord
.
getEndTime
(),
DateUnit
.
DAY
);
if
(
betweened
>
0
)
{
if
(
betweened
>
0
)
{
//全天
//全天
calLeaveDate
(
commonData
,
DateUtil
.
parseDateTime
(
commonData
.
getDateStr
()+
" 00:00:00"
),
DateUtil
.
parseDateTime
(
commonData
.
getDateStr
()+
" 23:59:59"
));
calLeaveDate
(
commonData
,
DateUtil
.
parseDateTime
(
commonData
.
getDateStr
()
+
" 00:00:00"
),
DateUtil
.
parseDateTime
(
commonData
.
getDateStr
()
+
" 23:59:59"
));
}
else
if
(
betweened
==
0
)
{
}
else
if
(
betweened
==
0
)
{
//最后一天
//最后一天
calLeaveDate
(
commonData
,
DateUtil
.
parseDateTime
(
commonData
.
getDateStr
()+
" 00:00:00"
),
leaveRecord
.
getEndTime
());
calLeaveDate
(
commonData
,
DateUtil
.
parseDateTime
(
commonData
.
getDateStr
()
+
" 00:00:00"
),
leaveRecord
.
getEndTime
());
}
}
}
else
if
(
between
==
0
)
{
calLeaveDate
(
commonData
,
leaveRecord
.
getStartTime
(),
leaveRecord
.
getEndTime
());
}
else
{
//错误
}
}
else
if
(
between
==
0
)
{
calLeaveDate
(
commonData
,
leaveRecord
.
getStartTime
(),
leaveRecord
.
getEndTime
());
}
else
{
//错误
}
}
}
}
}
//生成异常记录
//生成异常记录
...
@@ -373,12 +376,13 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -373,12 +376,13 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
/**
/**
* 计算异常
* 计算异常
*
* @param commonData
* @param commonData
* @param startLeaveTime
* @param startLeaveTime
* @param endLeaveTime
* @param endLeaveTime
*/
*/
private
void
calLeaveDate
(
CommonData
commonData
,
Date
startLeaveTime
,
Date
endLeaveTime
)
{
private
void
calLeaveDate
(
CommonData
commonData
,
Date
startLeaveTime
,
Date
endLeaveTime
)
{
//当日 请假开始时间
//当日 请假开始时间
/* Date startLeaveTime = leaveRecord.getStartTime();
/* Date startLeaveTime = leaveRecord.getStartTime();
Date endLeaveTime = leaveRecord.getEndTime();*/
Date endLeaveTime = leaveRecord.getEndTime();*/
...
@@ -394,9 +398,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -394,9 +398,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
if
(
GoWorkResultEnum
.
请假
.
getValue
()
<
goWorkResult
)
{
if
(
GoWorkResultEnum
.
请假
.
getValue
()
<
goWorkResult
)
{
//判断 异常记录是否在请假时间段内
//判断 异常记录是否在请假时间段内
// DateUtil.between()
// DateUtil.between()
if
(
ObjectUtils
.
isEmpty
(
goWorkDate
))
{
if
(
ObjectUtils
.
isEmpty
(
goWorkDate
))
{
detail
.
setGoWorkResult
(
GoWorkResultEnum
.
请假
.
getValue
());
detail
.
setGoWorkResult
(
GoWorkResultEnum
.
请假
.
getValue
());
}
else
{
}
else
{
boolean
in
=
DateUtil
.
isIn
(
goWorkDate
,
startLeaveTime
,
endLeaveTime
);
boolean
in
=
DateUtil
.
isIn
(
goWorkDate
,
startLeaveTime
,
endLeaveTime
);
if
(
in
)
{
if
(
in
)
{
detail
.
setGoWorkResult
(
GoWorkResultEnum
.
请假
.
getValue
());
detail
.
setGoWorkResult
(
GoWorkResultEnum
.
请假
.
getValue
());
...
@@ -407,9 +411,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -407,9 +411,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
if
(
GoWorkResultEnum
.
请假
.
getValue
()
<
offWorkResult
)
{
if
(
GoWorkResultEnum
.
请假
.
getValue
()
<
offWorkResult
)
{
//判断 异常记录是否在请假时间段内
//判断 异常记录是否在请假时间段内
// DateUtil.between()
// DateUtil.between()
if
(
ObjectUtils
.
isEmpty
(
offWorkDate
))
{
if
(
ObjectUtils
.
isEmpty
(
offWorkDate
))
{
detail
.
setOffWorkResult
(
GoWorkResultEnum
.
请假
.
getValue
());
detail
.
setOffWorkResult
(
GoWorkResultEnum
.
请假
.
getValue
());
}
else
{
}
else
{
boolean
in
=
DateUtil
.
isIn
(
offWorkDate
,
startLeaveTime
,
endLeaveTime
);
boolean
in
=
DateUtil
.
isIn
(
offWorkDate
,
startLeaveTime
,
endLeaveTime
);
if
(
in
)
{
if
(
in
)
{
detail
.
setOffWorkResult
(
GoWorkResultEnum
.
请假
.
getValue
());
detail
.
setOffWorkResult
(
GoWorkResultEnum
.
请假
.
getValue
());
...
@@ -436,13 +440,14 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -436,13 +440,14 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
public
void
genErrorAttendRecord
(
Context
context
,
String
dateStr
,
AttendanceRecordEntity
attendanceRecordEntity
,
List
<
AttendanceRecordDetailEntity
>
detailEntityList
)
{
public
void
genErrorAttendRecord
(
Context
context
,
String
dateStr
,
AttendanceRecordEntity
attendanceRecordEntity
,
List
<
AttendanceRecordDetailEntity
>
detailEntityList
)
{
//处理异常打卡,所以异常打卡的 都新增一条记录
//处理异常打卡,所以异常打卡的 都新增一条记录
List
<
AttendanceRecordErrorEntity
>
errorEntityList
=
new
ArrayList
<>();
List
<
AttendanceRecordErrorEntity
>
errorEntityList
=
new
ArrayList
<>();
List
<
AttendanceRecordErrorEntity
>
errorSwitchNormalList
=
new
ArrayList
<>(
);
// Map<Long, AttendanceClassDetailEntity> classDetailEntityMap = attendanceClassDetailService.find(new AttendanceClassDetailQuery()).stream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n)
);
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
detailEntityList
)
{
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
detailEntityList
)
{
Integer
goWorkResult
=
recordDetailEntity
.
getGoWorkResult
();
Integer
goWorkResult
=
recordDetailEntity
.
getGoWorkResult
();
Integer
offWorkResult
=
recordDetailEntity
.
getOffWorkResult
();
Integer
offWorkResult
=
recordDetailEntity
.
getOffWorkResult
();
//判断是否是离职员工 如果是 则不添加
//判断是否是离职员工 如果是 则不添加
//判断上班
//判断上班
AttendanceClassDetailEntity
attendanceClassDetailEntity
=
attendanceClassDetailService
.
get
(
recordDetailEntity
.
getShiftsId
());
// AttendanceClassDetailEntity attendanceClassDetailEntity = attendanceClassDetailService.get(recordDetailEntity.getShiftsId());
AttendanceClassDetailEntity
attendanceClassDetailEntity
=
classDetailEntityMap
.
get
(
recordDetailEntity
.
getShiftsId
());
if
(
ObjectUtils
.
isEmpty
(
attendanceClassDetailEntity
))
continue
;
if
(
ObjectUtils
.
isEmpty
(
attendanceClassDetailEntity
))
continue
;
//判断上班
//判断上班
if
(
GoWorkResultEnum
.
请假
.
getValue
()
<
goWorkResult
)
{
if
(
GoWorkResultEnum
.
请假
.
getValue
()
<
goWorkResult
)
{
...
@@ -514,12 +519,11 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -514,12 +519,11 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
if
(!
ObjectUtils
.
isEmpty
(
errorEntityList
))
{
if
(!
ObjectUtils
.
isEmpty
(
errorEntityList
))
{
//过滤异常列表中存在相同的记录
//过滤异常列表中存在相同的记录
errorEntityList
=
errorEntityList
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
errorEntityList
=
errorEntityList
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
for
(
AttendanceRecordErrorEntity
errorEntity
:
errorEntityList
)
{
for
(
AttendanceRecordErrorEntity
errorEntity
:
errorEntityList
)
{
//查看是否存在相同的异常记录,如果存在 则不添加
//查看是否存在相同的异常记录,如果存在 则不添加
errorQuery
=
new
AttendanceRecordErrorQuery
();
errorQuery
=
new
AttendanceRecordErrorQuery
();
errorQuery
.
setShiftsId
(
errorEntity
.
getShiftsId
());
errorQuery
.
setGoOffDateTime
(
errorEntity
.
getErrorDateTime
());
errorQuery
.
setGoOffDateTime
(
errorEntity
.
getErrorDateTime
());
errorQuery
.
setStaffId
(
errorEntity
.
getStaffId
());
errorQuery
.
setStaffId
(
errorEntity
.
getStaffId
());
errorQuery
.
setShiftsId
(
errorEntity
.
getShiftsId
());
errorQuery
.
setShiftsId
(
errorEntity
.
getShiftsId
());
...
@@ -594,7 +598,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
...
@@ -594,7 +598,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
System.out.println(in);*/
System.out.println(in);*/
System
.
out
.
println
(
GoWorkResultEnum
.
getEnumMap
().
keySet
());
System
.
out
.
println
(
GoWorkResultEnum
.
getEnumMap
().
keySet
());
}
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java
View file @
77fdd2e0
...
@@ -161,7 +161,6 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
...
@@ -161,7 +161,6 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
}
}
AddAttendThread
addAttendThread
=
new
AddAttendThread
(
hikService
,
hikEntity
,
getContext
());
AddAttendThread
addAttendThread
=
new
AddAttendThread
(
hikService
,
hikEntity
,
getContext
());
ThreadPool
.
getInstance
().
execute
(
addAttendThread
);
ThreadPool
.
getInstance
().
execute
(
addAttendThread
);
//hikService.addAttendanceRecordByQuery(hikEntity, getContext());
model
.
put
(
"message_info"
,
busiDesc
+
"成功"
);
model
.
put
(
"message_info"
,
busiDesc
+
"成功"
);
this
.
recordSysLog
(
this
.
request
,
busiDesc
+
" 【成功】"
);
this
.
recordSysLog
(
this
.
request
,
busiDesc
+
" 【成功】"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
...
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