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
f53098fa
Commit
f53098fa
authored
Aug 01, 2023
by
周亚武
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
钉钉请假撤销流程逻辑出来
parent
5e32ade9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
73 additions
and
19 deletions
+73
-19
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java
.../module/attendance/dingmsg/api/DingMessageController.java
+73
-19
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java
View file @
f53098fa
...
...
@@ -122,8 +122,7 @@ public class DingMessageController {
GetProcessInstanceResponseBody
.
GetProcessInstanceResponseBodyResult
result
=
rest
.
getData
();
log
.
info
(
"审批详情:"
+
JSONObject
.
toJSONString
(
result
)
);
AttendanceLeaveRecordEntity
leaveRecordEntity
=
new
AttendanceLeaveRecordEntity
();
AttendanceVacationBalanceEntity
attendanceVacationBalanceEntity
=
new
AttendanceVacationBalanceEntity
();
attendanceVacationBalanceEntity
.
initAttrValue
();
leaveRecordEntity
.
initAttrValue
();
leaveRecordEntity
.
setRemark
(
processInstanceId
);
//将钉钉的事物id作为备注填入数据库
...
...
@@ -139,17 +138,13 @@ public class DingMessageController {
leaveRecordEntity
.
setDeptName
(
staffEntity
.
getDeptName
());
leaveRecordEntity
.
setPhoneNumber
(
staffEntity
.
getPhoneNumber
());
attendanceVacationBalanceEntity
.
setStaffId
(
staffEntity
.
getId
());
attendanceVacationBalanceEntity
.
setStaffName
(
staffEntity
.
getName
());
attendanceVacationBalanceEntity
.
setDeptId
(
staffEntity
.
getDeptId
());
attendanceVacationBalanceEntity
.
setDeptName
(
staffEntity
.
getDeptName
());
attendanceVacationBalanceEntity
.
setEntryTime
(
staffEntity
.
getEntryDate
());
if
(
result
.
getTasks
().
size
()
>
0
){
if
(
result
.
getTasks
().
get
(
0
).
getCreateTime
()
!=
null
&&
result
.
getTasks
().
get
(
0
).
getFinishTime
()
!=
null
){
Date
startTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getCreateTime
(),
"yyyy-MM-dd'T'HH:mm'Z'"
);
Date
startTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getCreateTime
(),
"yyyy-MM-dd'T'HH:mm'Z'"
,
false
);
Date
endTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getFinishTime
(),
"yyyy-MM-dd'T'HH:mm'Z'"
);
Date
endTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getFinishTime
(),
"yyyy-MM-dd'T'HH:mm'Z'"
,
false
);
leaveRecordEntity
.
setStartTime
(
startTime
);
leaveRecordEntity
.
setEndTime
(
endTime
);
leaveRecordEntity
.
setDuration
((
int
)
((
endTime
.
getTime
()
-
startTime
.
getTime
())/
1000
));
...
...
@@ -161,15 +156,27 @@ public class DingMessageController {
if
(
result
.
getFormComponentValues
().
size
()
>
0
){
JSONArray
jsonArray
=
JSONArray
.
parseArray
(
result
.
getFormComponentValues
().
get
(
0
).
getValue
());
if
(
jsonArray
.
size
()
>
0
){
Date
startTime1
=
dateFormat
(
jsonArray
.
get
(
0
).
toString
(),
"yyyy-MM-dd HH:mm"
);
Date
startTime1
=
dateFormat
(
jsonArray
.
get
(
0
).
toString
(),
"yyyy-MM-dd HH:mm"
,
true
);
leaveRecordEntity
.
setStartTime
(
startTime1
);
}
if
(
jsonArray
.
size
()
>
1
){
Date
endTime1
=
dateFormat
(
jsonArray
.
get
(
1
).
toString
(),
"yyyy-MM-dd HH:mm"
);
Date
endTime1
=
dateFormat
(
jsonArray
.
get
(
1
).
toString
(),
"yyyy-MM-dd HH:mm"
,
false
);
leaveRecordEntity
.
setEndTime
(
endTime1
);
}
if
(
jsonArray
.
size
()
>
2
){
leaveRecordEntity
.
setDuration
((
int
)
(
Float
.
parseFloat
(
jsonArray
.
get
(
2
).
toString
())*
60
*
60
));
//小时转换成秒
if
(
jsonArray
.
size
()
>
3
){
switch
(
jsonArray
.
get
(
3
).
toString
()){
case
"halfDay"
:
case
"day"
:
leaveRecordEntity
.
setDuration
((
int
)
(
Float
.
parseFloat
(
jsonArray
.
get
(
2
).
toString
())*
60
*
60
*
24
));
//小时转换成秒
break
;
default
:
//除了按天和半天计算的假期 其余都是按小时返回
leaveRecordEntity
.
setDuration
((
int
)
(
Float
.
parseFloat
(
jsonArray
.
get
(
2
).
toString
())*
60
*
60
));
//小时转换成秒
break
;
}
}
}
if
(
jsonArray
.
size
()
>
4
){
leave_name
=
jsonArray
.
get
(
4
).
toString
();
...
...
@@ -255,9 +262,7 @@ public class DingMessageController {
}
else
if
(
result
.
getFormComponentValues
().
size
()
>
1
)
{
//请假理由
GetProcessInstanceResponseBody
.
GetProcessInstanceResponseBodyResultFormComponentValues
resonEntity
=
result
.
getFormComponentValues
().
get
(
1
);
if
(
resonEntity
.
getName
().
equals
(
"请假事由"
)){
leaveRecordEntity
.
setReason
(
resonEntity
.
getValue
());
}
leaveRecordEntity
.
setReason
(
resonEntity
.
getValue
());
}
else
if
(
result
.
getFormComponentValues
().
size
()
>
2
)
{
//上传的附件
GetProcessInstanceResponseBody
.
GetProcessInstanceResponseBodyResultFormComponentValues
picEntity
=
result
.
getFormComponentValues
().
get
(
2
);
if
(
picEntity
.
getName
().
equals
(
"图片"
)
&&
picEntity
.
getValue
()
!=
null
){
...
...
@@ -274,11 +279,26 @@ public class DingMessageController {
}
if
(
result
.
getResult
().
compareToIgnoreCase
(
"AGREE"
)
==
0
){
leaveRecordEntity
.
setAuditResult
(
1
);
if
(
result
.
getTasks
().
size
()
>
1
){
if
(
result
.
getTasks
().
get
(
1
).
getStatus
().
compareToIgnoreCase
(
"CANCELED"
)
==
0
){
leaveRecordEntity
.
setAuditResult
(
4
);
//撤销审批完成
}
else
{
leaveRecordEntity
.
setAuditResult
(
1
);
}
}
}
else
if
(
result
.
equals
(
""
)){
//撤销假期审批中result会为空 撤销审批通过后result为AGREE
if
(
result
.
getTasks
().
size
()
>
1
){
if
(
result
.
getTasks
().
get
(
1
).
getStatus
().
compareToIgnoreCase
(
"CANCELED"
)
==
0
){
leaveRecordEntity
.
setAuditResult
(
3
);
//撤销审批中
}
}
}
else
{
leaveRecordEntity
.
setAuditResult
(
2
);
leaveRecordEntity
.
setAuditResult
(
2
);
//请假审批中
}
log
.
info
(
"钉钉返回的result:"
+
result
.
getResult
()+
"---auditresult:"
+
leaveRecordEntity
.
getAuditResult
());
leaveRecordEntity
.
setAuditDesc
(
result
.
getOperationRecords
().
get
(
0
).
getRemark
());
...
...
@@ -298,16 +318,30 @@ public class DingMessageController {
attendanceLeaveRecordService
.
update
(
leaveRecordEntity
);
}
//假期余额
AttendanceVacationBalanceEntity
attendanceVacationBalanceEntity
=
new
AttendanceVacationBalanceEntity
();
//查询假期余额
Rest
<
OapiAttendanceVacationQuotaListResponse
.
OapiLeaveQuotaUserListVo
>
leaveRecordsResponseBodyResultRest
=
dingPersonService
.
getLeaveRecordByUserId
(
result
.
getOriginatorUserId
(),
leave_code
);
AttendanceVacationBalanceEntity
balanceEntity
=
balanceService
.
selectOne
(
new
AttendanceVacationBalanceQuery
().
staffId
(
staffEntity
.
getId
()));
if
(
ObjectUtils
.
isEmpty
(
balanceEntity
)){
//先判断数据库里没有这个人的请假记录就初始化对象
attendanceVacationBalanceEntity
.
initAttrValue
();
}
attendanceVacationBalanceEntity
.
setStaffId
(
staffEntity
.
getId
());
attendanceVacationBalanceEntity
.
setStaffName
(
staffEntity
.
getName
());
attendanceVacationBalanceEntity
.
setDeptId
(
staffEntity
.
getDeptId
());
attendanceVacationBalanceEntity
.
setDeptName
(
staffEntity
.
getDeptName
());
attendanceVacationBalanceEntity
.
setEntryTime
(
staffEntity
.
getEntryDate
());
if
(
leaveRecordsResponseBodyResultRest
.
getCode
()
==
Rest
.
SUCCESS
){
OapiAttendanceVacationQuotaListResponse
.
OapiLeaveQuotaUserListVo
result1
=
leaveRecordsResponseBodyResultRest
.
getData
();
double
leaveBlance
=
0
;
//如果钉钉有假期余额就写入钉钉返回的余额 否则用数据库表数据减去当前请假的天数
if
(
result1
.
getLeaveQuotas
()
!=
null
&&
result1
.
getLeaveQuotas
().
size
()
>
0
){
leaveBlance
=
(
result1
.
getLeaveQuotas
().
get
(
0
).
getQuotaNumPerDay
()
-
result1
.
getLeaveQuotas
().
get
(
0
).
getUsedNumPerDay
())/
100
;
if
(
leaveRecordEntity
.
getAuditResult
()
==
4
)
{
//撤销休假 要把已经扣除的假期加回来
leaveBlance
=
(
result1
.
getLeaveQuotas
().
get
(
0
).
getQuotaNumPerDay
()
+
result1
.
getLeaveQuotas
().
get
(
0
).
getUsedNumPerDay
())/
100
;
}
else
{
leaveBlance
=
(
result1
.
getLeaveQuotas
().
get
(
0
).
getQuotaNumPerDay
()
-
result1
.
getLeaveQuotas
().
get
(
0
).
getUsedNumPerDay
())/
100
;
}
}
switch
(
leave_name
)
{
...
...
@@ -586,7 +620,27 @@ public class DingMessageController {
return
days
;
}
private
Date
dateFormat
(
String
dateString
,
String
format
){
/**
*
* @param dateString
* @param format
* @param tag 标志位 是否为开始时间 如是开始时间 2023-08-03 上午 转换成 2023-08-03 9:00 如不是是开始时间 2023-08-03 上午 转换成 2023-08-03 12:00
* @return
*/
private
Date
dateFormat
(
String
dateString
,
String
format
,
boolean
tag
){
if
(
dateString
.
contains
(
"上午"
)){
if
(
tag
){
dateString
=
dateString
.
replace
(
"上午"
,
"09:00"
);
}
else
{
dateString
=
dateString
.
replace
(
"上午"
,
"12:00"
);
}
}
else
{
if
(
tag
){
dateString
=
dateString
.
replace
(
"下午"
,
"13:00"
);
}
else
{
dateString
=
dateString
.
replace
(
"下午"
,
"18:00"
);
}
}
SimpleDateFormat
dateFormat_
=
new
SimpleDateFormat
(
format
);
Date
t
;
...
...
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