Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
04c5f577
Commit
04c5f577
authored
Sep 27, 2021
by
chenhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加查询当前登录用户所能执行的所有任务列表
parent
cca8a9b0
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
14 deletions
+73
-14
WorkFlowEnum.java
.../com/yeejoin/amos/boot/biz/common/enums/WorkFlowEnum.java
+1
-0
IWorkflowExcuteService.java
.../amos/boot/biz/common/service/IWorkflowExcuteService.java
+9
-0
WorkflowExcuteServiceImpl.java
...ot/biz/common/service/impl/WorkflowExcuteServiceImpl.java
+53
-14
WorkflowFeignService.java
.../boot/biz/common/workflow/feign/WorkflowFeignService.java
+10
-0
No files found.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/enums/WorkFlowEnum.java
View file @
04c5f577
...
@@ -17,6 +17,7 @@ public enum WorkFlowEnum {
...
@@ -17,6 +17,7 @@ public enum WorkFlowEnum {
GROUPID
(
"groupId"
,
"角色组的key"
),
GROUPID
(
"groupId"
,
"角色组的key"
),
GROUPNAME
(
"groupName"
,
"角色组的key"
),
GROUPNAME
(
"groupName"
,
"角色组的key"
),
NAME
(
"name"
,
"任务节点的key"
),
NAME
(
"name"
,
"任务节点的key"
),
PROCESSINSTANCEID
(
"processInstanceId"
,
""
),
ASSIGN
(
"assign"
,
"角色执行人key"
);
ASSIGN
(
"assign"
,
"角色执行人key"
);
private
String
code
;
//对应菜单组件名称
private
String
code
;
//对应菜单组件名称
...
...
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/service/IWorkflowExcuteService.java
View file @
04c5f577
...
@@ -51,5 +51,14 @@ public interface IWorkflowExcuteService{
...
@@ -51,5 +51,14 @@ public interface IWorkflowExcuteService{
*/
*/
boolean
excuteTask
(
String
procressId
,
String
condition
)
throws
Exception
;
boolean
excuteTask
(
String
procressId
,
String
condition
)
throws
Exception
;
/**
* 获取当前登录用户所能执行的任务信息列表
* @param key 流程定义的key ,例如 :fire_supervision 防火监督
* @param userInfo
* @return List<map<String,String>> eg: [{ "processInstanceId": "110d3af9-1f5a-11ec-a26e-b07b25133c48"}]
* @throws Exception
*/
public
Object
getCurrentUserAllTaskList
(
String
key
,
ReginParams
userInfo
)
throws
Exception
;
}
}
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/service/impl/WorkflowExcuteServiceImpl.java
View file @
04c5f577
...
@@ -64,23 +64,26 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
...
@@ -64,23 +64,26 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
for
(
Object
obj
:
taskDetailArray
)
{
for
(
Object
obj
:
taskDetailArray
)
{
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
if
(
WorkFlowEnum
.
制定计划内容
.
getCode
().
equals
(
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()))
||
WorkFlowEnum
.
现场确认
.
getCode
().
equals
(
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
())))
{
if
(
WorkFlowEnum
.
制定计划内容
.
getCode
().
equals
(
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()))
||
WorkFlowEnum
.
现场确认
.
getCode
().
equals
(
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
())))
{
String
groupName
=
getFristFlowDetail
(
processInstanceId
);
String
groupName
=
getFristFlowDetail
(
processInstanceId
);
if
(
StringUtils
.
isBlank
(
groupName
))
{
if
(
StringUtils
.
isNotBlank
(
groupName
)
&&
currentLoginUserRole
.
equals
(
groupName
))
{
map
.
put
(
WorkFlowEnum
.
TASKID
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
true
);
map
.
put
(
WorkFlowEnum
.
NAME
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()));
return
map
;
return
map
;
}
}
map
.
put
(
WorkFlowEnum
.
TASKID
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
map
.
put
(
WorkFlowEnum
.
CHECKFLAG
.
getCode
(),
true
);
map
.
put
(
WorkFlowEnum
.
NAME
.
getCode
(),
detail
.
getString
(
WorkFlowEnum
.
NAME
.
getCode
()));
return
map
;
}
}
JSONObject
taskGroupNameObject
=
workflowFeignService
.
getTaskGroupName
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
JSONObject
taskGroupNameObject
=
workflowFeignService
.
getTaskGroupName
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
// 获取流程中原本设置的当前节点的执行权限
// 获取流程中原本设置的当前节点的执行权限
JSONArray
taskGroupNameDetail
=
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
JSONArray
taskGroupNameDetail
=
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
// 如果拿不到当前任务的执行角色,再去获取当前任务有没有默认的执行人,如果都没有则返回校验失败
// 如果拿不到当前任务的执行角色,再去获取当前任务有没有默认的执行人,如果都没有则返回校验失败
if
(
ObjectUtils
.
isEmpty
(
taskGroupNameDetail
.
getJSONObject
(
0
)))
{
if
(
ObjectUtils
.
isEmpty
(
taskGroupNameDetail
.
getJSONObject
(
0
)))
{
JSONObject
taskAssignObject
=
workflowFeignService
.
getTaskAssign
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
JSONObject
taskAssignObject
=
workflowFeignService
String
assignUser
=
taskAssignObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
()).
getString
(
WorkFlowEnum
.
ASSIGN
.
getCode
());
.
getTaskAssign
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
String
assignUser
=
taskAssignObject
.
getJSONObject
(
WorkFlowEnum
.
DATA
.
getCode
())
.
getString
(
WorkFlowEnum
.
ASSIGN
.
getCode
());
if
(
StringUtils
.
isNotBlank
(
assignUser
))
{
if
(
StringUtils
.
isNotBlank
(
assignUser
))
{
// 如果当前登录人与当前任务的设定人不一定,则直接返回权限校验失败
// 如果当前登录人与当前任务的设定人不一定,则直接返回权限校验失败
if
(!
assignUser
.
contains
(
currentLoginUserId
))
{
if
(!
assignUser
.
contains
(
currentLoginUserId
))
{
...
@@ -94,7 +97,8 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
...
@@ -94,7 +97,8 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
}
}
continue
;
continue
;
}
}
String
defaultExecutionRoleProcess
=
taskGroupNameDetail
.
getJSONObject
(
0
).
getString
(
WorkFlowEnum
.
GROUPID
.
getCode
());
String
defaultExecutionRoleProcess
=
taskGroupNameDetail
.
getJSONObject
(
0
)
.
getString
(
WorkFlowEnum
.
GROUPID
.
getCode
());
// 判断当前登录人的角色是不是与流程中设置的当前任务节点权限一致,一致则执行,不一致则退出
// 判断当前登录人的角色是不是与流程中设置的当前任务节点权限一致,一致则执行,不一致则退出
if
(!
defaultExecutionRoleProcess
.
equals
(
currentLoginUserRole
))
{
if
(!
defaultExecutionRoleProcess
.
equals
(
currentLoginUserRole
))
{
continue
;
continue
;
...
@@ -132,7 +136,8 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
...
@@ -132,7 +136,8 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
JSONArray
taskDetailArray
=
teskObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
for
(
Object
obj
:
taskDetailArray
)
{
for
(
Object
obj
:
taskDetailArray
)
{
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
JSONObject
detail
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
JSONObject
taskGroupNameObject
=
workflowFeignService
.
getTaskGroupName
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
JSONObject
taskGroupNameObject
=
workflowFeignService
.
getTaskGroupName
(
detail
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
try
{
try
{
if
(
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())
==
null
if
(
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())
==
null
&&
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
()).
size
()
<
1
)
{
&&
taskGroupNameObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
()).
size
()
<
1
)
{
...
@@ -152,7 +157,8 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
...
@@ -152,7 +157,8 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
HashMap
<
String
,
Object
>
conditionMap
=
new
HashMap
<
String
,
Object
>();
HashMap
<
String
,
Object
>
conditionMap
=
new
HashMap
<
String
,
Object
>();
conditionMap
.
put
(
WorkFlowEnum
.
CONDITION
.
getCode
(),
condition
);
conditionMap
.
put
(
WorkFlowEnum
.
CONDITION
.
getCode
(),
condition
);
try
{
try
{
workflowFeignService
.
pickupAndCompleteTask
(
map
.
get
(
WorkFlowEnum
.
TASKID
.
getCode
()).
toString
(),
conditionMap
);
workflowFeignService
.
pickupAndCompleteTask
(
map
.
get
(
WorkFlowEnum
.
TASKID
.
getCode
()).
toString
(),
conditionMap
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"完成任务失败"
);
throw
new
RuntimeException
(
"完成任务失败"
);
}
}
...
@@ -188,8 +194,10 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
...
@@ -188,8 +194,10 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
if
(
ObjectUtils
.
isEmpty
(
historyTaskJsonObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())))
{
if
(
ObjectUtils
.
isEmpty
(
historyTaskJsonObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())))
{
return
null
;
return
null
;
}
}
JSONObject
historyTaskObject
=
historyTaskJsonObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
()).
getJSONObject
(
0
);
JSONObject
historyTaskObject
=
historyTaskJsonObject
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
())
JSONObject
detail
=
workflowFeignService
.
getHistoricIdentityLinksForTask
(
historyTaskObject
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
.
getJSONObject
(
0
);
JSONObject
detail
=
workflowFeignService
.
getHistoricIdentityLinksForTask
(
historyTaskObject
.
getString
(
WorkFlowEnum
.
ID
.
getCode
()));
JSONArray
resultArray
=
detail
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
JSONArray
resultArray
=
detail
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
if
(
ObjectUtils
.
isNotEmpty
(
resultArray
))
{
if
(
ObjectUtils
.
isNotEmpty
(
resultArray
))
{
for
(
int
i
=
0
;
i
<
resultArray
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
resultArray
.
size
();
i
++)
{
...
@@ -204,4 +212,35 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
...
@@ -204,4 +212,35 @@ public class WorkflowExcuteServiceImpl implements IWorkflowExcuteService {
}
}
return
null
;
return
null
;
}
}
/**
* 获取当前登录用户所能执行的任务信息列表
* @param key
* @param userInfo
* @return List<map<String,String>> eg: [{ "processInstanceId": "110d3af9-1f5a-11ec-a26e-b07b25133c48"}]
* @throws Exception
*/
public
Object
getCurrentUserAllTaskList
(
String
key
,
ReginParams
userInfo
)
throws
Exception
{
String
currentLoginUserRole
=
userInfo
.
getRole
().
getRoleName
();
JSONObject
CurrentUserAllTaskResult
=
null
;
try
{
//获取该登录用户已经分配到他名下和他对应的角色权限所能执行的任务组
CurrentUserAllTaskResult
=
workflowFeignService
.
getCurrentUserAllTaskList
(
key
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"获取当前角色所能执行的任务失败"
);
}
JSONArray
allTaskResultList
=
CurrentUserAllTaskResult
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
//获取制定计划节点任务的所有可执行任务
JSONObject
SpecifyTask
=
workflowFeignService
.
getTaskListForTaskName
(
WorkFlowEnum
.
制定计划内容
.
getCode
(),
key
);
JSONArray
SpecifyTaskArray
=
SpecifyTask
.
getJSONArray
(
WorkFlowEnum
.
DATA
.
getCode
());
//判断该执行任务的历史执行节点的角色是否与当前登录用户的角色一致,如果一致就添加到根据用户角色ID和userID所属的任务列表中
SpecifyTaskArray
.
stream
().
forEach
(
i
->
{
JSONObject
json
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
i
));
String
groupName
=
getFristFlowDetail
(
json
.
getString
(
WorkFlowEnum
.
PROCESSINSTANCEID
.
getCode
()));
if
(
StringUtils
.
isNotBlank
(
groupName
)
&&
currentLoginUserRole
.
equals
(
groupName
))
{
allTaskResultList
.
add
(
i
);
}
});
return
allTaskResultList
;
}
}
}
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/workflow/feign/WorkflowFeignService.java
View file @
04c5f577
...
@@ -203,4 +203,14 @@ public interface WorkflowFeignService {
...
@@ -203,4 +203,14 @@ public interface WorkflowFeignService {
*/
*/
@RequestMapping
(
value
=
"/activitiHistory/processes/historytasks/getHistoricTaskForProcessInstanceId/{processInstanceId}"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/activitiHistory/processes/historytasks/getHistoricTaskForProcessInstanceId/{processInstanceId}"
,
method
=
RequestMethod
.
GET
)
JSONObject
getHistoricTaskForProcessInstanceId
(
@PathVariable
(
"processInstanceId"
)
String
processInstanceId
)
throws
ParseException
;
JSONObject
getHistoricTaskForProcessInstanceId
(
@PathVariable
(
"processInstanceId"
)
String
processInstanceId
)
throws
ParseException
;
/**'
* 查询指定任务名称的任务列表
* @param taskName
* @return
* @throws Exception
*/
@RequestMapping
(
value
=
"/activitiHistory/getTaskListForTaskName/{taskName}/{definitionKey}"
,
method
=
RequestMethod
.
GET
)
JSONObject
getTaskListForTaskName
(
@PathVariable
String
taskName
,
@PathVariable
String
definitionKey
)
throws
Exception
;
}
}
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