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
2afbf419
Commit
2afbf419
authored
Apr 19, 2023
by
wenqy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
原始数据生成规则数据修改,异常数据处理
parent
9168439b
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
586 additions
and
432 deletions
+586
-432
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceRecordErrorEntity.java
.../module/attendance/model/AttendanceRecordErrorEntity.java
+5
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordErrorVo.java
...x/module/attendance/model/vo/AttendanceRecordErrorVo.java
+9
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java
...module/attendance/service/AttendanceRecordHikService.java
+9
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
...tendance/service/impl/AttendanceRecordHikServiceImpl.java
+467
-6
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordServiceImpl.java
.../attendance/service/impl/AttendanceRecordServiceImpl.java
+6
-6
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordErrorController.java
...odule/attendance/web/AttendanceRecordErrorController.java
+44
-6
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java
.../module/attendance/web/AttendanceRecordHikController.java
+27
-410
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceStatController.java
...s/xhx/module/attendance/web/AttendanceStatController.java
+19
-1
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceRecordErrorEntity.java
View file @
2afbf419
...
...
@@ -3,6 +3,8 @@ package com.mortals.xhx.module.attendance.model;
import
java.util.Date
;
import
java.util.List
;
import
java.util.ArrayList
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.mortals.framework.annotation.Excel
;
import
com.mortals.framework.model.BaseEntityLong
;
...
...
@@ -64,6 +66,8 @@ public class AttendanceRecordErrorEntity extends AttendanceRecordErrorVo {
/**
* 上下班时间
*/
@JsonFormat
(
pattern
=
"HH:mm"
)
@JSONField
(
format
=
"HH:mm"
)
private
Date
goOffDateTime
;
/**
* 异常时间
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordErrorVo.java
View file @
2afbf419
package
com.mortals.xhx.module.attendance.model.vo
;
import
com.mortals.framework.model.BaseEntityLong
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordErrorEntity
;
import
lombok.Data
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
...
...
@@ -9,6 +11,12 @@ import java.util.List;
* @author zxfei
* @date 2023-04-08
*/
@Data
public
class
AttendanceRecordErrorVo
extends
BaseEntityLong
{
/**
* 上班or下班
*/
private
String
goOrOff
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java
View file @
2afbf419
package
com.mortals.xhx.module.attendance.service
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity
;
/**
* AttendanceRecordHikService
*
...
...
@@ -11,4 +13,10 @@ import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
*/
public
interface
AttendanceRecordHikService
extends
ICRUDService
<
AttendanceRecordHikEntity
,
Long
>{
/**
* 将原始数据导入打卡记录表
* @param entity
*/
public
void
addAttendanceRecord
(
AttendanceRecordHikEntity
entity
,
Context
context
)
throws
Exception
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
View file @
2afbf419
package
com.mortals.xhx.module.attendance.service.impl
;
import
com.mortals.framework.service.IUser
;
import
com.mortals.framework.util.StringUtils
;
import
com.mortals.xhx.base.system.upload.service.UploadService
;
import
com.mortals.xhx.module.attendance.model.*
;
import
com.mortals.xhx.module.attendance.service.*
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.model.StaffQuery
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.xhx.module.attendance.dao.AttendanceRecordHikDao
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity
;
import
com.mortals.xhx.module.attendance.service.AttendanceRecordHikService
;
import
com.mortals.framework.model.Context
;
import
java.text.SimpleDateFormat
;
import
java.time.ZoneId
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* AttendanceRecordHikService
* 海康考勤打卡记录汇总信息 service实现
...
...
@@ -16,4 +32,449 @@ import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService;
@Service
(
"attendanceRecordHikService"
)
public
class
AttendanceRecordHikServiceImpl
extends
AbstractCRUDServiceImpl
<
AttendanceRecordHikDao
,
AttendanceRecordHikEntity
,
Long
>
implements
AttendanceRecordHikService
{
@Autowired
private
DeptService
deptService
;
@Autowired
private
AttendanceRecordService
attendanceRecordService
;
@Autowired
private
AttendanceRecordHikService
attendanceRecordHikService
;
@Autowired
private
AttendanceGroupStaffService
attendanceGroupStaffService
;
@Autowired
private
AttendanceGroupService
attendanceGroupService
;
@Autowired
private
AttendanceGroupFixedworkService
attendanceGroupFixedworkService
;
@Autowired
private
AttendanceClassService
attendanceClassService
;
@Autowired
private
AttendanceClassDetailService
attendanceClassDetailService
;
@Autowired
private
StaffService
staffService
;
@Autowired
private
UploadService
uploadService
;
@Autowired
private
AttendanceExportRecordService
attendanceExportRecordService
;
@Autowired
private
AttendanceRecordErrorService
errorService
;
@Override
public
void
addAttendanceRecord
(
AttendanceRecordHikEntity
entity
,
Context
context
)
throws
Exception
{
List
<
AttendanceRecordHikEntity
>
list
=
entity
.
getList
();
//对考勤数据根据考勤时间进行排序
List
<
AttendanceRecordHikEntity
>
collect
=
list
.
stream
().
sorted
(
Comparator
.
comparing
(
AttendanceRecordHikEntity:
:
getAttendanceDate
)).
collect
(
Collectors
.
toList
());
//根据工号对考勤数据进行分组
Map
<
String
,
List
<
AttendanceRecordHikEntity
>>
listMap
=
collect
.
stream
().
collect
(
Collectors
.
groupingBy
(
AttendanceRecordHikEntity:
:
getWorkNum
));
//map遍历.先把所有键取出来
Set
<
String
>
workNumSet
=
listMap
.
keySet
();
//根据键取出value
for
(
String
workNum
:
workNumSet
)
{
List
<
AttendanceRecordHikEntity
>
attendanceRecordHikEntities1
=
listMap
.
get
(
workNum
);
//对按照工号分组了的数据attendanceRecordHikEntities进行时间分组
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd"
);
Map
<
String
,
List
<
AttendanceRecordHikEntity
>>
map
=
attendanceRecordHikEntities1
.
stream
().
collect
(
Collectors
.
groupingBy
(
hikEntity
->
hikEntity
.
getAttendanceDate
().
toInstant
().
atZone
(
ZoneId
.
systemDefault
()).
toLocalDate
().
format
(
formatter
)));
Set
<
String
>
dateSet
=
map
.
keySet
();
for
(
String
s
:
dateSet
)
{
List
<
AttendanceRecordHikEntity
>
attendanceRecordHikEntities
=
map
.
get
(
s
);
//对相同工号的人员进行遍历判断考勤规则.
AttendanceRecordEntity
attendanceRecordEntity
=
new
AttendanceRecordEntity
();
List
<
AttendanceRecordDetailEntity
>
detailEntity
=
new
ArrayList
<>();
for
(
AttendanceRecordHikEntity
item:
attendanceRecordHikEntities
)
{
//对主表的对象进行赋值
if
(
StringUtils
.
isNull
(
attendanceRecordEntity
)||
StringUtils
.
isEmpty
(
attendanceRecordEntity
.
getStaffName
())){
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
attendanceRecordEntity
.
setStaffId
(
item
.
getStaffId
());
attendanceRecordEntity
.
setStaffName
(
item
.
getStaffName
());
attendanceRecordEntity
.
setDeptId
(
item
.
getDeptId
());
attendanceRecordEntity
.
setDeptName
(
item
.
getDeptName
());
attendanceRecordEntity
.
setPositionId
(
item
.
getPositionId
());
attendanceRecordEntity
.
setPositionName
(
item
.
getPositionName
());
attendanceRecordEntity
.
setWorkNum
(
item
.
getWorkNum
());
IUser
user
=
context
.
getUser
();
attendanceRecordEntity
.
setCreateTime
(
new
Date
());
attendanceRecordEntity
.
setCreateUserId
(
user
.
getId
());
attendanceRecordEntity
.
setAttendanceDate
(
sdf
.
parse
(
sdf
.
format
(
item
.
getAttendanceDate
())));
}
//获取考勤打卡时间
Date
attendanceDate
=
item
.
getAttendanceDate
();
//通过工号查询员工信息
StaffQuery
staffQuery
=
new
StaffQuery
();
StaffEntity
staffEntity
=
staffService
.
selectOne
(
staffQuery
.
workNum
(
item
.
getWorkNum
()));
//通过员工id查询考勤人员信息
AttendanceGroupStaffQuery
attendanceGroupStaffQuery
=
new
AttendanceGroupStaffQuery
();
List
<
AttendanceGroupStaffEntity
>
attendanceGroupStaffEntities
=
attendanceGroupStaffService
.
find
(
attendanceGroupStaffQuery
.
staffId
(
staffEntity
.
getId
()));
//查询该考勤人员,如果查出来的考勤人员信息list长度为1 则该考勤人员只有一个考勤组
if
(
StringUtils
.
isNotNull
(
attendanceGroupStaffEntities
)
&&
attendanceGroupStaffEntities
.
size
()==
1
){
//查询考勤组
AttendanceGroupQuery
attendanceGroupQuery
=
new
AttendanceGroupQuery
();
AttendanceGroupEntity
attendanceGroupEntity
=
attendanceGroupService
.
selectOne
(
attendanceGroupQuery
.
id
(
attendanceGroupStaffEntities
.
get
(
0
).
getGroupId
()));
//查询考勤组详细信息获取班次
AttendanceGroupFixedworkQuery
attendanceGroupFixedworkQuery
=
new
AttendanceGroupFixedworkQuery
();
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
=
attendanceGroupFixedworkService
.
selectOne
(
attendanceGroupFixedworkQuery
.
groupId
(
attendanceGroupEntity
.
getId
()));
//判断当前考勤日期为周几
Date
attendanceDate1
=
attendanceDate
;
String
week
=
this
.
getWeek
(
attendanceDate1
);
//通过考勤日期的星期拿到班次id.
Long
weekClassId
=
this
.
getWeekClassId
(
attendanceGroupFixedworkEntity
,
week
);
//weekClassId为-1 则不在考勤
if
(
weekClassId
==-
1L
){
//跳过本次循环
continue
;
}
//获取班次信息
AttendanceClassQuery
attendanceClassQuery
=
new
AttendanceClassQuery
();
AttendanceClassEntity
attendanceClassEntity
=
attendanceClassService
.
selectOne
(
attendanceClassQuery
.
id
(
weekClassId
));
//获取班次详细信息
AttendanceClassDetailQuery
attendanceClassDetailQuery
=
new
AttendanceClassDetailQuery
();
List
<
AttendanceClassDetailEntity
>
attendanceClassDetailEntities
=
attendanceClassDetailService
.
find
(
attendanceClassDetailQuery
.
classId
(
attendanceClassEntity
.
getId
()));
Integer
orderNum
=
0
;
if
(
detailEntity
==
null
||
detailEntity
.
size
()==
0
){
for
(
AttendanceClassDetailEntity
classDetailEntity
:
attendanceClassDetailEntities
)
{
orderNum
++;
AttendanceRecordDetailEntity
recordDetailEntity
=
new
AttendanceRecordDetailEntity
();
recordDetailEntity
.
setShiftsId
(
classDetailEntity
.
getId
());
recordDetailEntity
.
setShiftsName
(
classDetailEntity
.
getClassName
());
recordDetailEntity
.
setGoWorkResult
(
3
);
recordDetailEntity
.
setOffWorkResult
(
3
);
recordDetailEntity
.
setOrderNum
(
orderNum
);
detailEntity
.
add
(
recordDetailEntity
);
}
}
for
(
AttendanceClassDetailEntity
classDetail
:
attendanceClassDetailEntities
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH:mm"
);
//上班打卡前时间
Date
goWorkDateBefore
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getGoWorkDate
(),
-
classDetail
.
getGoWorkDateBefore
())));
//上班打卡后时间
Date
goWorkDateAfter
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getGoWorkDate
(),
classDetail
.
getGoWorkDateAfter
())));
//下班打卡前时间
Date
offWorkDateBefore
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getOffWorkDate
(),
-
classDetail
.
getOffWorkDateBefore
())));
//下班打卡后时间
Date
offWorkDateAfter
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getOffWorkDate
(),
classDetail
.
getOffWorkDateAfter
())));
//判断考勤时间是否在上班打卡区间内 true 在 false 不在
boolean
goInTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
goWorkDateBefore
,
goWorkDateAfter
);
//判断考勤时间是否在下班打卡区间内
boolean
offInTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
offWorkDateBefore
,
offWorkDateAfter
);
if
(
goInTime
==
false
&&
offInTime
==
false
){
continue
;
}
if
(
goInTime
)
{
//如果是上班打卡,判断是否迟到
boolean
inTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
goWorkDateBefore
,
sdf
.
parse
(
sdf
.
format
(
classDetail
.
getGoWorkDate
())));
if
(!
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
longValue
()
==
classDetail
.
getId
().
longValue
()){
attendanceRecordDetailEntity
.
setGoWorkResult
(
4
);
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
if
(
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
longValue
()
==
classDetail
.
getId
().
longValue
()){
attendanceRecordDetailEntity
.
setGoWorkResult
(
1
);
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
}
if
(
offInTime
){
boolean
inTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
sdf
.
parse
(
sdf
.
format
(
classDetail
.
getOffWorkDate
())),
offWorkDateAfter
);
if
(!
inTime
){
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
longValue
()
==
classDetail
.
getId
().
longValue
()){
attendanceRecordDetailEntity
.
setOffWorkResult
(
5
);
attendanceRecordDetailEntity
.
setOffWorkDate
(
attendanceDate
);
}
}
}
if
(
inTime
){
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
longValue
()==
classDetail
.
getId
().
longValue
()){
attendanceRecordDetailEntity
.
setOffWorkResult
(
1
);
attendanceRecordDetailEntity
.
setOffWorkDate
(
attendanceDate
);
}
}
}
}
}
}
//如果考勤人员信息list长度大于1 则该考勤人员有多个考勤组.
if
(
StringUtils
.
isNotNull
(
attendanceGroupStaffEntities
)
&&
attendanceGroupStaffEntities
.
size
()>
1
){
for
(
AttendanceGroupStaffEntity
groupStaffEntity:
attendanceGroupStaffEntities
){
{
//查询考勤组
AttendanceGroupQuery
attendanceGroupQuery
=
new
AttendanceGroupQuery
();
AttendanceGroupEntity
attendanceGroupEntity
=
attendanceGroupService
.
selectOne
(
attendanceGroupQuery
.
id
(
groupStaffEntity
.
getGroupId
()));
//查询考勤组详细信息获取班次
AttendanceGroupFixedworkQuery
attendanceGroupFixedworkQuery
=
new
AttendanceGroupFixedworkQuery
();
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
=
attendanceGroupFixedworkService
.
selectOne
(
attendanceGroupFixedworkQuery
.
groupId
(
attendanceGroupEntity
.
getId
()));
//判断当前考勤日期为周几
Date
attendanceDate1
=
attendanceDate
;
String
week
=
this
.
getWeek
(
attendanceDate1
);
//通过考勤日期的星期拿到班次id.
Long
weekClassId
=
this
.
getWeekClassId
(
attendanceGroupFixedworkEntity
,
week
);
//weekClassId为-1 则不在考勤
if
(
weekClassId
==-
1L
){
//跳过本次循环
continue
;
}
//获取班次信息
AttendanceClassQuery
attendanceClassQuery
=
new
AttendanceClassQuery
();
AttendanceClassEntity
attendanceClassEntity
=
attendanceClassService
.
selectOne
(
attendanceClassQuery
.
id
(
weekClassId
));
//获取班次详细信息
AttendanceClassDetailQuery
attendanceClassDetailQuery
=
new
AttendanceClassDetailQuery
();
List
<
AttendanceClassDetailEntity
>
attendanceClassDetailEntities
=
attendanceClassDetailService
.
find
(
attendanceClassDetailQuery
.
classId
(
attendanceClassEntity
.
getId
()));
Integer
orderNum
=
0
;
if
(
detailEntity
!=
null
&&
detailEntity
.
size
()>
0
){
for
(
AttendanceClassDetailEntity
classDetailEntity
:
attendanceClassDetailEntities
)
{
orderNum
++;
AttendanceRecordDetailEntity
recordDetailEntity
=
new
AttendanceRecordDetailEntity
();
recordDetailEntity
.
setShiftsId
(
classDetailEntity
.
getId
());
recordDetailEntity
.
setShiftsName
(
classDetailEntity
.
getClassName
());
recordDetailEntity
.
setGoWorkResult
(
3
);
recordDetailEntity
.
setOffWorkResult
(
3
);
recordDetailEntity
.
setOrderNum
(
orderNum
);
detailEntity
.
add
(
recordDetailEntity
);
}
}
for
(
AttendanceClassDetailEntity
classDetail
:
attendanceClassDetailEntities
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH:mm"
);
//上班打卡前时间
Date
goWorkDateBefore
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getGoWorkDate
(),
-
classDetail
.
getGoWorkDateBefore
())));
//上班打卡后时间
Date
goWorkDateAfter
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getGoWorkDate
(),
classDetail
.
getGoWorkDateAfter
())));
//下班打卡前时间
Date
offWorkDateBefore
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getOffWorkDate
(),
-
classDetail
.
getOffWorkDateBefore
())));
//下班打卡后时间
Date
offWorkDateAfter
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getOffWorkDate
(),
classDetail
.
getOffWorkDateAfter
())));
//判断考勤时间是否在上班打卡区间内 true 在 false 不在
boolean
goInTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
goWorkDateBefore
,
goWorkDateAfter
);
//判断考勤时间是否在下班打卡区间内
boolean
offInTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
offWorkDateBefore
,
offWorkDateAfter
);
if
(
goInTime
==
false
&&
offInTime
==
false
){
continue
;
}
if
(
goInTime
)
{
//如果是上班打卡,判断是否迟到
boolean
inTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
goWorkDateBefore
,
sdf
.
parse
(
sdf
.
format
(
classDetail
.
getGoWorkDate
())));
if
(!
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getId
())){
attendanceRecordDetailEntity
.
setGoWorkResult
(
4
);
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
if
(
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getId
())){
attendanceRecordDetailEntity
.
setGoWorkResult
(
1
);
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
}
if
(
offInTime
){
boolean
inTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
sdf
.
parse
(
sdf
.
format
(
classDetail
.
getOffWorkDate
())),
offWorkDateAfter
);
if
(!
inTime
){
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getId
())){
attendanceRecordDetailEntity
.
setOffWorkResult
(
5
);
attendanceRecordDetailEntity
.
setOffWorkDate
(
attendanceDate
);
}
}
}
if
(
inTime
){
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getId
())){
attendanceRecordDetailEntity
.
setOffWorkResult
(
1
);
attendanceRecordDetailEntity
.
setOffWorkDate
(
attendanceDate
);
}
}
}
}
}
}
}
}
}
List
<
AttendanceRecordErrorEntity
>
errorEntityList
=
new
ArrayList
<>();
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
detailEntity
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
SimpleDateFormat
sdft
=
new
SimpleDateFormat
(
"HH:mm:ss"
);
Integer
goWorkResult
=
recordDetailEntity
.
getGoWorkResult
();
Integer
offWorkResult
=
recordDetailEntity
.
getOffWorkResult
();
if
(
goWorkResult
!=
1
){
AttendanceRecordErrorEntity
errorEntity
=
new
AttendanceRecordErrorEntity
();
errorEntity
.
setStaffId
(
attendanceRecordEntity
.
getStaffId
());
errorEntity
.
setStaffName
(
attendanceRecordEntity
.
getStaffName
());
errorEntity
.
setWorkNum
(
attendanceRecordEntity
.
getWorkNum
());
errorEntity
.
setDeptId
(
attendanceRecordEntity
.
getDeptId
());
errorEntity
.
setDeptName
(
attendanceRecordEntity
.
getDeptName
());
errorEntity
.
setPositionId
(
attendanceRecordEntity
.
getPositionId
());
errorEntity
.
setPositionName
(
attendanceRecordEntity
.
getPositionName
());
errorEntity
.
setShiftsId
(
recordDetailEntity
.
getShiftsId
());
errorEntity
.
setShiftsName
(
recordDetailEntity
.
getShiftsName
());
Date
goWorkDate
=
attendanceClassDetailService
.
selectOne
(
new
AttendanceClassDetailQuery
().
id
(
recordDetailEntity
.
getShiftsId
())).
getGoWorkDate
();
errorEntity
.
setGoOffDateTime
(
goWorkDate
);
if
(
recordDetailEntity
.
getGoWorkDate
()!=
null
&&!
recordDetailEntity
.
getGoWorkDate
().
equals
(
""
)){
errorEntity
.
setErrorDateTime
(
recordDetailEntity
.
getGoWorkDate
());
errorEntity
.
setActualAttendanceDateTime
(
recordDetailEntity
.
getGoWorkDate
());
}
else
{
String
s1
=
s
+
" "
+
sdft
.
format
(
goWorkDate
);
errorEntity
.
setErrorDateTime
(
sdf
.
parse
(
s1
));
errorEntity
.
setActualAttendanceDateTime
(
sdf
.
parse
(
s1
));
}
if
(
recordDetailEntity
.
getGoWorkResult
()==
3
){
errorEntity
.
setErrorStatus
(
0
);
}
if
(
recordDetailEntity
.
getGoWorkResult
()==
4
){
errorEntity
.
setErrorStatus
(
2
);
}
errorEntity
.
setProcessStatus
(
0
);
IUser
user
=
context
.
getUser
();
errorEntity
.
setCreateTime
(
new
Date
());
errorEntity
.
setCreateUserId
(
user
.
getId
());
errorEntityList
.
add
(
errorEntity
);
}
if
(
offWorkResult
!=
1
){
AttendanceRecordErrorEntity
errorEntity
=
new
AttendanceRecordErrorEntity
();
errorEntity
.
setStaffId
(
attendanceRecordEntity
.
getStaffId
());
errorEntity
.
setStaffName
(
attendanceRecordEntity
.
getStaffName
());
errorEntity
.
setWorkNum
(
attendanceRecordEntity
.
getWorkNum
());
errorEntity
.
setDeptId
(
attendanceRecordEntity
.
getDeptId
());
errorEntity
.
setDeptName
(
attendanceRecordEntity
.
getDeptName
());
errorEntity
.
setPositionId
(
attendanceRecordEntity
.
getPositionId
());
errorEntity
.
setPositionName
(
attendanceRecordEntity
.
getPositionName
());
errorEntity
.
setShiftsId
(
recordDetailEntity
.
getShiftsId
());
errorEntity
.
setShiftsName
(
recordDetailEntity
.
getShiftsName
());
Date
offWorkDate
=
attendanceClassDetailService
.
selectOne
(
new
AttendanceClassDetailQuery
().
id
(
recordDetailEntity
.
getShiftsId
())).
getOffWorkDate
();
errorEntity
.
setGoOffDateTime
(
offWorkDate
);
if
(
recordDetailEntity
.
getOffWorkDate
()!=
null
&&!
recordDetailEntity
.
getOffWorkDate
().
equals
(
""
)){
errorEntity
.
setErrorDateTime
(
recordDetailEntity
.
getOffWorkDate
());
errorEntity
.
setActualAttendanceDateTime
(
recordDetailEntity
.
getOffWorkDate
());
}
else
{
errorEntity
.
setErrorDateTime
(
sdf
.
parse
(
s
+
" "
+
sdft
.
format
(
offWorkDate
)));
errorEntity
.
setActualAttendanceDateTime
(
sdf
.
parse
(
s
+
" "
+
sdft
.
format
(
offWorkDate
)));
}
if
(
recordDetailEntity
.
getOffWorkResult
()==
3
){
errorEntity
.
setErrorStatus
(
0
);
}
if
(
recordDetailEntity
.
getOffWorkResult
()==
5
){
errorEntity
.
setErrorStatus
(
1
);
}
errorEntity
.
setProcessStatus
(
0
);
IUser
user
=
context
.
getUser
();
errorEntity
.
setCreateTime
(
new
Date
());
errorEntity
.
setCreateUserId
(
user
.
getId
());
errorEntityList
.
add
(
errorEntity
);
}
}
if
(
detailEntity
!=
null
){
if
(
errorEntityList
!=
null
&&
errorEntityList
.
size
()>
0
){
errorService
.
save
(
errorEntityList
,
context
);
}
attendanceRecordEntity
.
setAttendanceRecordDetailList
(
detailEntity
);
attendanceRecordService
.
save
(
attendanceRecordEntity
,
context
);
}
}
}
}
public
String
getWeek
(
Date
date
){
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"EEEE"
);
String
week
=
sdf
.
format
(
date
);
return
week
;
}
/**
* 获取通过星期获取班次id 如果返参为-1 则不在考勤
* @return
*/
public
Long
getWeekClassId
(
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
,
String
week
){
Long
weekClassId
=
0L
;
switch
(
week
){
case
"星期一"
:
if
(
attendanceGroupFixedworkEntity
.
getMonday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getMondayClassId
();
break
;
case
"星期二"
:
if
(
attendanceGroupFixedworkEntity
.
getTuesday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getTuesdayClassId
();
break
;
case
"星期三"
:
if
(
attendanceGroupFixedworkEntity
.
getWednesday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getWednesdayClassId
();
break
;
case
"星期四"
:
if
(
attendanceGroupFixedworkEntity
.
getThursday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getThursdayClassId
();
break
;
case
"星期五"
:
if
(
attendanceGroupFixedworkEntity
.
getFriday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getFridayClassId
();
break
;
case
"星期六"
:
if
(
attendanceGroupFixedworkEntity
.
getSaturday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getSaturdayClassId
();
break
;
case
"星期天"
:
if
(
attendanceGroupFixedworkEntity
.
getSunday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getSundayClassId
();
break
;
}
return
weekClassId
;
}
/**
*
* @param nowTime 当前时间
* @param startTime 开始时间
* @param endTime 结束时间
* @return
* 判断当前时间在时间区间内
*/
public
static
boolean
isInTime
(
Date
nowTime
,
Date
startTime
,
Date
endTime
)
{
if
(
nowTime
.
getTime
()
==
startTime
.
getTime
()
||
nowTime
.
getTime
()
==
endTime
.
getTime
())
{
return
true
;
}
Calendar
date
=
Calendar
.
getInstance
();
date
.
setTime
(
nowTime
);
Calendar
begin
=
Calendar
.
getInstance
();
begin
.
setTime
(
startTime
);
Calendar
end
=
Calendar
.
getInstance
();
end
.
setTime
(
endTime
);
if
(
date
.
after
(
begin
)
&&
date
.
before
(
end
))
{
return
true
;
}
else
{
return
false
;
}
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordServiceImpl.java
View file @
2afbf419
...
...
@@ -50,8 +50,8 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
if
(!
ObjectUtils
.
isEmpty
(
entity
.
getAttendanceRecordDetailList
())){
entity
.
getAttendanceRecordDetailList
().
stream
().
peek
(
item
->{
item
.
setRecordId
(
entity
.
getId
());
item
.
setCreateUser
(
context
.
getUser
().
getLoginName
());
item
.
setCreateUserId
(
context
.
getUser
().
getId
());
item
.
setCreateUser
(
context
==
null
?
"admin"
:
context
.
getUser
().
getLoginName
());
item
.
setCreateUserId
(
context
==
null
?
1L
:
context
.
getUser
().
getId
());
item
.
setCreateTime
(
new
Date
());
}).
count
();
attendanceRecordDetailService
.
save
(
entity
.
getAttendanceRecordDetailList
());
...
...
@@ -66,11 +66,11 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
attendanceRecordDetailService
.
remove
(
attendanceRecordDetailIds
,
context
);
entity
.
getAttendanceRecordDetailList
().
stream
().
peek
(
item
->{
item
.
setRecordId
(
entity
.
getId
());
item
.
setCreateUser
(
context
.
getUser
().
getLoginName
());
item
.
setCreateUserId
(
context
.
getUser
().
getId
());
item
.
setCreateUser
(
context
==
null
?
"admin"
:
context
.
getUser
().
getLoginName
());
item
.
setCreateUserId
(
context
==
null
?
1L
:
context
.
getUser
().
getId
());
item
.
setCreateTime
(
new
Date
());
item
.
setUpdateUser
(
context
.
getUser
().
getLoginName
());
item
.
setUpdateUserId
(
context
.
getUser
().
getId
());
item
.
setUpdateUser
(
context
==
null
?
"admin"
:
context
.
getUser
().
getLoginName
());
item
.
setUpdateUserId
(
context
==
null
?
1L
:
context
.
getUser
().
getId
());
item
.
setUpdateTime
(
new
Date
());
}).
count
();
attendanceRecordDetailService
.
save
(
entity
.
getAttendanceRecordDetailList
());
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordErrorController.java
View file @
2afbf419
...
...
@@ -23,6 +23,7 @@ import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import
org.apache.commons.lang3.ArrayUtils
;
import
com.mortals.framework.util.StringUtils
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
com.alibaba.fastjson.JSONObject
;
...
...
@@ -52,6 +53,9 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
@Autowired
private
AttendanceClassService
attendanceClassService
;
@Autowired
private
AttendanceClassDetailService
classDetailService
;
@Autowired
private
AttendanceRecordService
attendanceRecordService
;
...
...
@@ -76,7 +80,7 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
}
@PostMapping
(
{
"disposeError"
}
)
@PostMapping
(
value
=
"disposeError"
)
public
Rest
<
String
>
disposeError
(
@RequestBody
AttendanceRecordErrorEntity
query
)
{
Rest
<
String
>
ret
=
new
Rest
();
Context
context
=
this
.
getContext
();
...
...
@@ -84,6 +88,7 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
query
.
setOperDateTime
(
new
Date
());
query
.
setProcessStatus
(
1
);
errorService
.
update
(
query
);
DateUtils
.
convertTime2Str
(
query
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
);
AttendanceRecordQuery
attendanceRecordQuery
=
new
AttendanceRecordQuery
();
attendanceRecordQuery
.
setStaffId
(
query
.
getStaffId
());
...
...
@@ -94,21 +99,54 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
detailQuery
.
setRecordId
(
attendanceRecordEntity
.
getId
());
detailQuery
.
setShiftsId
(
query
.
getShiftsId
());
List
<
AttendanceRecordDetailEntity
>
attendanceRecordDetailEntity
=
attendanceRecordDetailService
.
find
(
detailQuery
);
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
attendanceRecordDetailEntity
)
{
Date
goWorkDate
=
recordDetailEntity
.
getGoWorkDate
();
Date
offWorkDate
=
recordDetailEntity
.
getOffWorkDate
();
if
(
goWorkDate
.
getTime
()==
query
.
getErrorDateTime
().
getTime
()){
recordDetailEntity
.
setGoWorkResult
(
query
.
getErrorStatus
());
if
(
query
.
getProcessResult
().
contains
(
"正常"
)){
if
(
goWorkDate
.
getTime
()==
query
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setGoWorkResult
(
1
);
}
if
(
offWorkDate
.
getTime
()==
query
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setOffWorkResult
(
1
);
}
if
(
offWorkDate
.
getTime
()==
query
.
getErrorDateTime
().
getTime
()){
recordDetailEntity
.
setOffWorkResult
(
query
.
getErrorStatus
());
}
if
(
query
.
getProcessResult
().
contains
(
"早退"
)){
if
(
offWorkDate
.
getTime
()==
query
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setOffWorkResult
(
5
);
}
}
if
(
query
.
getProcessResult
().
contains
(
"迟到"
)){
if
(
goWorkDate
.
getTime
()==
query
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setGoWorkResult
(
4
);
}
}
attendanceRecordDetailService
.
update
(
recordDetailEntity
);
}
return
Rest
.
ok
();
}
@Override
protected
int
editAfter
(
Long
id
,
Map
<
String
,
Object
>
model
,
AttendanceRecordErrorEntity
entity
,
Context
context
)
throws
AppException
{
this
.
addDict
(
model
,
"errorStatus"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceRecordError"
,
"errorStatus"
));
return
super
.
editAfter
(
id
,
model
,
entity
,
context
);
}
@Override
protected
void
doListAfter
(
AttendanceRecordErrorEntity
query
,
List
<
AttendanceRecordErrorEntity
>
list
,
Context
context
)
throws
AppException
{
for
(
AttendanceRecordErrorEntity
errorEntity
:
list
)
{
Long
shiftsId
=
errorEntity
.
getShiftsId
();
AttendanceClassDetailEntity
attendanceClassDetailEntity
=
classDetailService
.
selectOne
(
new
AttendanceClassDetailQuery
().
id
(
shiftsId
));
if
(
errorEntity
.
getGoOffDateTime
().
getTime
()==
attendanceClassDetailEntity
.
getGoWorkDate
().
getTime
()){
errorEntity
.
setGoOrOff
(
"上班"
);
}
if
(
errorEntity
.
getGoOffDateTime
().
getTime
()==
attendanceClassDetailEntity
.
getOffWorkDate
().
getTime
()){
errorEntity
.
setGoOrOff
(
"下班"
);
}
}
super
.
doListAfter
(
query
,
list
,
context
);
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java
View file @
2afbf419
package
com.mortals.xhx.module.attendance.web
;
import
cn.hutool.core.util.StrUtil
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.service.IUser
;
import
com.mortals.framework.util.StringUtils
;
import
com.mortals.framework.utils.ServletUtils
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.base.system.upload.service.UploadService
;
import
com.mortals.xhx.module.attendance.model.*
;
import
com.mortals.xhx.module.attendance.service.*
;
import
com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity
;
import
com.mortals.xhx.module.attendance.service.AttendanceExportRecordService
;
import
com.mortals.xhx.module.attendance.service.AttendanceRecordHikService
;
import
com.mortals.xhx.module.dept.model.DeptEntity
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.model.StaffQuery
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
...
@@ -28,12 +29,10 @@ import org.springframework.web.multipart.MultipartFile;
import
java.io.ByteArrayInputStream
;
import
java.io.InputStream
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.ZoneId
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
*
* 海康考勤打卡记录汇总信息
...
...
@@ -50,27 +49,13 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
@Autowired
private
DeptService
deptService
;
@Autowired
private
AttendanceRecordService
attendanceRecordService
;
@Autowired
private
AttendanceRecordHikService
attendanceRecordHikService
;
@Autowired
private
AttendanceGroupStaffService
attendanceGroupStaffService
;
@Autowired
private
AttendanceGroupService
attendanceGroupService
;
@Autowired
private
AttendanceGroupFixedworkService
attendanceGroupFixedworkService
;
@Autowired
private
AttendanceClassService
attendanceClassService
;
@Autowired
private
AttendanceClassDetailService
attendanceClassDetailService
;
@Autowired
private
StaffService
staffService
;
@Autowired
private
UploadService
uploadService
;
@Autowired
private
AttendanceExportRecordService
attendanceExportRecordService
;
@Autowired
private
AttendanceRecord
ErrorService
error
Service
;
private
AttendanceRecord
HikService
hik
Service
;
public
AttendanceRecordHikController
(){
super
.
setModuleDesc
(
"海康考勤打卡记录汇总信息"
);
...
...
@@ -133,394 +118,26 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
}
@PostMapping
(
value
=
"/addAttendanceRecord"
)
public
void
addAttendanceRecord
(
@RequestBody
AttendanceRecordHikEntity
hikEntity
)
throws
ParseException
{
List
<
AttendanceRecordHikEntity
>
list
=
hikEntity
.
getList
();
//对考勤数据根据考勤时间进行排序
List
<
AttendanceRecordHikEntity
>
collect
=
list
.
stream
().
sorted
(
Comparator
.
comparing
(
AttendanceRecordHikEntity:
:
getAttendanceDate
)).
collect
(
Collectors
.
toList
());
//根据工号对考勤数据进行分组
Map
<
String
,
List
<
AttendanceRecordHikEntity
>>
listMap
=
collect
.
stream
().
collect
(
Collectors
.
groupingBy
(
AttendanceRecordHikEntity:
:
getWorkNum
));
//map遍历.先把所有键取出来
Set
<
String
>
workNumSet
=
listMap
.
keySet
();
//根据键取出value
for
(
String
workNum
:
workNumSet
)
{
List
<
AttendanceRecordHikEntity
>
attendanceRecordHikEntities1
=
listMap
.
get
(
workNum
);
//对按照工号分组了的数据attendanceRecordHikEntities进行时间分组
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd"
);
Map
<
String
,
List
<
AttendanceRecordHikEntity
>>
map
=
attendanceRecordHikEntities1
.
stream
().
collect
(
Collectors
.
groupingBy
(
entity
->
entity
.
getAttendanceDate
().
toInstant
().
atZone
(
ZoneId
.
systemDefault
()).
toLocalDate
().
format
(
formatter
)));
Set
<
String
>
dateSet
=
map
.
keySet
();
for
(
String
s
:
dateSet
)
{
List
<
AttendanceRecordHikEntity
>
attendanceRecordHikEntities
=
map
.
get
(
s
);
//对相同工号的人员进行遍历判断考勤规则.
AttendanceRecordEntity
attendanceRecordEntity
=
new
AttendanceRecordEntity
();
List
<
AttendanceRecordDetailEntity
>
detailEntity
=
new
ArrayList
<>();
for
(
AttendanceRecordHikEntity
item:
attendanceRecordHikEntities
)
{
//对主表的对象进行赋值
if
(
Objects
.
nonNull
(
attendanceRecordEntity
)){
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
attendanceRecordEntity
.
setStaffId
(
item
.
getStaffId
());
attendanceRecordEntity
.
setStaffName
(
item
.
getStaffName
());
attendanceRecordEntity
.
setDeptId
(
item
.
getDeptId
());
attendanceRecordEntity
.
setDeptName
(
item
.
getDeptName
());
attendanceRecordEntity
.
setPositionId
(
item
.
getPositionId
());
attendanceRecordEntity
.
setPositionName
(
item
.
getPositionName
());
attendanceRecordEntity
.
setWorkNum
(
item
.
getWorkNum
());
IUser
user
=
getContext
().
getUser
();
attendanceRecordEntity
.
setCreateTime
(
new
Date
());
attendanceRecordEntity
.
setCreateUserId
(
user
.
getId
());
attendanceRecordEntity
.
setAttendanceDate
(
sdf
.
parse
(
sdf
.
format
(
item
.
getAttendanceDate
())));
}
//获取考勤打卡时间
Date
attendanceDate
=
item
.
getAttendanceDate
();
//通过工号查询员工信息
StaffQuery
staffQuery
=
new
StaffQuery
();
StaffEntity
staffEntity
=
staffService
.
selectOne
(
staffQuery
.
workNum
(
item
.
getWorkNum
()));
//通过员工id查询考勤人员信息
AttendanceGroupStaffQuery
attendanceGroupStaffQuery
=
new
AttendanceGroupStaffQuery
();
List
<
AttendanceGroupStaffEntity
>
attendanceGroupStaffEntities
=
attendanceGroupStaffService
.
find
(
attendanceGroupStaffQuery
.
staffId
(
staffEntity
.
getId
()));
//查询该考勤人员,如果查出来的考勤人员信息list长度为1 则该考勤人员只有一个考勤组
if
(
StringUtils
.
isNotNull
(
attendanceGroupStaffEntities
)
&&
attendanceGroupStaffEntities
.
size
()==
1
){
//查询考勤组
AttendanceGroupQuery
attendanceGroupQuery
=
new
AttendanceGroupQuery
();
AttendanceGroupEntity
attendanceGroupEntity
=
attendanceGroupService
.
selectOne
(
attendanceGroupQuery
.
id
(
attendanceGroupStaffEntities
.
get
(
0
).
getGroupId
()));
//查询考勤组详细信息获取班次
AttendanceGroupFixedworkQuery
attendanceGroupFixedworkQuery
=
new
AttendanceGroupFixedworkQuery
();
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
=
attendanceGroupFixedworkService
.
selectOne
(
attendanceGroupFixedworkQuery
.
groupId
(
attendanceGroupEntity
.
getId
()));
//判断当前考勤日期为周几
Date
attendanceDate1
=
attendanceDate
;
String
week
=
this
.
getWeek
(
attendanceDate1
);
//通过考勤日期的星期拿到班次id.
Long
weekClassId
=
this
.
getWeekClassId
(
attendanceGroupFixedworkEntity
,
week
);
//weekClassId为-1 则不在考勤
if
(
weekClassId
==-
1L
){
//跳过本次循环
continue
;
}
//获取班次信息
AttendanceClassQuery
attendanceClassQuery
=
new
AttendanceClassQuery
();
AttendanceClassEntity
attendanceClassEntity
=
attendanceClassService
.
selectOne
(
attendanceClassQuery
.
id
(
weekClassId
));
//获取班次详细信息
AttendanceClassDetailQuery
attendanceClassDetailQuery
=
new
AttendanceClassDetailQuery
();
List
<
AttendanceClassDetailEntity
>
attendanceClassDetailEntities
=
attendanceClassDetailService
.
find
(
attendanceClassDetailQuery
.
classId
(
attendanceClassEntity
.
getId
()));
Integer
orderNum
=
0
;
for
(
AttendanceClassDetailEntity
classDetailEntity
:
attendanceClassDetailEntities
)
{
orderNum
++;
AttendanceRecordDetailEntity
recordDetailEntity
=
new
AttendanceRecordDetailEntity
();
recordDetailEntity
.
setShiftsId
(
classDetailEntity
.
getId
());
recordDetailEntity
.
setShiftsName
(
classDetailEntity
.
getClassName
());
recordDetailEntity
.
setGoWorkResult
(
3
);
recordDetailEntity
.
setOffWorkResult
(
3
);
recordDetailEntity
.
setOrderNum
(
orderNum
);
detailEntity
.
add
(
recordDetailEntity
);
}
public
Rest
<
String
>
addAttendanceRecord
(
@RequestBody
AttendanceRecordHikEntity
hikEntity
)
{
Rest
<
String
>
ret
=
new
Rest
();
Map
<
String
,
Object
>
model
=
new
HashMap
();
Context
context
=
this
.
getContext
();
String
busiDesc
=
"查询"
+
this
.
getModuleDesc
();
int
code
=
1
;
try
{
hikService
.
addAttendanceRecord
(
hikEntity
,
getContext
());
model
.
put
(
"message_info"
,
busiDesc
+
"成功"
);
this
.
recordSysLog
(
this
.
request
,
busiDesc
+
" 【成功】"
);
}
catch
(
Exception
var9
)
{
code
=
-
1
;
this
.
doException
(
this
.
request
,
busiDesc
,
model
,
var9
);
}
this
.
init
(
model
,
context
);
ret
.
setCode
(
code
);
ret
.
setMsg
(
model
.
get
(
"message_info"
)
==
null
?
""
:
model
.
remove
(
"message_info"
).
toString
());
return
ret
;
for
(
AttendanceClassDetailEntity
classDetail
:
attendanceClassDetailEntities
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH:mm"
);
//上班打卡前时间
Date
goWorkDateBefore
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getGoWorkDate
(),
-
classDetail
.
getGoWorkDateBefore
())));
//上班打卡后时间
Date
goWorkDateAfter
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getGoWorkDate
(),
classDetail
.
getGoWorkDateAfter
())));
//下班打卡前时间
Date
offWorkDateBefore
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getOffWorkDate
(),
-
classDetail
.
getOffWorkDateBefore
())));
//下班打卡后时间
Date
offWorkDateAfter
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getOffWorkDate
(),
classDetail
.
getOffWorkDateAfter
())));
//判断考勤时间是否在上班打卡区间内 true 在 false 不在
boolean
goInTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
goWorkDateBefore
,
goWorkDateAfter
);
//判断考勤时间是否在下班打卡区间内
boolean
offInTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
offWorkDateBefore
,
offWorkDateAfter
);
if
(
goInTime
==
false
&&
offInTime
==
false
){
continue
;
}
if
(
goInTime
)
{
//如果是上班打卡,判断是否迟到
boolean
inTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
goWorkDateBefore
,
sdf
.
parse
(
sdf
.
format
(
classDetail
.
getGoWorkDate
())));
if
(!
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getClassId
())){
attendanceRecordDetailEntity
.
setGoWorkResult
(
4
);
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
if
(
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getClassId
())){
attendanceRecordDetailEntity
.
setGoWorkResult
(
1
);
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
}
if
(
offInTime
){
boolean
inTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
sdf
.
parse
(
sdf
.
format
(
classDetail
.
getOffWorkDate
())),
offWorkDateAfter
);
if
(!
inTime
){
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getClassId
())){
attendanceRecordDetailEntity
.
setOffWorkResult
(
5
);
attendanceRecordDetailEntity
.
setOffWorkDate
(
attendanceDate
);
}
}
}
if
(
inTime
){
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getClassId
())){
attendanceRecordDetailEntity
.
setOffWorkResult
(
1
);
attendanceRecordDetailEntity
.
setOffWorkDate
(
attendanceDate
);
}
}
}
}
}
}
//如果考勤人员信息list长度大于1 则该考勤人员有多个考勤组.
if
(
StringUtils
.
isNotNull
(
attendanceGroupStaffEntities
)
&&
attendanceGroupStaffEntities
.
size
()>
1
){
for
(
AttendanceGroupStaffEntity
groupStaffEntity:
attendanceGroupStaffEntities
){
{
//查询考勤组
AttendanceGroupQuery
attendanceGroupQuery
=
new
AttendanceGroupQuery
();
AttendanceGroupEntity
attendanceGroupEntity
=
attendanceGroupService
.
selectOne
(
attendanceGroupQuery
.
id
(
groupStaffEntity
.
getGroupId
()));
//查询考勤组详细信息获取班次
AttendanceGroupFixedworkQuery
attendanceGroupFixedworkQuery
=
new
AttendanceGroupFixedworkQuery
();
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
=
attendanceGroupFixedworkService
.
selectOne
(
attendanceGroupFixedworkQuery
.
groupId
(
attendanceGroupEntity
.
getId
()));
//判断当前考勤日期为周几
Date
attendanceDate1
=
attendanceDate
;
String
week
=
this
.
getWeek
(
attendanceDate1
);
//通过考勤日期的星期拿到班次id.
Long
weekClassId
=
this
.
getWeekClassId
(
attendanceGroupFixedworkEntity
,
week
);
//weekClassId为-1 则不在考勤
if
(
weekClassId
==-
1L
){
//跳过本次循环
continue
;
}
//获取班次信息
AttendanceClassQuery
attendanceClassQuery
=
new
AttendanceClassQuery
();
AttendanceClassEntity
attendanceClassEntity
=
attendanceClassService
.
selectOne
(
attendanceClassQuery
.
id
(
weekClassId
));
//获取班次详细信息
AttendanceClassDetailQuery
attendanceClassDetailQuery
=
new
AttendanceClassDetailQuery
();
List
<
AttendanceClassDetailEntity
>
attendanceClassDetailEntities
=
attendanceClassDetailService
.
find
(
attendanceClassDetailQuery
.
classId
(
attendanceClassEntity
.
getId
()));
Integer
orderNum
=
0
;
for
(
AttendanceClassDetailEntity
classDetailEntity
:
attendanceClassDetailEntities
)
{
orderNum
++;
AttendanceRecordDetailEntity
recordDetailEntity
=
new
AttendanceRecordDetailEntity
();
recordDetailEntity
.
setShiftsId
(
classDetailEntity
.
getId
());
recordDetailEntity
.
setShiftsName
(
classDetailEntity
.
getClassName
());
recordDetailEntity
.
setGoWorkResult
(
3
);
recordDetailEntity
.
setOffWorkResult
(
3
);
recordDetailEntity
.
setOrderNum
(
orderNum
);
detailEntity
.
add
(
recordDetailEntity
);
}
for
(
AttendanceClassDetailEntity
classDetail
:
attendanceClassDetailEntities
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"HH:mm"
);
//上班打卡前时间
Date
goWorkDateBefore
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getGoWorkDate
(),
-
classDetail
.
getGoWorkDateBefore
())));
//上班打卡后时间
Date
goWorkDateAfter
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getGoWorkDate
(),
classDetail
.
getGoWorkDateAfter
())));
//下班打卡前时间
Date
offWorkDateBefore
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getOffWorkDate
(),
-
classDetail
.
getOffWorkDateBefore
())));
//下班打卡后时间
Date
offWorkDateAfter
=
sdf
.
parse
(
sdf
.
format
(
DateUtils
.
addMinutes
(
classDetail
.
getOffWorkDate
(),
classDetail
.
getOffWorkDateAfter
())));
//判断考勤时间是否在上班打卡区间内 true 在 false 不在
boolean
goInTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
goWorkDateBefore
,
goWorkDateAfter
);
//判断考勤时间是否在下班打卡区间内
boolean
offInTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
offWorkDateBefore
,
offWorkDateAfter
);
if
(
goInTime
==
false
&&
offInTime
==
false
){
continue
;
}
if
(
goInTime
)
{
//如果是上班打卡,判断是否迟到
boolean
inTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
goWorkDateBefore
,
sdf
.
parse
(
sdf
.
format
(
classDetail
.
getGoWorkDate
())));
if
(!
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getClassId
())){
attendanceRecordDetailEntity
.
setGoWorkResult
(
4
);
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
if
(
inTime
)
{
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getClassId
())){
attendanceRecordDetailEntity
.
setGoWorkResult
(
1
);
attendanceRecordDetailEntity
.
setGoWorkDate
(
attendanceDate
);
}
}
}
}
if
(
offInTime
){
boolean
inTime
=
isInTime
(
sdf
.
parse
(
sdf
.
format
(
attendanceDate
)),
sdf
.
parse
(
sdf
.
format
(
classDetail
.
getOffWorkDate
())),
offWorkDateAfter
);
if
(!
inTime
){
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getClassId
())){
attendanceRecordDetailEntity
.
setOffWorkResult
(
5
);
attendanceRecordDetailEntity
.
setOffWorkDate
(
attendanceDate
);
}
}
}
if
(
inTime
){
for
(
AttendanceRecordDetailEntity
attendanceRecordDetailEntity
:
detailEntity
)
{
if
(
attendanceRecordDetailEntity
.
getShiftsId
().
equals
(
classDetail
.
getClassId
())){
attendanceRecordDetailEntity
.
setOffWorkResult
(
1
);
attendanceRecordDetailEntity
.
setOffWorkDate
(
attendanceDate
);
}
}
}
}
}
}
}
}
}
List
<
AttendanceRecordErrorEntity
>
errorEntityList
=
new
ArrayList
<>();
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
detailEntity
)
{
Integer
goWorkResult
=
recordDetailEntity
.
getGoWorkResult
();
Integer
offWorkResult
=
recordDetailEntity
.
getOffWorkResult
();
if
(
goWorkResult
!=
1
){
AttendanceRecordErrorEntity
errorEntity
=
new
AttendanceRecordErrorEntity
();
errorEntity
.
setStaffId
(
attendanceRecordEntity
.
getStaffId
());
errorEntity
.
setStaffName
(
attendanceRecordEntity
.
getStaffName
());
errorEntity
.
setWorkNum
(
attendanceRecordEntity
.
getWorkNum
());
errorEntity
.
setDeptId
(
attendanceRecordEntity
.
getDeptId
());
errorEntity
.
setDeptName
(
attendanceRecordEntity
.
getDeptName
());
errorEntity
.
setPositionId
(
attendanceRecordEntity
.
getPositionId
());
errorEntity
.
setPositionName
(
attendanceRecordEntity
.
getPositionName
());
errorEntity
.
setShiftsId
(
recordDetailEntity
.
getShiftsId
());
errorEntity
.
setShiftsName
(
recordDetailEntity
.
getShiftsName
());
errorEntity
.
setGoOffDateTime
(
attendanceClassDetailService
.
selectOne
(
new
AttendanceClassDetailQuery
().
id
(
recordDetailEntity
.
getShiftsId
())).
getGoWorkDate
());
errorEntity
.
setErrorDateTime
(
recordDetailEntity
.
getGoWorkDate
());
errorEntity
.
setActualAttendanceDateTime
(
recordDetailEntity
.
getGoWorkDate
());
errorEntity
.
setErrorStatus
(
recordDetailEntity
.
getGoWorkResult
());
errorEntity
.
setProcessResult
(
"0"
);
IUser
user
=
getContext
().
getUser
();
errorEntity
.
setCreateTime
(
new
Date
());
errorEntity
.
setCreateUserId
(
user
.
getId
());
errorEntityList
.
add
(
errorEntity
);
}
if
(
offWorkResult
!=
1
){
AttendanceRecordErrorEntity
errorEntity
=
new
AttendanceRecordErrorEntity
();
errorEntity
.
setStaffId
(
attendanceRecordEntity
.
getStaffId
());
errorEntity
.
setStaffName
(
attendanceRecordEntity
.
getStaffName
());
errorEntity
.
setWorkNum
(
attendanceRecordEntity
.
getWorkNum
());
errorEntity
.
setDeptId
(
attendanceRecordEntity
.
getDeptId
());
errorEntity
.
setDeptName
(
attendanceRecordEntity
.
getDeptName
());
errorEntity
.
setPositionId
(
attendanceRecordEntity
.
getPositionId
());
errorEntity
.
setPositionName
(
attendanceRecordEntity
.
getPositionName
());
errorEntity
.
setShiftsId
(
recordDetailEntity
.
getShiftsId
());
errorEntity
.
setShiftsName
(
recordDetailEntity
.
getShiftsName
());
errorEntity
.
setGoOffDateTime
(
attendanceClassDetailService
.
selectOne
(
new
AttendanceClassDetailQuery
().
id
(
recordDetailEntity
.
getShiftsId
())).
getOffWorkDate
());
errorEntity
.
setErrorDateTime
(
recordDetailEntity
.
getOffWorkDate
());
errorEntity
.
setActualAttendanceDateTime
(
recordDetailEntity
.
getOffWorkDate
());
errorEntity
.
setErrorStatus
(
recordDetailEntity
.
getOffWorkResult
());
errorEntity
.
setProcessResult
(
"0"
);
IUser
user
=
getContext
().
getUser
();
errorEntity
.
setCreateTime
(
new
Date
());
errorEntity
.
setCreateUserId
(
user
.
getId
());
errorEntityList
.
add
(
errorEntity
);
}
}
if
(
errorEntityList
!=
null
&&
errorEntityList
.
size
()>
0
){
errorService
.
save
(
errorEntityList
);
}
attendanceRecordEntity
.
setAttendanceRecordDetailList
(
detailEntity
);
attendanceRecordService
.
save
(
attendanceRecordEntity
);
}
}
}
public
String
getWeek
(
Date
date
){
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"EEEE"
);
String
week
=
sdf
.
format
(
date
);
return
week
;
}
/**
* 获取通过星期获取班次id 如果返参为-1 则不在考勤
* @return
*/
public
Long
getWeekClassId
(
AttendanceGroupFixedworkEntity
attendanceGroupFixedworkEntity
,
String
week
){
Long
weekClassId
=
0L
;
switch
(
week
){
case
"星期一"
:
if
(
attendanceGroupFixedworkEntity
.
getMonday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getMondayClassId
();
break
;
case
"星期二"
:
if
(
attendanceGroupFixedworkEntity
.
getTuesday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getTuesdayClassId
();
break
;
case
"星期三"
:
if
(
attendanceGroupFixedworkEntity
.
getWednesday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getWednesdayClassId
();
break
;
case
"星期四"
:
if
(
attendanceGroupFixedworkEntity
.
getThursday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getThursdayClassId
();
break
;
case
"星期五"
:
if
(
attendanceGroupFixedworkEntity
.
getFriday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getFridayClassId
();
break
;
case
"星期六"
:
if
(
attendanceGroupFixedworkEntity
.
getSaturday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getSaturdayClassId
();
break
;
case
"星期天"
:
if
(
attendanceGroupFixedworkEntity
.
getSunday
()==
0
){
weekClassId
=
-
1L
;
return
weekClassId
;
}
weekClassId
=
attendanceGroupFixedworkEntity
.
getSundayClassId
();
break
;
}
return
weekClassId
;
}
/**
*
* @param nowTime 当前时间
* @param startTime 开始时间
* @param endTime 结束时间
* @return
* 判断当前时间在时间区间内
*/
public
static
boolean
isInTime
(
Date
nowTime
,
Date
startTime
,
Date
endTime
)
{
if
(
nowTime
.
getTime
()
==
startTime
.
getTime
()
||
nowTime
.
getTime
()
==
endTime
.
getTime
())
{
return
true
;
}
Calendar
date
=
Calendar
.
getInstance
();
date
.
setTime
(
nowTime
);
Calendar
begin
=
Calendar
.
getInstance
();
begin
.
setTime
(
startTime
);
Calendar
end
=
Calendar
.
getInstance
();
end
.
setTime
(
endTime
);
if
(
date
.
after
(
begin
)
&&
date
.
before
(
end
))
{
return
true
;
}
else
{
return
false
;
}
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceStatController.java
View file @
2afbf419
package
com.mortals.xhx.module.attendance.web
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.module.attendance.model.AttendanceClassQuery
;
import
com.mortals.xhx.module.attendance.model.AttendanceGroupQuery
;
import
com.mortals.xhx.module.attendance.service.AttendanceClassService
;
import
com.mortals.xhx.module.attendance.service.AttendanceGroupService
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -36,12 +42,24 @@ public class AttendanceStatController extends BaseCRUDJsonBodyMappingController<
@Autowired
private
ParamService
paramService
;
@Autowired
private
AttendanceGroupService
attendanceGroupService
;
@Autowired
private
DeptService
deptService
;
@Autowired
private
AttendanceClassService
attendanceClassService
;
public
AttendanceStatController
(){
super
.
setModuleDesc
(
"考勤汇总信息"
);
}
@Override
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
this
.
addDict
(
model
,
"deptId"
,
deptService
.
find
(
new
DeptQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getDeptName
())));
this
.
addDict
(
model
,
"groupId"
,
attendanceGroupService
.
find
(
new
AttendanceGroupQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getGroupName
())));
this
.
addDict
(
model
,
"classId"
,
attendanceClassService
.
find
(
new
AttendanceClassQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getClassName
())));
super
.
init
(
model
,
context
);
}
...
...
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