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
e4faebfb
Commit
e4faebfb
authored
Apr 20, 2023
by
wenqy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
异常处理撤销 考勤情况
parent
0ad72915
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
221 additions
and
21 deletions
+221
-21
attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/ErrorStatusEnum.java
...ain/java/com/mortals/xhx/common/code/ErrorStatusEnum.java
+3
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceStatus.java
...mortals/xhx/module/attendance/model/AttendanceStatus.java
+45
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordErrorVo.java
...x/module/attendance/model/vo/AttendanceRecordErrorVo.java
+5
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordVo.java
...ls/xhx/module/attendance/model/vo/AttendanceRecordVo.java
+10
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
...tendance/service/impl/AttendanceRecordHikServiceImpl.java
+1
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java
...xhx/module/attendance/web/AttendanceRecordController.java
+64
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordErrorController.java
...odule/attendance/web/AttendanceRecordErrorController.java
+93
-19
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/ErrorStatusEnum.java
View file @
e4faebfb
...
...
@@ -11,7 +11,9 @@ import java.util.Map;
public
enum
ErrorStatusEnum
{
缺卡
(
0
,
"缺卡"
),
早退
(
1
,
"早退"
),
迟到
(
2
,
"迟到"
);
迟到
(
2
,
"迟到"
),
正常
(
3
,
"正常"
);
private
Integer
value
;
private
String
desc
;
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceStatus.java
0 → 100644
View file @
e4faebfb
package
com.mortals.xhx.module.attendance.model
;
import
lombok.Data
;
/**
* 出勤情况
*
* @author:
* @date: 2023/4/20 14:24
*/
@Data
public
class
AttendanceStatus
{
/**
* 需要出勤人数
*/
private
Integer
needAttNum
;
/**
* 未出勤
*/
private
Integer
noAtt
;
/**
* 出勤率
*/
private
String
attPercentage
;
/**
* 迟到
*/
private
Integer
beLate
;
/**
* 早退
*/
private
Integer
leaveEarly
;
/**
* 缺卡
*/
private
Integer
lackOfCards
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordErrorVo.java
View file @
e4faebfb
...
...
@@ -19,4 +19,9 @@ public class AttendanceRecordErrorVo extends BaseEntityLong {
*/
private
String
goOrOff
;
/**
* 接收批量处理的结果
*/
private
List
<
AttendanceRecordErrorEntity
>
recordErrorEntities
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordVo.java
View file @
e4faebfb
...
...
@@ -24,5 +24,15 @@ public class AttendanceRecordVo extends BaseEntityLong {
/** 结束 打卡日期 */
private
String
attendanceDateEnd
;
/**
* 班次id
*/
private
Long
classId
;
/**
* 班组id
*/
private
Long
groupId
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
View file @
e4faebfb
...
...
@@ -224,7 +224,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
AttendanceClassDetailQuery
attendanceClassDetailQuery
=
new
AttendanceClassDetailQuery
();
List
<
AttendanceClassDetailEntity
>
attendanceClassDetailEntities
=
attendanceClassDetailService
.
find
(
attendanceClassDetailQuery
.
classId
(
attendanceClassEntity
.
getId
()));
Integer
orderNum
=
0
;
if
(
detailEntity
!=
null
&&
detailEntity
.
size
()>
0
){
if
(
detailEntity
!=
null
||
detailEntity
.
size
()==
0
){
for
(
AttendanceClassDetailEntity
classDetailEntity
:
attendanceClassDetailEntities
)
{
orderNum
++;
AttendanceRecordDetailEntity
recordDetailEntity
=
new
AttendanceRecordDetailEntity
();
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java
View file @
e4faebfb
...
...
@@ -10,6 +10,7 @@ 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.checkerframework.checker.units.qual.A
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -61,6 +62,17 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle
}
@Override
protected
void
doListBefore
(
AttendanceRecordEntity
query
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
if
(
query
.
getClassId
()!=
null
){
query
.
setShiftsId
(
query
.
getClassId
());
}
if
(
query
.
getGroupId
()!=
null
){
query
.
setAttendanceGroupId
(
query
.
getGroupId
());
}
super
.
doListBefore
(
query
,
model
,
context
);
}
@Override
protected
int
doListAfter
(
AttendanceRecordEntity
query
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
...
...
@@ -122,7 +134,59 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle
recordEntity
.
setAttendanceRecordDetailList
(
orderList
);
}
}
model
.
put
(
"dyncColumns"
,
dsyncColumns
);
//出勤情况
//总人数
Integer
total
=
(
Integer
)
model
.
get
(
"total"
);
//未出勤
Integer
noAtt
=
0
;
//迟到
Integer
beLate
=
0
;
//早退
Integer
leaveEarly
=
0
;
//缺卡
Integer
lackOfCards
=
0
;
for
(
AttendanceRecordEntity
attendanceRecordEntity
:
list
)
{
boolean
a
=
true
;
for
(
AttendanceRecordDetailEntity
item
:
attendanceRecordEntity
.
getAttendanceRecordDetailList
())
{
if
(
item
.
getGoWorkResult
()==
3
){
lackOfCards
=
lackOfCards
+
1
;
}
if
(
item
.
getGoWorkResult
()==
4
){
beLate
=
beLate
+
1
;
}
if
(
item
.
getOffWorkResult
()==
3
){
lackOfCards
=
lackOfCards
+
1
;
}
if
(
item
.
getOffWorkResult
()==
5
){
leaveEarly
=
leaveEarly
+
1
;
}
if
(
item
.
getGoWorkResult
()!=
3
||
item
.
getOffWorkResult
()!=
3
){
a
=
false
;
}
}
if
(
a
){
noAtt
=
noAtt
+
1
;
}
}
String
attPercentage
=
""
;
if
(
total
!=
0
){
float
l
=
((
total
-
noAtt
)
/
total
)*
100
;
attPercentage
=
l
+
"%"
;
}
else
{
attPercentage
=
"0"
;
}
AttendanceStatus
attendanceStatus
=
new
AttendanceStatus
();
attendanceStatus
.
setNeedAttNum
(
total
);
attendanceStatus
.
setAttPercentage
(
attPercentage
);
attendanceStatus
.
setNoAtt
(
noAtt
);
attendanceStatus
.
setBeLate
(
beLate
);
attendanceStatus
.
setLeaveEarly
(
leaveEarly
);
attendanceStatus
.
setLackOfCards
(
lackOfCards
);
model
.
put
(
"attendanceStatus"
,
attendanceStatus
);
return
super
.
doListAfter
(
query
,
model
,
context
);
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordErrorController.java
View file @
e4faebfb
...
...
@@ -8,10 +8,12 @@ import com.mortals.framework.service.IUser;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.common.code.ErrorStatusEnum
;
import
com.mortals.xhx.module.attendance.model.*
;
import
com.mortals.xhx.module.attendance.service.*
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -71,7 +73,7 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
@Override
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
this
.
addDict
(
model
,
"errorStatus"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceRecordError"
,
"errorStatus"
));
this
.
addDict
(
model
,
"errorStatus"
,
ErrorStatusEnum
.
getEnumMap
(
));
this
.
addDict
(
model
,
"processStatus"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceRecordError"
,
"processStatus"
));
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
())));
...
...
@@ -80,13 +82,14 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
}
@PostMapping
(
value
=
"
dispos
eError"
)
@PostMapping
(
value
=
"
revok
eError"
)
public
Rest
<
String
>
disposeError
(
@RequestBody
AttendanceRecordErrorEntity
query
)
{
Rest
<
String
>
ret
=
new
Rest
();
Context
context
=
this
.
getContext
();
query
.
setOpertor
(
context
.
getUser
().
getRealName
());
query
.
setOperDateTime
(
new
Date
());
query
.
setProcessStatus
(
1
);
query
.
setProcessStatus
(
0
);
query
.
setProcessResult
(
"已撤销处理"
);
errorService
.
update
(
query
);
DateUtils
.
convertTime2Str
(
query
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
);
...
...
@@ -101,34 +104,105 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
List
<
AttendanceRecordDetailEntity
>
attendanceRecordDetailEntity
=
attendanceRecordDetailService
.
find
(
detailQuery
);
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
attendanceRecordDetailEntity
)
{
Date
goWorkDate
=
recordDetailEntity
.
getGoWorkDate
();
Date
offWorkDate
=
recordDetailEntity
.
getOffWorkDate
();
if
(
query
.
getProcessResult
().
contains
(
"正常"
)){
if
(
goWorkDate
.
getTime
()==
query
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setGoWorkResult
(
1
);
if
(
query
.
getGoOrOff
().
equals
(
"上班"
)){
if
(
query
.
getErrorStatus
()==
0
){
recordDetailEntity
.
setGoWorkResult
(
3
);
}
if
(
offWorkDate
.
getTime
()==
query
.
getGoOffDateTime
().
getTime
()
){
recordDetailEntity
.
set
OffWorkResult
(
1
);
if
(
query
.
getErrorStatus
()==
2
){
recordDetailEntity
.
set
GoWorkResult
(
4
);
}
}
if
(
query
.
get
ProcessResult
().
contains
(
"早退
"
)){
if
(
offWorkDate
.
getTime
()==
query
.
getGoOffDateTime
().
getTime
()
){
recordDetailEntity
.
setOffWorkResult
(
5
);
if
(
query
.
get
GoOrOff
().
equals
(
"下班
"
)){
if
(
query
.
getErrorStatus
()==
0
){
recordDetailEntity
.
setOffWorkResult
(
3
);
}
}
if
(
query
.
getProcessResult
().
contains
(
"迟到"
)){
if
(
goWorkDate
.
getTime
()==
query
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setGoWorkResult
(
4
);
if
(
query
.
getErrorStatus
()==
1
){
recordDetailEntity
.
setOffWorkResult
(
5
);
}
}
attendanceRecordDetailService
.
update
(
recordDetailEntity
);
}
return
Rest
.
ok
();
}
@Override
protected
void
saveBefore
(
AttendanceRecordErrorEntity
entity
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
for
(
AttendanceRecordErrorEntity
recordErrorEntity
:
entity
.
getRecordErrorEntities
())
{
recordErrorEntity
.
setProcessStatus
(
entity
.
getProcessStatus
());
recordErrorEntity
.
setProcessResult
(
entity
.
getProcessResult
());
recordErrorEntity
.
setOpertor
(
context
.
getUser
().
getRealName
());
recordErrorEntity
.
setOperDateTime
(
new
Date
());
recordErrorEntity
.
setRemark
(
entity
.
getRemark
());
}
this
.
batchSave
(
entity
.
getRecordErrorEntities
());
for
(
AttendanceRecordErrorEntity
item
:
entity
.
getRecordErrorEntities
())
{
DateUtils
.
convertTime2Str
(
item
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
);
AttendanceRecordQuery
attendanceRecordQuery
=
new
AttendanceRecordQuery
();
attendanceRecordQuery
.
setStaffId
(
item
.
getStaffId
());
attendanceRecordQuery
.
setAttendanceDateStart
(
DateUtils
.
convertTime2Str
(
item
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
attendanceRecordQuery
.
setAttendanceDateEnd
(
DateUtils
.
convertTime2Str
(
item
.
getErrorDateTime
().
getTime
(),
DateUtils
.
P_yyyy_MM_dd
));
AttendanceRecordEntity
attendanceRecordEntity
=
attendanceRecordService
.
selectOne
(
attendanceRecordQuery
);
AttendanceRecordDetailQuery
detailQuery
=
new
AttendanceRecordDetailQuery
();
detailQuery
.
setRecordId
(
attendanceRecordEntity
.
getId
());
detailQuery
.
setShiftsId
(
item
.
getShiftsId
());
List
<
AttendanceRecordDetailEntity
>
attendanceRecordDetailEntity
=
attendanceRecordDetailService
.
find
(
detailQuery
);
for
(
AttendanceRecordDetailEntity
recordDetailEntity
:
attendanceRecordDetailEntity
)
{
Date
goWorkDate
=
recordDetailEntity
.
getGoWorkDate
();
Date
offWorkDate
=
recordDetailEntity
.
getOffWorkDate
();
if
(
item
.
getProcessResult
().
contains
(
"正常"
)){
if
(!
ObjectUtils
.
isEmpty
(
goWorkDate
)){
if
(
goWorkDate
.
getTime
()==
item
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setGoWorkResult
(
1
);
}
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"上班"
)){
recordDetailEntity
.
setGoWorkResult
(
1
);
}
}
if
(!
ObjectUtils
.
isEmpty
(
offWorkDate
)){
if
(
offWorkDate
.
getTime
()==
item
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setOffWorkResult
(
1
);
}
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"下班"
)){
recordDetailEntity
.
setOffWorkResult
(
1
);
}
}
}
if
(
item
.
getProcessResult
().
contains
(
"早退"
)){
if
(!
ObjectUtils
.
isEmpty
(
offWorkDate
)){
if
(
offWorkDate
.
getTime
()==
item
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setOffWorkResult
(
5
);
}
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"下班"
)){
recordDetailEntity
.
setOffWorkResult
(
5
);
}
}
}
if
(
item
.
getProcessResult
().
contains
(
"迟到"
)){
if
(!
ObjectUtils
.
isEmpty
(
goWorkDate
)){
if
(
goWorkDate
.
getTime
()==
item
.
getGoOffDateTime
().
getTime
()){
recordDetailEntity
.
setGoWorkResult
(
4
);
}
}
else
{
if
(
item
.
getGoOrOff
().
equals
(
"上班"
)){
recordDetailEntity
.
setGoWorkResult
(
4
);
}
}
}
attendanceRecordDetailService
.
update
(
recordDetailEntity
);
}
}
super
.
saveBefore
(
entity
,
model
,
context
);
}
@Override
protected
int
editAfter
(
Long
id
,
Map
<
String
,
Object
>
model
,
AttendanceRecordErrorEntity
entity
,
Context
context
)
throws
AppException
{
this
.
addDict
(
model
,
"errorStatus"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceRecordDetail"
,
"goWorkResult"
));
...
...
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