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
1b5509dc
Commit
1b5509dc
authored
Jul 19, 2023
by
姬鋆屾
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.scsmile.cn/zxf/attendance-performance-platform
parents
2e5b98ec
2958e1ef
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
235 additions
and
44 deletions
+235
-44
attendance-performance-manager-ui/admin/src/views/homeCharts/record/list.vue
...nce-manager-ui/admin/src/views/homeCharts/record/list.vue
+47
-29
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java
.../module/attendance/dingmsg/api/DingMessageController.java
+172
-10
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceLeaveRecordController.java
...odule/attendance/web/AttendanceLeaveRecordController.java
+7
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/IDingPersonService.java
.../module/dingding/personal/service/IDingPersonService.java
+3
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java
...dingding/personal/service/impl/DingPersonServiceImpl.java
+6
-4
No files found.
attendance-performance-manager-ui/admin/src/views/homeCharts/record/list.vue
View file @
1b5509dc
...
@@ -192,7 +192,7 @@
...
@@ -192,7 +192,7 @@
<el-form
ref=
"form"
:model=
"deptForm"
label-width=
"100px"
>
<el-form
ref=
"form"
:model=
"deptForm"
label-width=
"100px"
>
<el-form-item
label=
"请选择部门"
>
<el-form-item
label=
"请选择部门"
>
<el-select
<el-select
v-model=
"deptForm.dept"
v-model=
"deptForm.dept
Id
"
placeholder=
"请选择部门"
placeholder=
"请选择部门"
style=
"width: 100%"
style=
"width: 100%"
clearable
clearable
...
@@ -336,7 +336,7 @@
...
@@ -336,7 +336,7 @@
<div
class=
"title"
>
个人绩效总分排名TOP10
</div>
<div
class=
"title"
>
个人绩效总分排名TOP10
</div>
<dv-scroll-ranking-board
<dv-scroll-ranking-board
:config=
"personConfig"
:config=
"personConfig"
style=
"width: 100%; height:200px"
style=
"width: 100%; height:
200px"
/>
/>
</div>
</div>
<div
class=
"right_mid"
>
<div
class=
"right_mid"
>
...
@@ -457,7 +457,7 @@ export default {
...
@@ -457,7 +457,7 @@ export default {
reportType
:
1
,
// 生成报告类型
reportType
:
1
,
// 生成报告类型
// 部门报告表单
// 部门报告表单
deptForm
:
{
deptForm
:
{
dept
:
""
,
dept
Id
:
""
,
resource
:
1
,
resource
:
1
,
year
:
""
,
year
:
""
,
month
:
""
,
month
:
""
,
...
@@ -738,7 +738,7 @@ export default {
...
@@ -738,7 +738,7 @@ export default {
areaStyle
:
{
color
:
"
#56A3F1
"
},
//雷达覆盖区域背景颜色
areaStyle
:
{
color
:
"
#56A3F1
"
},
//雷达覆盖区域背景颜色
label
:
{
label
:
{
show
:
false
,
show
:
false
,
formatter
:
function
(
params
)
{
formatter
:
function
(
params
)
{
return
params
.
value
;
return
params
.
value
;
},
},
},
},
...
@@ -993,7 +993,7 @@ export default {
...
@@ -993,7 +993,7 @@ export default {
itemStyle
:
{
itemStyle
:
{
normal
:
{
normal
:
{
// 定制显示(按顺序)
// 定制显示(按顺序)
color
:
function
(
params
)
{
color
:
function
(
params
)
{
return
colorList
[
params
.
dataIndex
];
return
colorList
[
params
.
dataIndex
];
},
},
},
},
...
@@ -1074,11 +1074,26 @@ export default {
...
@@ -1074,11 +1074,26 @@ export default {
delete
this
.
deptForm
.
year
;
delete
this
.
deptForm
.
year
;
delete
this
.
deptForm
.
month
;
delete
this
.
deptForm
.
month
;
}
}
this
.
dataSection
(
this
.
getDeptPerformList
,
this
.
deptForm
,
(
data
)
=>
{
// this.dataSection(this.getDeptPerformList, this.deptForm, (data) => {
if
(
!
data
.
length
)
return
;
// if (!data.length) {
// this.$message.warning("暂无该评估");
// return;
// }
// exportExcel(
// this.deptExcelHeader,
// this.deptFilterVal,
// data,
// "部门评估报告" + this.$moment().format("YYYYMMDDHHmmss")
// );
// });
this
.
dataSection
(
this
.
getPersonPerformList
,
this
.
deptForm
,
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无该评估
"
);
return
;
}
exportExcel
(
exportExcel
(
this
.
dept
ExcelHeader
,
this
.
person
ExcelHeader
,
this
.
dept
FilterVal
,
this
.
person
FilterVal
,
data
,
data
,
"
部门评估报告
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
"
部门评估报告
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
);
);
...
@@ -1097,7 +1112,10 @@ export default {
...
@@ -1097,7 +1112,10 @@ export default {
delete
this
.
personForm
.
month
;
delete
this
.
personForm
.
month
;
}
}
this
.
dataSection
(
this
.
getPersonPerformList
,
this
.
personForm
,
(
data
)
=>
{
this
.
dataSection
(
this
.
getPersonPerformList
,
this
.
personForm
,
(
data
)
=>
{
if
(
!
data
.
length
)
return
;
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无该评估
"
);
return
;
}
exportExcel
(
exportExcel
(
this
.
personExcelHeader
,
this
.
personExcelHeader
,
this
.
personFilterVal
,
this
.
personFilterVal
,
...
@@ -1107,25 +1125,25 @@ export default {
...
@@ -1107,25 +1125,25 @@ export default {
});
});
},
},
// 获取部门报告列表
// 获取部门报告列表
async
getDeptPerformList
(
page
,
size
,
searchForm
)
{
//
async getDeptPerformList(page, size, searchForm) {
let
list
=
[];
//
let list = [];
let
listTotal
=
0
;
//
let listTotal = 0;
await
this
.
$post
(
"
/dept/perform/stat/list
"
,
{
//
await this.$post("/dept/perform/stat/list", {
page
:
page
||
1
,
//
page: page || 1,
size
:
size
||
100
,
//
size: size || 100,
...
searchForm
,
//
...searchForm,
}).
then
((
res
)
=>
{
//
}).then((res) => {
if
(
res
.
code
==
1
)
{
//
if (res.code == 1) {
let
{
data
,
total
}
=
res
.
data
;
//
let { data, total } = res.data;
list
=
data
;
//
list = data;
listTotal
=
total
;
//
listTotal = total;
}
//
}
});
//
});
return
{
//
return {
data
:
list
,
//
data: list,
total
:
listTotal
,
//
total: listTotal,
};
//
};
},
//
},
// 获取个人报告列表
// 获取个人报告列表
async
getPersonPerformList
(
page
,
size
,
searchForm
)
{
async
getPersonPerformList
(
page
,
size
,
searchForm
)
{
let
list
=
[];
let
list
=
[];
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java
View file @
1b5509dc
package
com.mortals.xhx.module.attendance.dingmsg.api
;
package
com.mortals.xhx.module.attendance.dingmsg.api
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody
;
import
com.dingtalk.api.DefaultDingTalkClient
;
import
com.dingtalk.api.DefaultDingTalkClient
;
import
com.dingtalk.api.DingTalkClient
;
import
com.dingtalk.api.DingTalkClient
;
import
com.dingtalk.api.request.OapiGettokenRequest
;
import
com.dingtalk.api.request.OapiGettokenRequest
;
...
@@ -13,18 +16,29 @@ import com.mortals.xhx.common.pdu.ApiRespPdu;
...
@@ -13,18 +16,29 @@ import com.mortals.xhx.common.pdu.ApiRespPdu;
import
com.mortals.xhx.module.attendance.dingmsg.DingCallbackCrypto
;
import
com.mortals.xhx.module.attendance.dingmsg.DingCallbackCrypto
;
import
com.mortals.xhx.module.attendance.dingmsg.dingmsgreq.DingResponsMeassageReq
;
import
com.mortals.xhx.module.attendance.dingmsg.dingmsgreq.DingResponsMeassageReq
;
import
com.mortals.xhx.module.attendance.dingmsg.dingmsgreq.EncryptReq
;
import
com.mortals.xhx.module.attendance.dingmsg.dingmsgreq.EncryptReq
;
import
com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordQuery
;
import
com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService
;
import
com.mortals.xhx.module.dingding.personal.service.IDingPersonService
;
import
com.mortals.xhx.module.dingding.personal.service.IDingPersonService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.Log
;
import
org.apache.poi.ss.formula.functions.T
;
import
org.checkerframework.checker.units.qual.A
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.Map
;
import
java.util.Map
;
import
static
cn
.
hutool
.
core
.
date
.
DatePattern
.*;
/**
/**
*
*
* 接收钉钉的审批消息推送
* 接收钉钉的审批消息推送
...
@@ -38,6 +52,9 @@ public class DingMessageController {
...
@@ -38,6 +52,9 @@ public class DingMessageController {
@Autowired
@Autowired
private
IDingPersonService
dingPersonService
;
private
IDingPersonService
dingPersonService
;
@Autowired
private
AttendanceLeaveRecordService
attendanceLeaveRecordService
;
/**
/**
* appKey
* appKey
...
@@ -67,7 +84,7 @@ public class DingMessageController {
...
@@ -67,7 +84,7 @@ public class DingMessageController {
@RequestParam
(
value
=
"timestamp"
,
required
=
false
)
String
timeStamp
,
@RequestParam
(
value
=
"timestamp"
,
required
=
false
)
String
timeStamp
,
@RequestParam
(
value
=
"nonce"
,
required
=
false
)
String
nonce
,
@RequestParam
(
value
=
"nonce"
,
required
=
false
)
String
nonce
,
@RequestBody
(
required
=
false
)
JSONObject
json
)
{
@RequestBody
(
required
=
false
)
JSONObject
json
)
{
log
.
info
(
"钉钉推送参数
"
+
msg_signature
+
"---"
+
timeStamp
+
"---"
+
nonce
+
"---"
+
json
.
toJSONString
()
);
// log.info("钉钉推送参数:
" + msg_signature+"---"+timeStamp+"---"+nonce+"---"+json.toJSONString() );
try
{
try
{
// 从http请求中获取加解密参数
// 从http请求中获取加解密参数
DingCallbackCrypto
callbackCrypto
=
new
DingCallbackCrypto
(
token
,
aesKey
,
appKey
);
DingCallbackCrypto
callbackCrypto
=
new
DingCallbackCrypto
(
token
,
aesKey
,
appKey
);
...
@@ -77,20 +94,153 @@ public class DingMessageController {
...
@@ -77,20 +94,153 @@ public class DingMessageController {
// 反序列化回调事件json数据
// 反序列化回调事件json数据
JSONObject
eventJson
=
JSON
.
parseObject
(
decryptMsg
);
JSONObject
eventJson
=
JSON
.
parseObject
(
decryptMsg
);
String
eventType
=
eventJson
.
getString
(
"EventType"
);
String
eventType
=
eventJson
.
getString
(
"EventType"
);
String
processInstanceId
=
eventJson
.
getString
(
"processInstanceId"
);
// 根据EventType分类处理
// 根据EventType分类处理
if
(
"check_url"
.
equals
(
eventType
))
{
if
(
"bpms_instance_change"
.
equals
(
eventType
)){
//请假等需要审批的消息
// 测试回调url的正确性
log
.
info
(
"测试回调url的正确性"
);
}
else
if
(
"bpms_instance_change"
.
equals
(
eventType
)){
//请假等需要审批的消息
// 处理审批实例始末(审批任务开始、结束)
// 处理审批实例始末(审批任务开始、结束)
// 存入数据库
// 存入数据库
// log.info("发生了:" + eventType + "事件" );
// log.info("发生了:" + eventType + "事件" );
// log.info("返回处理参数:" + eventJson.toJSONString() );
if
(
processInstanceId
!=
null
){
if
(
eventJson
.
getString
(
"processInstanceId"
)
!=
null
){
Rest
<
GetProcessInstanceResponseBody
.
GetProcessInstanceResponseBodyResult
>
rest
=
dingPersonService
.
getOaRecordsById
(
processInstanceId
);
Rest
<
String
>
rest
=
dingPersonService
.
getOaRecordsById
(
eventJson
.
getString
(
"processInstanceId"
));
if
(
rest
.
getCode
()
==
Rest
.
SUCCESS
){
log
.
info
(
"审批详情:"
+
rest
.
getData
());
GetProcessInstanceResponseBody
.
GetProcessInstanceResponseBodyResult
result
=
rest
.
getData
();
log
.
info
(
"审批详情:"
+
JSONObject
.
toJSONString
(
result
)
);
AttendanceLeaveRecordEntity
leaveRecordEntity
=
new
AttendanceLeaveRecordEntity
();
leaveRecordEntity
.
initAttrValue
();
leaveRecordEntity
.
setRemark
(
processInstanceId
);
//将钉钉的事物id作为备注填入数据库
leaveRecordEntity
.
setLeavePersonId
(
Long
.
parseLong
(
result
.
getOriginatorUserId
()));
leaveRecordEntity
.
setLeavePerson
(
result
.
getTitle
().
substring
(
0
,
result
.
getTitle
().
indexOf
(
"提交"
)));
leaveRecordEntity
.
setDeptId
(
Long
.
parseLong
(
result
.
getOriginatorDeptId
()));
leaveRecordEntity
.
setDeptName
(
result
.
getOriginatorDeptName
());
if
(
result
.
getTasks
().
size
()
>
0
){
Date
startTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getCreateTime
());
Date
endTime
=
dateFormat
(
result
.
getTasks
().
get
(
0
).
getFinishTime
());
leaveRecordEntity
.
setStartTime
(
startTime
);
leaveRecordEntity
.
setEndTime
(
endTime
);
leaveRecordEntity
.
setDuration
((
int
)
((
endTime
.
getTime
()
-
startTime
.
getTime
())/
1000
));
}
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
());
leaveRecordEntity
.
setStartTime
(
startTime1
);
}
if
(
jsonArray
.
size
()
>
1
){
Date
endTime1
=
dateFormat
(
jsonArray
.
get
(
1
).
toString
());
leaveRecordEntity
.
setEndTime
(
endTime1
);
}
if
(
jsonArray
.
size
()
>
2
){
leaveRecordEntity
.
setDuration
((
int
)
(
Float
.
parseFloat
(
jsonArray
.
get
(
2
).
toString
())*
60
*
60
));
}
if
(
jsonArray
.
size
()
>
4
){
switch
(
jsonArray
.
get
(
4
).
toString
()){
case
"调休"
:
leaveRecordEntity
.
setLeaveType
(
2
);
break
;
case
"病假"
:
leaveRecordEntity
.
setLeaveType
(
3
);
break
;
case
"年假"
:
leaveRecordEntity
.
setLeaveType
(
4
);
break
;
case
"产假"
:
leaveRecordEntity
.
setLeaveType
(
5
);
break
;
case
"陪产假"
:
leaveRecordEntity
.
setLeaveType
(
6
);
break
;
case
"婚假"
:
leaveRecordEntity
.
setLeaveType
(
7
);
break
;
case
"例假"
:
leaveRecordEntity
.
setLeaveType
(
8
);
break
;
case
"哺乳假"
:
leaveRecordEntity
.
setLeaveType
(
9
);
break
;
case
"丧假"
:
leaveRecordEntity
.
setLeaveType
(
10
);
break
;
case
"回单位"
:
leaveRecordEntity
.
setLeaveType
(
11
);
break
;
case
"因公请假"
:
leaveRecordEntity
.
setLeaveType
(
12
);
break
;
case
"外出勘验"
:
leaveRecordEntity
.
setLeaveType
(
13
);
break
;
case
"值班补班"
:
leaveRecordEntity
.
setLeaveType
(
14
);
break
;
case
"体检"
:
leaveRecordEntity
.
setLeaveType
(
15
);
break
;
case
"隔离"
:
leaveRecordEntity
.
setLeaveType
(
16
);
break
;
case
"因公外出"
:
leaveRecordEntity
.
setLeaveType
(
17
);
break
;
case
"公休"
:
leaveRecordEntity
.
setLeaveType
(
18
);
break
;
case
"育儿假"
:
leaveRecordEntity
.
setLeaveType
(
19
);
break
;
case
"调回单位"
:
leaveRecordEntity
.
setLeaveType
(
20
);
break
;
case
"探亲假"
:
leaveRecordEntity
.
setLeaveType
(
21
);
break
;
default
:
leaveRecordEntity
.
setLeaveType
(
1
);
//默认事假
break
;
}
}
}
if
(
result
.
getStatus
().
equals
(
"NEW"
)
||
result
.
getStatus
().
equals
(
"RUNNING"
)){
leaveRecordEntity
.
setProcessStatus
(
1
);
}
else
if
(
result
.
getStatus
().
equals
(
"COMPLETED"
)
||
result
.
getStatus
().
equals
(
"CANCELED"
)
||
result
.
getStatus
().
equals
(
"TERMINATED"
)){
leaveRecordEntity
.
setProcessStatus
(
2
);
}
if
(
result
.
getResult
().
equals
(
"AGREE"
)){
leaveRecordEntity
.
setAuditResult
(
1
);
}
else
{
leaveRecordEntity
.
setAuditResult
(
2
);
}
leaveRecordEntity
.
setAuditDesc
(
result
.
getOperationRecords
().
get
(
0
).
getRemark
());
AttendanceLeaveRecordEntity
recordEntity
=
attendanceLeaveRecordService
.
selectOne
(
new
AttendanceLeaveRecordQuery
().
remark
(
processInstanceId
));
if
(
ObjectUtils
.
isEmpty
(
recordEntity
)){
leaveRecordEntity
.
setCreateTime
(
new
Date
());
leaveRecordEntity
.
setCreateUserId
(
1L
);
attendanceLeaveRecordService
.
save
(
leaveRecordEntity
);
}
else
{
leaveRecordEntity
.
setId
(
recordEntity
.
getId
());
leaveRecordEntity
.
setUpdateUserId
(
1L
);
leaveRecordEntity
.
setUpdateTime
(
new
Date
());
attendanceLeaveRecordService
.
update
(
leaveRecordEntity
);
}
}
}
}
}
}
else
{
else
{
...
@@ -109,4 +259,16 @@ public class DingMessageController {
...
@@ -109,4 +259,16 @@ public class DingMessageController {
}
}
private
Date
dateFormat
(
String
dateString
){
SimpleDateFormat
dateFormat_
=
new
SimpleDateFormat
(
"yyyy-MM-dd'T'HH:mm'Z'"
);
Date
t
;
try
{
t
=
dateFormat_
.
parse
(
dateString
);
return
t
;
}
catch
(
ParseException
e
)
{
return
new
Date
(
System
.
currentTimeMillis
());
}
}
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceLeaveRecordController.java
View file @
1b5509dc
...
@@ -2,6 +2,8 @@ package com.mortals.xhx.module.attendance.web;
...
@@ -2,6 +2,8 @@ package com.mortals.xhx.module.attendance.web;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.common.code.AppealResultEnum
;
import
com.mortals.xhx.common.code.ProcessStatusEnum
;
import
com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordEntity
;
import
com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService
;
import
com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
...
@@ -42,6 +44,11 @@ public class AttendanceLeaveRecordController extends BaseCRUDJsonBodyMappingCont
...
@@ -42,6 +44,11 @@ public class AttendanceLeaveRecordController extends BaseCRUDJsonBodyMappingCont
this
.
addDict
(
model
,
"deptId"
,
deptService
.
find
(
new
DeptQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getDeptName
(),(
o
,
n
)->
n
)));
this
.
addDict
(
model
,
"deptId"
,
deptService
.
find
(
new
DeptQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getDeptName
(),(
o
,
n
)->
n
)));
this
.
addDict
(
model
,
"approverId"
,
workmanService
.
find
(
new
WorkmanQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getName
(),(
o
,
n
)->
n
)));
this
.
addDict
(
model
,
"approverId"
,
workmanService
.
find
(
new
WorkmanQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getName
(),(
o
,
n
)->
n
)));
this
.
addDict
(
model
,
"leaveType"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceLeaveRecord"
,
"leaveType"
));
this
.
addDict
(
model
,
"leaveType"
,
paramService
.
getParamBySecondOrganize
(
"AttendanceLeaveRecord"
,
"leaveType"
));
this
.
addDict
(
model
,
"auditResult"
,
AppealResultEnum
.
getEnumMap
());
this
.
addDict
(
model
,
"processStatus"
,
ProcessStatusEnum
.
getEnumMap
());
super
.
init
(
model
,
context
);
super
.
init
(
model
,
context
);
}
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/IDingPersonService.java
View file @
1b5509dc
package
com.mortals.xhx.module.dingding.personal.service
;
package
com.mortals.xhx.module.dingding.personal.service
;
import
com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.xhx.module.dingding.IDingTalkService
;
import
com.mortals.xhx.module.dingding.IDingTalkService
;
import
com.mortals.xhx.module.dingding.personal.model.req.workmsg.WorkMsgReq
;
import
com.mortals.xhx.module.dingding.personal.model.req.workmsg.WorkMsgReq
;
...
@@ -8,6 +9,7 @@ import com.mortals.xhx.module.hik.person.model.req.org.OrgListReq;
...
@@ -8,6 +9,7 @@ import com.mortals.xhx.module.hik.person.model.req.org.OrgListReq;
import
com.mortals.xhx.module.hik.person.model.req.person.PersonReq
;
import
com.mortals.xhx.module.hik.person.model.req.person.PersonReq
;
import
com.mortals.xhx.module.hik.person.model.rsp.org.OrgDataInfo
;
import
com.mortals.xhx.module.hik.person.model.rsp.org.OrgDataInfo
;
import
com.mortals.xhx.module.hik.person.model.rsp.person.PersonDataInfo
;
import
com.mortals.xhx.module.hik.person.model.rsp.person.PersonDataInfo
;
import
org.apache.poi.ss.formula.functions.T
;
/**
/**
* 钉钉人事相关服务类
* 钉钉人事相关服务类
...
@@ -46,7 +48,7 @@ public interface IDingPersonService extends IDingTalkService {
...
@@ -46,7 +48,7 @@ public interface IDingPersonService extends IDingTalkService {
* @param processInstanceId 审批实例ID。
* @param processInstanceId 审批实例ID。
* @return
* @return
*/
*/
Rest
<
String
>
getOaRecordsById
(
String
processInstanceId
);
Rest
<
GetProcessInstanceResponseBody
.
GetProcessInstanceResponseBodyResult
>
getOaRecordsById
(
String
processInstanceId
);
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java
View file @
1b5509dc
...
@@ -2,6 +2,7 @@ package com.mortals.xhx.module.dingding.personal.service.impl;
...
@@ -2,6 +2,7 @@ package com.mortals.xhx.module.dingding.personal.service.impl;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponse
;
import
com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponse
;
import
com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody
;
import
com.aliyun.tea.TeaException
;
import
com.aliyun.tea.TeaException
;
import
com.dingtalk.api.DingTalkClient
;
import
com.dingtalk.api.DingTalkClient
;
import
com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request
;
import
com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request
;
...
@@ -17,6 +18,7 @@ import com.mortals.xhx.module.dingding.personal.service.IDingPersonService;
...
@@ -17,6 +18,7 @@ import com.mortals.xhx.module.dingding.personal.service.IDingPersonService;
import
com.taobao.api.ApiException
;
import
com.taobao.api.ApiException
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.Log
;
import
org.apache.poi.ss.formula.functions.T
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.ObjectUtils
;
...
@@ -114,15 +116,16 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
...
@@ -114,15 +116,16 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
* @return Client
* @return Client
* @throws Exception
* @throws Exception
*/
*/
public
static
com
.
aliyun
.
dingtalkworkflow_1_0
.
Client
createClient
()
throws
Exception
{
public
com
.
aliyun
.
dingtalkworkflow_1_0
.
Client
createClient
()
throws
Exception
{
com
.
aliyun
.
teaopenapi
.
models
.
Config
config
=
new
com
.
aliyun
.
teaopenapi
.
models
.
Config
();
com
.
aliyun
.
teaopenapi
.
models
.
Config
config
=
new
com
.
aliyun
.
teaopenapi
.
models
.
Config
();
config
.
protocol
=
"https"
;
config
.
protocol
=
"https"
;
config
.
regionId
=
"central"
;
config
.
regionId
=
"central"
;
config
.
endpoint
=
domain
;
return
new
com
.
aliyun
.
dingtalkworkflow_1_0
.
Client
(
config
);
return
new
com
.
aliyun
.
dingtalkworkflow_1_0
.
Client
(
config
);
}
}
@Override
@Override
public
Rest
<
String
>
getOaRecordsById
(
String
processInstanceId
)
{
public
Rest
<
GetProcessInstanceResponseBody
.
GetProcessInstanceResponseBodyResult
>
getOaRecordsById
(
String
processInstanceId
)
{
try
{
try
{
com
.
aliyun
.
dingtalkworkflow_1_0
.
Client
client
=
createClient
();
com
.
aliyun
.
dingtalkworkflow_1_0
.
Client
client
=
createClient
();
com
.
aliyun
.
dingtalkworkflow_1_0
.
models
.
GetProcessInstanceHeaders
getProcessInstanceHeaders
=
new
com
.
aliyun
.
dingtalkworkflow_1_0
.
models
.
GetProcessInstanceHeaders
();
com
.
aliyun
.
dingtalkworkflow_1_0
.
models
.
GetProcessInstanceHeaders
getProcessInstanceHeaders
=
new
com
.
aliyun
.
dingtalkworkflow_1_0
.
models
.
GetProcessInstanceHeaders
();
...
@@ -131,8 +134,7 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
...
@@ -131,8 +134,7 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
.
setProcessInstanceId
(
processInstanceId
);
.
setProcessInstanceId
(
processInstanceId
);
GetProcessInstanceResponse
rsp
=
client
.
getProcessInstanceWithOptions
(
getProcessInstanceRequest
,
getProcessInstanceHeaders
,
new
com
.
aliyun
.
teautil
.
models
.
RuntimeOptions
());
GetProcessInstanceResponse
rsp
=
client
.
getProcessInstanceWithOptions
(
getProcessInstanceRequest
,
getProcessInstanceHeaders
,
new
com
.
aliyun
.
teautil
.
models
.
RuntimeOptions
());
log
.
info
(
"根据id查询审批详情:"
,
rsp
.
getBody
().
getResult
().
toString
());
return
Rest
.
ok
(
"成功"
,
rsp
.
getBody
().
getResult
());
return
Rest
.
ok
(
"成功"
,
rsp
.
getBody
().
getResult
().
toString
());
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
info
(
"根据用户查询审批详情失败"
,
e
);
log
.
info
(
"根据用户查询审批详情失败"
,
e
);
return
Rest
.
fail
(
e
.
getMessage
());
return
Rest
.
fail
(
e
.
getMessage
());
...
...
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