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
b47cb406
Commit
b47cb406
authored
Jan 05, 2024
by
zhangsen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
工作流相关公共方法
parent
afaa7479
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
226 additions
and
0 deletions
+226
-0
WorkFlowPublicInfo.java
...ejoin/amos/boot/module/jg/api/dto/WorkFlowPublicInfo.java
+34
-0
PublicWorkFlowService.java
...oot/module/jg/biz/service/impl/PublicWorkFlowService.java
+192
-0
No files found.
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-api/src/main/java/com/yeejoin/amos/boot/module/jg/api/dto/WorkFlowPublicInfo.java
0 → 100644
View file @
b47cb406
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
api
.
dto
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
WorkFlowPublicInfo
{
/**
* 下一步执行角色集合
*/
private
List
<
String
>
nextRoleList
;
/**
* 下一步执行code
*/
private
String
nextTaskCode
;
/**
* 下一步执行名称
*/
private
String
nextTaskName
;
/**
* 所有执行过的角色
*/
private
List
<
String
>
allRoleList
;
/**
* 流程实例ID
*/
private
String
instanceId
;
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/PublicWorkFlowService.java
0 → 100644
View file @
b47cb406
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
import
com.yeejoin.amos.boot.module.jg.api.dto.WorkFlowPublicInfo
;
import
com.yeejoin.amos.boot.module.jg.flc.api.fegin.WorkFlowFeignService
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
com.yeejoin.amos.feign.workflow.Workflow
;
import
com.yeejoin.amos.feign.workflow.model.ActWorkflowBatchDTO
;
import
com.yeejoin.amos.feign.workflow.model.ActWorkflowStartDTO
;
import
com.yeejoin.amos.feign.workflow.model.AjaxResult
;
import
com.yeejoin.amos.feign.workflow.model.TaskResultDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
java.util.*
;
/**
* 工作流公共方法类
*/
@Slf4j
@Service
public
class
PublicWorkFlowService
{
@Autowired
WorkFlowFeignService
workFlowFeignService
;
@Autowired
RedisUtils
redisUtils
;
/**
* 批量启动工作流 并执行一步
*
* @param processDefinitionKey 流程key
* @param size 启动数量
* @param isTaskNameOrCode 是否需要下一步执行的任务code和name
*/
public
List
<
WorkFlowPublicInfo
>
batchStartWorkFlowPublic
(
String
processDefinitionKey
,
int
size
,
Boolean
isTaskNameOrCode
)
{
ActWorkflowBatchDTO
actWorkflowBatchDTO
=
new
ActWorkflowBatchDTO
();
List
<
ActWorkflowStartDTO
>
list
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
ActWorkflowStartDTO
dto
=
new
ActWorkflowStartDTO
();
dto
.
setProcessDefinitionKey
(
processDefinitionKey
);
dto
.
setBusinessKey
(
String
.
valueOf
(
i
));
list
.
add
(
dto
);
}
actWorkflowBatchDTO
.
setProcess
(
list
);
try
{
FeignClientResult
result
=
Workflow
.
taskV2Client
.
startByVariableBatch
(
actWorkflowBatchDTO
);
List
<
Object
>
returnList
=
(
List
<
Object
>)
result
.
getResult
();
List
<
WorkFlowPublicInfo
>
resultList
=
new
ArrayList
<>();
for
(
Object
obj
:
returnList
)
{
WorkFlowPublicInfo
resultMap
=
new
WorkFlowPublicInfo
();
JSONObject
jsonObject
=
JSON
.
parseObject
(
JSONObject
.
toJSONString
(
obj
));
String
instanceId
=
jsonObject
.
getString
(
"id"
);
//填充流程实例ID
resultMap
.
setInstanceId
(
instanceId
);
//发起节点相关信息 ----- 【第一节点信息/启动节点信息】
WorkFlowPublicInfo
firstInfo
=
getNextInfoPublic
(
instanceId
,
isTaskNameOrCode
);
// 推动下一个节点
AjaxResult
ajaxResult
=
Workflow
.
taskClient
.
getTask
(
instanceId
);
JSONObject
dataObject
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
ajaxResult
.
get
(
"data"
)));
String
taskId
=
dataObject
.
getString
(
"id"
);
//组装信息
TaskResultDTO
dto
=
new
TaskResultDTO
();
dto
.
setResultCode
(
"approvalStatus"
);
dto
.
setTaskId
(
taskId
);
dto
.
setComment
(
"提交流程"
);
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"approvalStatus"
,
"0"
);
dto
.
setVariable
(
map
);
//执行流程
AjaxResult
ajaxResult1
=
null
;
try
{
ajaxResult1
=
Workflow
.
taskClient
.
completeByTask
(
taskId
,
dto
);
if
(
ajaxResult1
.
get
(
"code"
).
equals
(
200
))
{
//第二节点相关信息 ----- 【第二节点信息】
WorkFlowPublicInfo
nextInfo
=
getNextInfoPublic
(
instanceId
,
isTaskNameOrCode
);
resultMap
.
setNextTaskName
(
nextInfo
.
getNextTaskName
());
resultMap
.
setNextTaskCode
(
nextInfo
.
getNextTaskCode
());
resultMap
.
setNextRoleList
(
nextInfo
.
getNextRoleList
());
List
<
String
>
firstRoleList
=
firstInfo
.
getNextRoleList
();
firstRoleList
.
addAll
(
nextInfo
.
getNextRoleList
());
resultMap
.
setAllRoleList
(
firstRoleList
);
resultList
.
add
(
resultMap
);
}
else
{
log
.
error
(
"提交失败"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"提交失败:{}"
,
e
);
}
}
return
resultList
;
}
catch
(
Exception
e
)
{
log
.
error
(
"提交失败:{}"
,
e
);
}
return
Collections
.
emptyList
();
}
/**
* 工作流执行操作 【包括通过和驳回】
*
* @param instanceId 流程实例ID
* @param operate 提交、0、1 0-通过、1-驳回、提交-驳回、撤回后提交
* @param comment 内容
*/
public
WorkFlowPublicInfo
flowExecutePublic
(
String
instanceId
,
String
operate
,
String
comment
)
{
try
{
AjaxResult
task
=
Workflow
.
taskClient
.
getTaskNoAuth
(
instanceId
);
JSONObject
nextTask
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
task
.
get
(
"data"
)));
String
taskId
=
nextTask
.
getString
(
"id"
);
//组装信息
TaskResultDTO
dto
=
new
TaskResultDTO
();
dto
.
setResultCode
(
"approvalStatus"
);
dto
.
setTaskId
(
taskId
);
dto
.
setComment
(
comment
);
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"approvalStatus"
,
operate
);
dto
.
setVariable
(
map
);
//执行流程
Workflow
.
taskClient
.
completeByTask
(
taskId
,
dto
);
return
getNextInfoPublic
(
instanceId
,
Boolean
.
TRUE
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
new
WorkFlowPublicInfo
();
}
/**
* 撤回
*
* @param instanceId 流程实例ID
*/
public
WorkFlowPublicInfo
revocationPublic
(
String
instanceId
)
{
try
{
workFlowFeignService
.
rollBack
(
instanceId
);
return
getNextInfoPublic
(
instanceId
,
true
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
new
WorkFlowPublicInfo
();
}
/**
* 根据instanceId查询下一步执行节点需要的信息
*
* @param instanceId 流程实例ID
* @param isTaskNameOrCode 是否需要code和name
* @return 具体信息
*/
public
WorkFlowPublicInfo
getNextInfoPublic
(
String
instanceId
,
Boolean
isTaskNameOrCode
)
{
WorkFlowPublicInfo
workFlowPublicInfo
=
new
WorkFlowPublicInfo
();
// 查询下节点信息
AjaxResult
aj
=
Workflow
.
taskClient
.
getTaskNoAuth
(
instanceId
);
JSONObject
nextTask
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
aj
.
get
(
"data"
)));
if
(!
ObjectUtils
.
isEmpty
(
nextTask
))
{
String
nextTaskId
=
nextTask
.
getString
(
"id"
);
FeignClientResult
<
JSONObject
>
nodeInfo
=
workFlowFeignService
.
getNodeInfo
(
nextTaskId
);
JSONObject
result
=
nodeInfo
.
getResult
();
Map
<
String
,
Object
>
taskInfo
=
(
Map
<
String
,
Object
>)
result
.
get
(
"taskInfo"
);
workFlowPublicInfo
.
setNextTaskCode
(
String
.
valueOf
(
taskInfo
.
get
(
"taskDefinitionKey"
)));
AjaxResult
taskGroupName
=
Workflow
.
taskClient
.
getTaskGroupName
(
nextTaskId
);
//填充下一步任务名称
workFlowPublicInfo
.
setNextTaskName
(
nextTask
.
getString
(
"name"
));
JSONArray
data
=
JSON
.
parseArray
(
JSON
.
toJSONString
(
taskGroupName
.
get
(
"data"
)));
List
<
String
>
roleListFirst
=
new
ArrayList
<>();
for
(
Object
datum
:
data
)
{
if
(((
Map
)
datum
).
containsKey
(
"groupId"
))
{
roleListFirst
.
add
(((
Map
)
datum
).
get
(
"groupId"
).
toString
());
}
}
//填充下一步执行权限角色ID集合
workFlowPublicInfo
.
setNextRoleList
(
roleListFirst
);
}
return
workFlowPublicInfo
;
}
}
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