Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zrch-risk-39
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
zrch-risk-39
Commits
9457bcbd
提交
9457bcbd
authored
2月 04, 2026
作者:
whydesc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
--工作流实现分支
上级
c9689b4d
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
374 行增加
和
54 行删除
+374
-54
InnerForm.vue
...isk-client-39/src/views/flowable/definition/InnerForm.vue
+2
-1
FlowInnerForm.vue
...t-39/src/views/flowable/task/components/FlowInnerForm.vue
+2
-2
TodoIndex.vue
...-39/src/views/flowable/task/todo/components/TodoIndex.vue
+144
-32
FlowNextDto.java
...va/org/jeecg/modules/flowable/domain/dto/FlowNextDto.java
+4
-0
FlowTaskVo.java
...java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java
+1
-0
FindNextNodeUtil.java
...ava/org/jeecg/modules/flowable/flow/FindNextNodeUtil.java
+105
-7
FlowInstanceServiceImpl.java
...odules/flowable/service/impl/FlowInstanceServiceImpl.java
+5
-3
FlowTaskServiceImpl.java
...cg/modules/flowable/service/impl/FlowTaskServiceImpl.java
+111
-9
没有找到文件。
zrch-risk-client-39/src/views/flowable/definition/InnerForm.vue
浏览文件 @
9457bcbd
...
...
@@ -12,7 +12,8 @@
import
{
ref
,
watch
}
from
"vue"
;
// import formCreate from "@form-create/ant-design-vue";
// import { default as formCreate } from '@form-create/ant-design-vue'
import
*
as
formCreate
from
'@form-create/ant-design-vue'
//import * as formCreate from '@form-create/ant-design-vue'
import
formCreate
from
'@form-create/ant-design-vue'
;
const
option
=
ref
([]);
const
rule
=
ref
([]);
...
...
zrch-risk-client-39/src/views/flowable/task/components/FlowInnerForm.vue
浏览文件 @
9457bcbd
...
...
@@ -10,9 +10,9 @@
<
script
setup
>
import
{
ref
,
watch
}
from
"vue"
;
//
import formCreate from "@form-create/ant-design-vue";
import
formCreate
from
"@form-create/ant-design-vue"
;
// import { default as formCreate } from '@form-create/ant-design-vue'
import
*
as
formCreate
from
'@form-create/ant-design-vue'
//
import * as formCreate from '@form-create/ant-design-vue'
const
option
=
ref
([]);
const
rule
=
ref
([]);
...
...
zrch-risk-client-39/src/views/flowable/task/todo/components/TodoIndex.vue
浏览文件 @
9457bcbd
...
...
@@ -24,11 +24,26 @@
</a-button>
</a-space>
</div>
<div
class=
"action-right"
>
<div
class=
"next-node-info"
>
<span
class=
"next-node-label"
>
下一节点:
</span>
<a-tag
color=
"blue"
class=
"next-node-tag"
>
<a-select
v-model:value=
"nextNodeNameSele"
placeholder=
"请选择下一个节点"
style=
"width: 100%"
@
change=
"handleChange"
v-if=
"shownextNodeNameSele"
>
<a-select-option
v-for=
"item in tableOptions"
:key=
"item.id"
:value=
"item.value"
>
{{ item.name }}
</a-select-option>
</a-select>
<a-tag
color=
"blue"
class=
"next-node-tag"
v-if=
"shownextNodeNametext"
>
{{ nextNodeName || '等待确定下一节点' }}
</a-tag>
</div>
...
...
@@ -225,11 +240,22 @@
const
loadingFlowChart
=
ref
(
false
);
const
formKey
=
ref
(
0
);
const
showApprovalUi
=
ref
(
true
);
const
flowData
=
ref
<
any
>
({});
const
flowRecordList
=
ref
<
any
[]
>
([]);
const
nextNodeName
=
ref
(
''
);
const
nextNode
=
ref
<
any
>
(
null
);
const
nextNodenum
=
ref
(
0
);
const
tableOptions
=
ref
([]);
const
nextNodeNameSele
=
ref
(
''
);
const
nextNodeNameSelevue
=
ref
(
0
);
const
shownextNodeNameSele
=
ref
(
true
);
const
shownextNodeNametext
=
ref
(
false
);
const
res0
=
ref
();
const
res1
=
ref
();
const
res3
=
ref
();
const
taskForm
=
reactive
({
returnTaskShow
:
false
,
...
...
@@ -366,6 +392,8 @@
}
let
{
taskId
}
=
taskForm
;
if
(
!
taskId
)
{
// try to resolve taskId by business id from workFlowData
const
dataId
=
workFlowData
.
value
?.
dataId
||
workFlowData
.
value
?.
id
||
workFlowData
.
value
?.
businessId
;
...
...
@@ -389,6 +417,7 @@
const
resData
=
await
flowTaskForm
({
taskId
});
const
{
flowForm
=
{}
}
=
resData
;
formTp
.
value
=
flowForm
.
formTp
;
if
(
flowForm
.
formTp
==
'1'
)
{
await
refCruInnerForm
.
value
.
iniData
(
flowForm
);
}
else
{
...
...
@@ -484,19 +513,29 @@
comment
:
''
,
values
:
{},
};
//找到选择的下一步节点
if
(
nextNodenum
.
value
>
1
){
submitData
.
values
[
'userTaskid'
]
=
nextNodeNameSelevue
.
value
;
}
if
(
!
showApprovalUi
.
value
)
{
await
complete
(
submitData
);
emit
(
'callback'
);
return
false
;
}
const
formData
=
await
validate
();
Object
.
assign
(
submitData
,
formData
);
submitData
.
comment
=
submitData
.
comment
||
''
;
if
(
!
isFixed
.
value
)
{
//alert("dd"+isFixed.value);
// if (!isFixed.value) {
//alert("dd"+userType.value);
if
(
userType
.
value
===
'user'
)
{
submitData
.
values
[
'approval'
]
=
formData
.
checkSendUser
;
submitData
.
values
[
'approvalType'
]
=
'user'
;
if
(
formData
.
checkSendUser
)
{
submitData
.
values
[
'approval'
]
=
formData
.
checkSendUser
;
submitData
.
values
[
'approvalType'
]
=
'user'
;
...
...
@@ -505,8 +544,8 @@
submitData
.
values
[
'approval'
]
=
formData
.
checkSendRole
;
submitData
.
values
[
'approvalType'
]
=
'role'
;
}
}
//
}
console
.
log
(
"执行发送 "
,
submitData
);
// 执行发送
const
result
=
await
complete
(
submitData
);
...
...
@@ -539,6 +578,56 @@
console
.
log
(
'流程图加载完成'
);
};
const
handleChange
=
(
value
:
string
)
=>
{
console
.
log
(
`selected
${
value
}
`
);
nextNodeNameSelevue
.
value
=
value
;
console
.
log
(
" nextNodeNameSelevue.value "
,
nextNodeNameSelevue
.
value
);
if
(
value
==
0
){
ChangeSelectNodeAfter
(
res0
);
}
if
(
value
==
1
){
ChangeSelectNodeAfter
(
res1
);
}
if
(
value
==
2
){
ChangeSelectNodeAfter
(
res2
);
}
};
function
ChangeSelectNodeAfter
(
res
)
{
isFixed
.
value
=
res
.
dataType
==
'fixed'
?
true
:
false
;
if
(
isFixed
.
value
&&
!
isApproval
.
value
)
{
showApprovalUi
.
value
;
}
nextNode
.
value
=
res
;
nextNodeName
.
value
=
res
.
userTask
?.
name
||
''
;
//alert(""+res.dataType);
if
(
res
.
type
===
'role'
)
{
removeSchemaByFiled
(
'checkSendUser'
);
if
(
res
.
dataType
===
'fixed'
&&
res
.
userTask
?.
candidateGroups
)
{
setFieldsValue
({
checkSendRole
:
res
.
userTask
.
candidateGroups
,
});
}
}
else
{
removeSchemaByFiled
(
'checkSendRole'
);
if
(
res
.
dataType
===
'fixed'
&&
res
.
userTask
?.
assignee
)
{
setFieldsValue
({
checkSendUser
:
res
.
userTask
.
assignee
,
});
}
}
}
const
iniData
=
async
(
data
:
any
)
=>
{
try
{
// 设置工作流数据
...
...
@@ -563,38 +652,61 @@
}
if
(
taskForm
.
taskId
)
{
const
res
=
await
getNextFlowNode
({
taskId
:
taskForm
.
taskId
});
if
(
res
==
null
)
{
const
reslist
=
await
getNextFlowNode
({
taskId
:
taskForm
.
taskId
});
console
.
log
(
"getNextFlowNode reslist "
,
reslist
);
if
(
reslist
==
null
)
{
nextNodeName
.
value
=
'结束'
;
removeSchemaByFiled
(
'checkSendRole'
);
removeSchemaByFiled
(
'checkSendUser'
);
showApprovalUi
.
value
=
isApproval
.
value
;
shownextNodeNameSele
.
value
=
false
;
shownextNodeNametext
.
value
=
true
;
return
false
;
}
isFixed
.
value
=
res
.
dataType
==
'fixed'
?
true
:
false
;
if
(
isFixed
.
value
&&
!
isApproval
.
value
)
{
showApprovalUi
.
value
;
}
nextNode
.
value
=
res
;
nextNodeName
.
value
=
res
.
userTask
?.
name
||
''
;
if
(
res
.
type
===
'role'
)
{
removeSchemaByFiled
(
'checkSendUser'
);
if
(
res
.
dataType
===
'fixed'
&&
res
.
userTask
?.
candidateGroups
)
{
setFieldsValue
({
checkSendRole
:
res
.
userTask
.
candidateGroups
,
}
else
{
shownextNodeNameSele
.
value
=
true
;
shownextNodeNametext
.
value
=
false
;
nextNodenum
.
value
=
reslist
.
length
;
//why工作流修改
// 使用 for 循环赋值
for
(
let
i
=
0
;
i
<
reslist
.
length
;
i
++
)
{
let
resb
=
reslist
[
i
];
tableOptions
.
value
.
push
({
id
:
`
${
i
}
`
,
name
:
`
${
resb
.
userTask
.
name
}
`
,
value
:
`
${
i
}
`
});
}
}
else
{
removeSchemaByFiled
(
'checkSendRole'
);
if
(
res
.
dataType
===
'fixed'
&&
res
.
userTask
?.
assignee
)
{
setFieldsValue
({
checkSendUser
:
res
.
userTask
.
assignee
,
});
}
}
nextNodeNameSele
.
value
=
tableOptions
.
value
[
0
].
name
;
// tableOptions.value = res.userTaskList;
const
res
=
reslist
[
0
];
// 获取第一行数据
console
.
log
(
"res "
,
res
);
ChangeSelectNodeAfter
(
res
);
if
(
reslist
.
length
==
1
){
res0
.
value
=
reslist
[
0
];
}
if
(
reslist
.
length
==
2
){
res0
.
value
=
reslist
[
0
];
res1
.
value
=
reslist
[
1
];
}
if
(
reslist
.
length
==
3
){
res0
.
value
=
reslist
[
0
];
res1
.
value
=
reslist
[
1
];
res2
.
value
=
reslist
[
2
];
}
}
}
// 加载流转记录
...
...
zrch-risk-server-39/jeecg-module-system/jeecg-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/dto/FlowNextDto.java
浏览文件 @
9457bcbd
...
...
@@ -16,6 +16,10 @@ public class FlowNextDto implements Serializable {
* 节点对象
*/
private
UserTask
userTask
;
/**
* 待办节点对象 why工作流修改
*/
private
List
<
UserTask
>
userTaskList
;
/**
* 待办人员
*/
...
...
zrch-risk-server-39/jeecg-module-system/jeecg-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java
浏览文件 @
9457bcbd
...
...
@@ -18,4 +18,5 @@ public class FlowTaskVo {
private
String
assignee
;
private
List
<
String
>
candidateUsers
;
private
List
<
String
>
candidateGroups
;
private
String
userTaskid
;
}
zrch-risk-server-39/jeecg-module-system/jeecg-module-flowable/src/main/java/org/jeecg/modules/flowable/flow/FindNextNodeUtil.java
浏览文件 @
9457bcbd
...
...
@@ -35,6 +35,104 @@ public class FindNextNodeUtil {
}
public
static
void
next
(
Collection
<
FlowElement
>
flowElements
,
FlowElement
flowElement
,
Map
<
String
,
Object
>
map
,
List
<
UserTask
>
nextUser
)
{
//如果是结束节点
if
(
flowElement
instanceof
EndEvent
)
{
//如果是子任务的结束节点
if
(
getSubProcess
(
flowElements
,
flowElement
)
!=
null
)
{
flowElement
=
getSubProcess
(
flowElements
,
flowElement
);
}
}
else
{
//获取Task的出线信息--可以拥有多个
List
<
SequenceFlow
>
outGoingFlows
=
null
;
if
(
flowElement
instanceof
Task
)
{
outGoingFlows
=
((
Task
)
flowElement
).
getOutgoingFlows
();
}
else
if
(
flowElement
instanceof
Gateway
)
{
outGoingFlows
=
((
Gateway
)
flowElement
).
getOutgoingFlows
();
}
else
if
(
flowElement
instanceof
StartEvent
)
{
outGoingFlows
=
((
StartEvent
)
flowElement
).
getOutgoingFlows
();
}
else
if
(
flowElement
instanceof
SubProcess
)
{
outGoingFlows
=
((
SubProcess
)
flowElement
).
getOutgoingFlows
();
}
else
if
(
flowElement
instanceof
CallActivity
)
{
outGoingFlows
=
((
CallActivity
)
flowElement
).
getOutgoingFlows
();
}
int
outGoingFlowssize
=
outGoingFlows
.
size
();
if
(
outGoingFlows
!=
null
&&
outGoingFlows
.
size
()
>
0
)
{
int
lxxh
=
outGoingFlows
.
size
()
-
outGoingFlowssize
;
//遍历所有的出线--找到可以正确执行的那一条
for
(
SequenceFlow
sequenceFlow
:
outGoingFlows
)
{
//1.有表达式,且为true
//2.无表达式
String
expression
=
sequenceFlow
.
getConditionExpression
();
if
(
expression
==
null
||
Boolean
.
parseBoolean
(
String
.
valueOf
(
result
(
map
,
expression
.
substring
(
expression
.
lastIndexOf
(
"{"
)
+
1
,
expression
.
lastIndexOf
(
"}"
))))))
{
//出线的下一节点
String
nextFlowElementID
=
sequenceFlow
.
getTargetRef
();
if
(
checkSubProcess
(
nextFlowElementID
,
flowElements
,
nextUser
))
{
continue
;
}
//查询下一节点的信息
FlowElement
nextFlowElement
=
getFlowElementById
(
nextFlowElementID
,
flowElements
);
//调用流程
if
(
nextFlowElement
instanceof
CallActivity
)
{
CallActivity
ca
=
(
CallActivity
)
nextFlowElement
;
if
(
ca
.
getLoopCharacteristics
()
!=
null
)
{
UserTask
userTask
=
new
UserTask
();
userTask
.
setId
(
ca
.
getId
());
userTask
.
setId
(
ca
.
getId
());
userTask
.
setLoopCharacteristics
(
ca
.
getLoopCharacteristics
());
userTask
.
setName
(
ca
.
getName
());
nextUser
.
add
(
userTask
);
}
next
(
flowElements
,
nextFlowElement
,
map
,
nextUser
);
}
//用户任务
if
(
nextFlowElement
instanceof
UserTask
)
{
nextUser
.
add
((
UserTask
)
nextFlowElement
);
}
//排他网关
else
if
(
nextFlowElement
instanceof
ExclusiveGateway
)
{
if
(
lxxh
>
0
)
{
// continue;
}
//next(flowElements, nextFlowElement, map, nextUser);
nextByGateway
(
flowElements
,
nextFlowElement
,
map
,
nextUser
);
}
//并行网关
else
if
(
nextFlowElement
instanceof
ParallelGateway
)
{
if
(
lxxh
>
0
)
{
// continue;
}
next
(
flowElements
,
nextFlowElement
,
map
,
nextUser
);
}
//接收任务
else
if
(
nextFlowElement
instanceof
ReceiveTask
)
{
next
(
flowElements
,
nextFlowElement
,
map
,
nextUser
);
}
//服务任务
else
if
(
nextFlowElement
instanceof
ServiceTask
)
{
next
(
flowElements
,
nextFlowElement
,
map
,
nextUser
);
}
//子任务的起点
else
if
(
nextFlowElement
instanceof
StartEvent
)
{
next
(
flowElements
,
nextFlowElement
,
map
,
nextUser
);
}
//结束节点
else
if
(
nextFlowElement
instanceof
EndEvent
)
{
next
(
flowElements
,
nextFlowElement
,
map
,
nextUser
);
}
}
lxxh
++;
}
}
}
}
public
static
void
nextByGateway
(
Collection
<
FlowElement
>
flowElements
,
FlowElement
flowElement
,
Map
<
String
,
Object
>
map
,
List
<
UserTask
>
nextUser
)
{
//如果是结束节点
if
(
flowElement
instanceof
EndEvent
)
{
//如果是子任务的结束节点
...
...
@@ -61,10 +159,7 @@ public class FindNextNodeUtil {
//1.有表达式,且为true
//2.无表达式
String
expression
=
sequenceFlow
.
getConditionExpression
();
if
(
expression
==
null
||
Boolean
.
parseBoolean
(
String
.
valueOf
(
result
(
map
,
expression
.
substring
(
expression
.
lastIndexOf
(
"{"
)
+
1
,
expression
.
lastIndexOf
(
"}"
))))))
{
//出线的下一节点
//出线的下一节点
String
nextFlowElementID
=
sequenceFlow
.
getTargetRef
();
if
(
checkSubProcess
(
nextFlowElementID
,
flowElements
,
nextUser
))
{
continue
;
...
...
@@ -114,7 +209,7 @@ public class FindNextNodeUtil {
else
if
(
nextFlowElement
instanceof
EndEvent
)
{
next
(
flowElements
,
nextFlowElement
,
map
,
nextUser
);
}
}
}
}
}
...
...
@@ -215,9 +310,12 @@ public class FindNextNodeUtil {
public
static
Object
result
(
Map
<
String
,
Object
>
map
,
String
expression
)
{
FelEngine
fel
=
new
FelEngineImpl
();
FelContext
ctx
=
fel
.
getContext
();
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
map
.
entrySet
())
{
ctx
.
set
(
entry
.
getKey
(),
entry
.
getValue
());
if
(
map
!=
null
){
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
map
.
entrySet
())
{
ctx
.
set
(
entry
.
getKey
(),
entry
.
getValue
());
}
}
Object
result
=
fel
.
eval
(
expression
);
return
result
;
}
...
...
zrch-risk-server-39/jeecg-module-system/jeecg-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowInstanceServiceImpl.java
浏览文件 @
9457bcbd
...
...
@@ -104,10 +104,12 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
String
zdmc
=
""
;
String
zdval
=
""
;
if
(
formValues
.
get
(
"dataName"
)==
null
){
if
(
formValues
.
get
(
"_value"
)!=
null
)
{
Map
zdv
=(
Map
)
formValues
.
get
(
"_value"
);
zdmc
=(
String
)
zdv
.
get
(
"dataName"
);
zdval
=
zdv
.
get
(
"dataId"
).
toString
();
Map
zdv
=
(
Map
)
formValues
.
get
(
"_value"
);
zdmc
=
(
String
)
zdv
.
get
(
"dataName"
);
zdval
=
zdv
.
get
(
"dataId"
).
toString
();
}
}
else
{
zdmc
=(
String
)
formValues
.
get
(
"dataName"
);
...
...
zrch-risk-server-39/jeecg-module-system/jeecg-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java
浏览文件 @
9457bcbd
...
...
@@ -115,6 +115,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskService
.
addComment
(
taskVo
.
getTaskId
(),
taskVo
.
getInstanceId
(),
FlowComment
.
NORMAL
.
getType
(),
taskVo
.
getComment
());
//Long userId = SecurityUtils.getLoginUser().getUser().getUserId();
SysUser
loginUser
=
iFlowThirdService
.
getLoginUser
();
taskService
.
complete
(
taskVo
.
getTaskId
(),
taskVo
.
getValues
());
Object
userTypeObject
=
taskVo
.
getValues
().
get
(
"approvalType"
);
...
...
@@ -122,13 +123,16 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
Task
nextTask
=
taskService
.
createTaskQuery
()
.
processInstanceId
(
taskVo
.
getInstanceId
())
.
singleResult
();
String
userType
=
userTypeObject
.
toString
();
String
approvalId
=
taskVo
.
getValues
().
get
(
"approval"
).
toString
();
if
(
userType
.
equals
(
"user"
))
{
taskService
.
setAssignee
(
nextTask
.
getId
(),
approvalId
);
}
else
{
taskService
.
addCandidateGroup
(
nextTask
.
getId
(),
approvalId
);
if
(
nextTask
!=
null
){
String
userType
=
userTypeObject
.
toString
();
String
approvalId
=
taskVo
.
getValues
().
get
(
"approval"
).
toString
();
if
(
userType
.
equals
(
"user"
))
{
taskService
.
setAssignee
(
nextTask
.
getId
(),
approvalId
);
}
else
{
taskService
.
addCandidateGroup
(
nextTask
.
getId
(),
approvalId
);
}
}
}
}
...
...
@@ -1579,12 +1583,17 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
*/
@Override
public
Result
getNextFlowNode
(
FlowTaskVo
flowTaskVo
)
{
/** 1个节点 逻辑
// todo 似乎逻辑未写完,待检查
FlowNextDto flowNextDto = this.getNextFlowNode(flowTaskVo.getTaskId(), flowTaskVo.getValues());
// if (flowNextDto==null) {
// return Result.OK("流程已完结", null);
// }
return Result.OK(flowNextDto);
*/
List
<
FlowNextDto
>
flowNextDto
=
this
.
getNextFlowNodeList
(
flowTaskVo
.
getTaskId
(),
flowTaskVo
.
getValues
());
return
Result
.
OK
(
flowNextDto
);
}
/**
...
...
@@ -1657,6 +1666,12 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
flowNextDto
.
setNodeisApprove
(
issApprove
);
}
//why工作流修改
if
(
nextUserTask
!=
null
&&
nextUserTask
.
size
()>
0
){
flowNextDto
.
setUserTaskList
(
nextUserTask
);
}
return
flowNextDto
;
}
...
...
@@ -1664,6 +1679,90 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
return
null
;
}
/**
* 获取下一个节点信息,流程定义上的节点信息
* @param taskId 当前节点id
* @param values 流程变量
* @return 如果返回null,表示没有下一个节点,流程结束
*/
public
List
<
FlowNextDto
>
getNextFlowNodeList
(
String
taskId
,
Map
<
String
,
Object
>
values
)
{
List
<
FlowNextDto
>
FlowNextDtoList
=
new
ArrayList
<>();
//当前节点
Task
task
=
taskService
.
createTaskQuery
().
taskId
(
taskId
).
singleResult
();
if
(
Objects
.
nonNull
(
task
))
{
// 下个任务节点
List
<
UserTask
>
nextUserTask
=
FindNextNodeUtil
.
getNextUserTasks
(
repositoryService
,
task
,
values
);
if
(
CollectionUtils
.
isNotEmpty
(
nextUserTask
))
{
for
(
UserTask
userTask
:
nextUserTask
)
{
FlowNextDto
flowNextDto
=
new
FlowNextDto
();
flowNextDto
.
setUserTask
(
userTask
);
//待办人员
List
<
SysUser
>
sysUserFromTask
=
this
.
getSysUserFromTask
(
userTask
);
flowNextDto
.
setUserList
(
sysUserFromTask
);
MultiInstanceLoopCharacteristics
multiInstance
=
userTask
.
getLoopCharacteristics
();
if
(
Objects
.
nonNull
(
multiInstance
))
{
// 会签 多实例
String
collectionString
=
multiInstance
.
getInputDataItem
();
Object
colObj
=
values
.
get
(
collectionString
);
List
<
String
>
userNameList
=
null
;
if
(
colObj
!=
null
){
userNameList
=
(
List
)
colObj
;
}
if
(
CollUtil
.
isNotEmpty
(
userNameList
)){
// 待办人员从变量中获取 否则就是节点中配置的用户 sysUserFromTask
List
<
SysUser
>
userList
=
Lists
.
newArrayList
();
for
(
String
username
:
userNameList
)
{
SysUser
userByUsername
=
iFlowThirdService
.
getUserByUsername
(
username
);
if
(
userByUsername
==
null
){
throw
new
CustomException
(
username
+
" 用户名未找到"
);
}
else
{
userList
.
add
(
userByUsername
);
}
}
flowNextDto
.
setUserList
(
userList
);
}
else
{
// 变量中没有传入,写入节点中配置的用户
List
<
String
>
collect_username
=
sysUserFromTask
.
stream
().
map
(
SysUser:
:
getUsername
).
collect
(
Collectors
.
toList
());
values
.
put
(
collectionString
,
collect_username
);
}
}
else
{
// todo 读取自定义节点属性做些啥?
//String dataType = userTask.getAttributeValue(ProcessConstants.NAMASPASE, ProcessConstants.PROCESS_CUSTOM_DATA_TYPE);
String
dataType
=
"fixed"
;
String
userType
=
userTask
.
getAttributeValue
(
ProcessConstants
.
NAMASPASE
,
ProcessConstants
.
PROCESS_CUSTOM_USER_TYPE
);
flowNextDto
.
setType
(
userType
);
if
(
userType
.
equals
(
"user"
)&&(
userTask
.
getAssignee
()==
null
||(
userTask
.
getAssignee
()!=
null
&&
userTask
.
getAssignee
().
equals
(
""
)))){
dataType
=
"dynamic"
;
}
if
(
userType
.
equals
(
"role"
)&&(
userTask
.
getCandidateGroups
()==
null
||(
userTask
.
getCandidateGroups
()!=
null
&&
userTask
.
getCandidateGroups
().
size
()==
0
))){
dataType
=
"dynamic"
;
}
if
(
userType
.
equals
(
"role"
)&&(
userTask
.
getCandidateGroups
()!=
null
&&
userTask
.
getCandidateGroups
().
size
()>
0
)){
dataType
=
"fixed"
;
}
flowNextDto
.
setDataType
(
dataType
);
}
boolean
issApprove
=
this
.
getNextFlowNodeIsApprove
(
taskId
);
flowNextDto
.
setNodeisApprove
(
issApprove
);
FlowNextDtoList
.
add
(
flowNextDto
);
}
return
FlowNextDtoList
;
}
}
return
null
;
}
public
List
<
SysUser
>
getSysUserFromTask
(
UserTask
userTask
)
{
String
assignee
=
userTask
.
getAssignee
();
if
(
StrUtil
.
isNotBlank
(
assignee
)){
...
...
@@ -1981,9 +2080,12 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
String
formUrlparval
=
""
;
String
formUrlpar
=
""
;
if
(
formValues
.
get
(
"dataId"
)==
null
){
Map
zdv
=(
Map
)
formValues
.
get
(
"_value"
);
formUrlpar
=(
String
)
zdv
.
get
(
"dataName"
);
formUrlparval
=
zdv
.
get
(
"dataId"
).
toString
();
if
(
formValues
.
get
(
"_value"
)!=
null
){
Map
zdv
=(
Map
)
formValues
.
get
(
"_value"
);
formUrlpar
=(
String
)
zdv
.
get
(
"dataName"
);
formUrlparval
=
zdv
.
get
(
"dataId"
).
toString
();
}
}
else
{
formUrlparval
=
formValues
.
get
(
"dataId"
).
toString
();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论