Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
J
jyzb_platformV2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
赵剑炜
jyzb_platformV2
Commits
f16f2ad3
Commit
f16f2ad3
authored
Jul 27, 2023
by
赵剑炜
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
工作流联调
parent
fee7bc8a
全部展开
显示空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
145 行增加
和
114 行删除
+145
-114
application.yml
jyzb-boot/src/main/resources/application.yml
+1
-1
pom.properties
jyzb-mq/jyzb-mq-consumer/target/maven-archiver/pom.properties
+0
-3
pom.properties
jyzb-mq/jyzb-mq-producer/target/maven-archiver/pom.properties
+0
-3
WorkFlowConstants.java
jyzb-process/src/main/java/com/junmp/junmpProcess/common/WorkFlowConstants.java
+1
-1
BpmnController.java
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/BpmnController.java
+10
-0
CounterSignListener.java
jyzb-process/src/main/java/com/junmp/junmpProcess/listener/CounterSignListener.java
+12
-3
GlobalEndListener.java
jyzb-process/src/main/java/com/junmp/junmpProcess/listener/GlobalEndListener.java
+1
-0
ProcessListener.java
jyzb-process/src/main/java/com/junmp/junmpProcess/listener/ProcessListener.java
+1
-0
TaskCreatedListener.java
jyzb-process/src/main/java/com/junmp/junmpProcess/listener/TaskCreatedListener.java
+43
-43
OrgUserMapper.java
jyzb-process/src/main/java/com/junmp/junmpProcess/mapper/OrgUserMapper.java
+1
-1
WorkProcessService.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/Bussiness/WorkProcessService.java
+5
-2
WorkProcessServiceImpl.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/Bussiness/impl/WorkProcessServiceImpl.java
+44
-50
BpmnConvert.java
jyzb-process/src/main/java/com/junmp/junmpProcess/utils/BpmnConvert.java
+25
-6
BpmnModelUtils.java
jyzb-process/src/main/java/com/junmp/junmpProcess/utils/BpmnModelUtils.java
+0
-0
OrgUserMapper.xml
jyzb-process/src/main/resources/mapper/OrgUserMapper.xml
+1
-1
没有找到文件。
jyzb-boot/src/main/resources/application.yml
View file @
f16f2ad3
...
...
@@ -4,7 +4,7 @@
server
:
tomcat
:
uri-encoding
:
UTF-8
#tomcat编码
port
:
1003
2
#tomcat端口
port
:
1003
1
#tomcat端口
spring
:
main
:
#bea同名类进行注册时,准许覆盖注册
...
...
jyzb-mq/jyzb-mq-consumer/target/maven-archiver/pom.properties
deleted
100644 → 0
View file @
fee7bc8a
artifactId
=
jyzb-mq-consumer
groupId
=
com.junmp.jyzb
version
=
1.0.0
jyzb-mq/jyzb-mq-producer/target/maven-archiver/pom.properties
deleted
100644 → 0
View file @
fee7bc8a
artifactId
=
jyzb-mq-producer
groupId
=
com.junmp.jyzb
version
=
1.0.0
jyzb-process/src/main/java/com/junmp/junmpProcess/common/WorkFlowConstants.java
View file @
f16f2ad3
...
...
@@ -5,7 +5,7 @@ package com.junmp.junmpProcess.common;
* @create 2022-10-10 17:40
*/
public
interface
WorkFlowConstants
{
String
PROCESS_PREFIX
=
"
Flowable
"
;
String
PROCESS_PREFIX
=
"
Process_
"
;
String
START_EVENT_ID
=
"startEventNode"
;
String
END_EVENT_ID
=
"endEventNode"
;
String
EXPRESSION_CLASS
=
"exUtils."
;
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/controller/BpmnController.java
View file @
f16f2ad3
...
...
@@ -136,6 +136,11 @@ public class BpmnController {
public
ApiRes
<
Boolean
>
start
(
@RequestBody
StartProcessInstanceDTO
startProcessInstanceDTO
)
{
return
WorkProcessService
.
start
(
startProcessInstanceDTO
);
}
@ApiOperation
(
"通过流程定义查看详情"
)
@PostMapping
(
"instanceInfo"
)
public
ApiRes
<
HandleDataVO
>
instanceInfo
(
@RequestBody
HandleDataDTO
handleDataDTO
)
{
return
WorkProcessService
.
instanceInfo
(
handleDataDTO
);
}
@ApiOperation
(
"查看我发起的流程"
)
@PostMapping
(
"applyList"
)
public
ApiRes
<
PageResult
<
HistoryProcessInstanceVO
>>
applyList
(
@RequestBody
ApplyDTO
ApplyDTO
)
{
...
...
@@ -151,6 +156,11 @@ public class BpmnController {
public
ResponseResult
agree
(
@RequestBody
HandleDataDTO
handleDataDTO
){
return
WorkProcessService
.
agree
(
handleDataDTO
);
}
@ApiOperation
(
"查看我的已办"
)
@PostMapping
(
"doneList"
)
public
ApiRes
<
PageResult
<
TaskVO
>>
doneList
(
@RequestBody
TaskDTO
taskDTO
){
return
ApiRes
.
success
(
WorkProcessService
.
doneList
(
taskDTO
));
}
@ApiOperation
(
"撤销按钮"
)
@PostMapping
(
"revoke"
)
public
ResponseResult
revoke
(
@RequestBody
HandleDataDTO
handleDataDTO
){
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/listener/CounterSignListener.java
View file @
f16f2ad3
...
...
@@ -17,6 +17,7 @@ import com.junmp.v2.sys.api.bean.user.vo.QueryUserInfoVo;
import
org.flowable.bpmn.model.Process
;
import
org.flowable.bpmn.model.UserTask
;
import
org.flowable.engine.RepositoryService
;
import
org.flowable.engine.TaskService
;
import
org.flowable.engine.delegate.DelegateExecution
;
import
org.flowable.engine.delegate.ExecutionListener
;
import
com.junmp.junmpProcess.enums.AssigneeTypeEnums
;
...
...
@@ -38,12 +39,15 @@ import static com.junmp.junmpProcess.utils.BpmnModelUtils.getChildNode;
@Component
public
class
CounterSignListener
implements
ExecutionListener
{
@Resource
private
TaskService
taskService
;
@Resource
private
RepositoryService
repositoryService
;
@Resource
private
OrgUserMapper
orgUserMapper
;
@Override
public
void
notify
(
DelegateExecution
execution
)
{
String
currentActivityId
=
execution
.
getCurrentActivityId
();
Process
mainProcess
=
repositoryService
.
getBpmnModel
(
execution
.
getProcessDefinitionId
()).
getMainProcess
();
UserTask
userTask
=
(
UserTask
)
mainProcess
.
getFlowElement
(
currentActivityId
);
String
flowJson
=
mainProcess
.
getAttributeValue
(
"http://flowable.org/bpmn"
,
"Junmp"
);
...
...
@@ -65,6 +69,7 @@ public class CounterSignListener implements ExecutionListener {
String
Type
=
group
.
getApproverType
();
if
(
Type
.
equals
(
"1"
))
//指定人员,不处理
{
List
<
String
>
assignedUser
=
group
.
getApproverIds
();
for
(
String
userInfo
:
assignedUser
)
{
assigneeList
.
add
(
userInfo
);
...
...
@@ -136,7 +141,7 @@ public class CounterSignListener implements ExecutionListener {
else
if
(
Type
.
equals
(
"5"
))
//上级审批
{
LoginUser
StartUser
=
LoginContext
.
getContext
().
getLoginUser
();
List
<
UserListDTO
>
userList
=
orgUserMapper
.
QueryUserParentOrg
(
StartUser
.
getUserId
().
toString
());
List
<
UserListDTO
>
userList
=
orgUserMapper
.
QueryUser
With
ParentOrg
(
StartUser
.
getUserId
().
toString
());
if
(
userList
.
size
()<=
0
)
//没有上级则本身已是上级
{
...
...
@@ -147,14 +152,18 @@ public class CounterSignListener implements ExecutionListener {
{
for
(
UserListDTO
userId
:
userList
)
{
assigneeList
.
add
(
userId
.
getUserID
());
assigneeList
.
add
(
"1"
);
// assigneeList.add(userId.getUserID());
}
}
}
if
(
assigneeList
.
size
()!=
0
)
{
execution
.
setVariable
(
variable
,
assigneeList
);}
{
execution
.
setVariable
(
variable
,
assigneeList
);
}
}
else
{
}
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/listener/GlobalEndListener.java
View file @
f16f2ad3
...
...
@@ -32,6 +32,7 @@ public class GlobalEndListener extends AbstractFlowableEngineEventListener {
//流程结束后工作在这里写
//得到流程定义id
String
processDefinitionId
=
event
.
getProcessDefinitionId
();
//得到流程实例id
String
processInstanceId
=
event
.
getProcessInstanceId
();
/**
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/listener/ProcessListener.java
View file @
f16f2ad3
...
...
@@ -21,6 +21,7 @@ public class ProcessListener implements ExecutionListener {
@Override
public
void
notify
(
DelegateExecution
execution
)
{
execution
.
setVariable
(
PROCESS_STATUS
,
BUSINESS_STATUS_4
);
}
}
jyzb-process/src/main/java/com/junmp/junmpProcess/listener/TaskCreatedListener.java
View file @
f16f2ad3
//
package com.junmp.junmpProcess.listener;
//
//
import org.flowable.engine.RepositoryService;
//
import org.flowable.engine.RuntimeService;
//
import org.flowable.engine.TaskService;
//
import org.flowable.engine.delegate.TaskListener;
//
import org.flowable.task.service.delegate.DelegateTask;
//
import com.junmp.junmpProcess.utils.SpringContextHolder;
//
import org.springframework.stereotype.Component;
//
//
import javax.annotation.Resource;
//
/
//
**
//
* @author LoveMyOrange
//
* @create 2022-10-15 14:51
//
*/
//
@Component
//
public class TaskCreatedListener implements TaskListener {
//
@Resource
//
private TaskService taskService;
//
@Resource
//
private RepositoryService repositoryService;
//
//
@Override
//
public void notify(DelegateTask delegateTask) {
//
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
//
if ("root".equalsIgnoreCase(taskDefinitionKey)) {
//
taskService.complete(delegateTask.getId());
//
} else {
//
if ("100000".equals(delegateTask.getAssignee())) {
//
Object autoRefuse = delegateTask.getVariable("autoRefuse");
//
if (autoRefuse == null) {
//
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动通过");
//
taskService.complete(delegateTask.getId());
//
} else {
//
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动驳回");
//
RuntimeService runtimeService = SpringContextHolder.getBean(RuntimeService.class);
//
runtimeService.deleteProcessInstance(delegateTask.getProcessInstanceId(), "审批人为空,自动驳回");
//
}
//
}
//
}
//
}
//
}
package
com
.
junmp
.
junmpProcess
.
listener
;
import
org.flowable.engine.RepositoryService
;
import
org.flowable.engine.RuntimeService
;
import
org.flowable.engine.TaskService
;
import
org.flowable.engine.delegate.TaskListener
;
import
org.flowable.task.service.delegate.DelegateTask
;
import
com.junmp.junmpProcess.utils.SpringContextHolder
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
* @author LoveMyOrange
* @create 2022-10-15 14:51
*/
@Component
public
class
TaskCreatedListener
implements
TaskListener
{
@Resource
private
TaskService
taskService
;
@Resource
private
RepositoryService
repositoryService
;
@Override
public
void
notify
(
DelegateTask
delegateTask
)
{
String
taskDefinitionKey
=
delegateTask
.
getTaskDefinitionKey
();
if
(
"root"
.
equalsIgnoreCase
(
taskDefinitionKey
))
{
taskService
.
complete
(
delegateTask
.
getId
());
}
else
{
if
(
"100000"
.
equals
(
delegateTask
.
getAssignee
()))
{
Object
autoRefuse
=
delegateTask
.
getVariable
(
"autoRefuse"
);
if
(
autoRefuse
==
null
)
{
taskService
.
addComment
(
delegateTask
.
getId
(),
delegateTask
.
getProcessInstanceId
(),
"opinion"
,
"审批人为空,自动通过"
);
taskService
.
complete
(
delegateTask
.
getId
());
}
else
{
taskService
.
addComment
(
delegateTask
.
getId
(),
delegateTask
.
getProcessInstanceId
(),
"opinion"
,
"审批人为空,自动驳回"
);
RuntimeService
runtimeService
=
SpringContextHolder
.
getBean
(
RuntimeService
.
class
);
runtimeService
.
deleteProcessInstance
(
delegateTask
.
getProcessInstanceId
(),
"审批人为空,自动驳回"
);
}
}
}
}
}
jyzb-process/src/main/java/com/junmp/junmpProcess/mapper/OrgUserMapper.java
View file @
f16f2ad3
...
...
@@ -23,5 +23,5 @@ public interface OrgUserMapper {
*/
public
List
<
UserListDTO
>
QueryUserByRoleIdAndOrg
(
String
roleId
,
String
orgId
);
public
List
<
UserListDTO
>
QueryUserParentOrg
(
String
userId
);
public
List
<
UserListDTO
>
QueryUser
With
ParentOrg
(
String
userId
);
}
jyzb-process/src/main/java/com/junmp/junmpProcess/service/Bussiness/WorkProcessService.java
View file @
f16f2ad3
...
...
@@ -101,6 +101,9 @@ public interface WorkProcessService {
*/
ApiRes
<
Boolean
>
start
(
StartProcessInstanceDTO
startProcessInstanceDTO
);
/**
* 查看我发起的流程
*
...
...
@@ -120,7 +123,7 @@ public interface WorkProcessService {
*
* @return
*/
Result
<
Page
<
TaskVO
>
>
doneList
(
@RequestBody
TaskDTO
taskDTO
);
PageResult
<
TaskVO
>
doneList
(
@RequestBody
TaskDTO
taskDTO
);
/**
* 同意
...
...
@@ -205,7 +208,7 @@ public interface WorkProcessService {
*
* @return
*/
Result
<
HandleDataVO
>
instanceInfo
(
HandleDataDTO
HandleDataDTO
);
ApiRes
<
HandleDataVO
>
instanceInfo
(
HandleDataDTO
HandleDataDTO
);
// /**
// * 上传文件
// * @return
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/service/Bussiness/impl/WorkProcessServiceImpl.java
View file @
f16f2ad3
...
...
@@ -281,7 +281,6 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
if
(
req
.
getIsStop
()
==
true
){
repositoryService
.
suspendProcessDefinitionById
(
req
.
getProcessDefinitionId
(),
true
,
null
);
processTemplates
.
setIsStop
(
true
);
}
else
{
processTemplates
.
setIsStop
(
false
);
repositoryService
.
activateProcessDefinitionById
(
req
.
getProcessDefinitionId
(),
true
,
null
);
...
...
@@ -314,7 +313,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
BpmnModel
bpmnModel
=
toBpmn
(
processJsonNode
,
formJsonNode
,
formName
,
templateId
);
Deployment
deploy
=
repositoryService
.
createDeployment
()
.
addBpmnModel
(
templateId
+
".bpmn20.xml"
,
bpmnModel
)
.
addBpmnModel
(
formName
+
".bpmn20.xml"
,
bpmnModel
)
.
name
(
formName
)
.
category
(
templateId
)
.
deploy
();
...
...
@@ -416,7 +415,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
Deployment
deploy
=
repositoryService
.
createDeployment
()
.
addBpmnModel
(
process
.
getTemplateId
()
+
".bpmn20.xml"
,
bpmnModel
)
.
addBpmnModel
(
formName
+
".bpmn20.xml"
,
bpmnModel
)
.
name
(
formName
)
.
category
(
process
.
getTemplateId
())
.
deploy
();
...
...
@@ -594,11 +593,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
userTask
.
setId
(
id
);
userTask
.
setName
(
node
.
get
(
"name"
).
toString
());
// 设置多实例
// userTask.setAssignee("${user}");
MultiInstanceLoopCharacteristics
multiInstanceLoopCharacteristics
=
new
MultiInstanceLoopCharacteristics
();
// if (node.getAssignee().getMultiMode().equals("顺序审批")) {
// multiInstanceLoopCharacteristics.setSequential(true);
// }
multiInstanceLoopCharacteristics
.
setElementVariable
(
"user"
);
// 完成条件
multiInstanceLoopCharacteristics
.
setCompletionCondition
(
"${nrOfInstances == nrOfCompletedInstances}"
);
...
...
@@ -679,15 +674,11 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
processVariables
.
put
(
FORM_VAR
,
formData
);
processVariables
.
put
(
START_USER_INFO
,
JSONObject
.
toJSONString
(
StartUser
));
processVariables
.
put
(
PROCESS_STATUS
,
BUSINESS_STATUS_1
);
// processVariables.put("initiator",JSONObject.toJSONString(startUserInfo));
ArrayList
<
LoginUser
>
userInfos
=
CollUtil
.
newArrayList
(
StartUser
);
Map
formValue
=
JSONObject
.
parseObject
(
formData
.
toJSONString
(),
new
TypeReference
<
Map
>()
{
});
processVariables
.
putAll
(
formValue
);
ProcessInstanceBuilder
processInstanceBuilder
=
runtimeService
.
createProcessInstanceBuilder
();
ProcessDefinition
processDefinition
=
repositoryService
.
createProcessDefinitionQuery
().
processDefinitionKey
(
processInstanceDto
.
getProcessDefinitionId
())
.
latestVersion
().
singleResult
();
...
...
@@ -707,12 +698,12 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
.
businessStatus
(
BUSINESS_STATUS_1
)
.
start
();
//手动完成第一个任务
Task
task
=
taskService
.
createTaskQuery
().
processInstanceId
(
processInstance
.
getId
()).
singleResult
();
Object
ts
=
new
Object
();
if
(
task
!=
null
){
taskService
.
complete
(
task
.
getId
());
}
//
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
//
Object ts=new Object();
//
if(task!=null){
//
taskService.complete(task.getId());
//
//
}
return
ApiRes
.
success
(
true
);
}
catch
(
Exception
e
){
...
...
@@ -837,7 +828,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
* @return
*/
@Override
public
Result
<
Page
<
TaskVO
>
>
doneList
(
TaskDTO
taskDTO
)
{
public
PageResult
<
TaskVO
>
doneList
(
TaskDTO
taskDTO
)
{
LoginUser
StartUser
=
LoginContext
.
getContext
().
getLoginUser
();
List
<
HistoricTaskInstance
>
tasks
=
historyService
.
createHistoricTaskInstanceQuery
()
.
taskAssignee
(
StartUser
.
getUserId
().
toString
())
...
...
@@ -882,7 +873,9 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
page
.
setCurrent
(
taskDTO
.
getPageNo
());
page
.
setSize
(
taskDTO
.
getPageSize
());
page
.
setTotal
(
count
);
return
Result
.
OK
(
page
);
return
PageResultFactory
.
createPageResult
(
page
);
}
...
...
@@ -952,9 +945,9 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}
}
if
(
StringUtils
.
isNotBlank
(
handleDataDTO
.
getSignInfo
()))
{
taskService
.
addComment
(
task
.
getId
(),
task
.
getProcessInstanceId
(),
"sign"
,
handleDataDTO
.
getSignInfo
());
}
//
if (StringUtils.isNotBlank(handleDataDTO.getSignInfo())) {
//
taskService.addComment(task.getId(), task.getProcessInstanceId(), "sign", handleDataDTO.getSignInfo());
//
}
taskService
.
complete
(
task
.
getId
());
...
...
@@ -1282,11 +1275,12 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}
@Override
public
Result
<
HandleDataVO
>
instanceInfo
(
HandleDataDTO
HandleDataDTO
)
{
public
ApiRes
<
HandleDataVO
>
instanceInfo
(
HandleDataDTO
HandleDataDTO
)
{
String
processInstanceId
=
HandleDataDTO
.
getProcessInstanceId
();
HistoricProcessInstance
historicProcessInstance
=
historyService
.
createHistoricProcessInstanceQuery
().
processInstanceId
(
processInstanceId
)
.
includeProcessVariables
().
singleResult
();
String
processDefinitionKey
=
historicProcessInstance
.
getProcessDefinitionKey
();
String
pro
=
processDefinitionKey
.
replace
(
PROCESS_PREFIX
,
""
);
ProcessTemplates
processTemplates
=
processTemplateService
.
getById
(
processDefinitionKey
.
replace
(
PROCESS_PREFIX
,
""
));
// processTemplates.setLogo(processTemplates.getIcon());
processTemplates
.
setFormId
(
processTemplates
.
getTemplateId
());
...
...
@@ -1304,40 +1298,40 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
});
SettingsInfo
settingsInfo
=
JSONObject
.
parseObject
(
processTemplates
.
getSettings
(),
new
TypeReference
<
SettingsInfo
>()
{
});
Boolean
sign
=
settingsInfo
.
getSign
();
//
Boolean sign = settingsInfo.getSign();
ChildNode
currentNode
=
null
;
if
(
StringUtils
.
isNotBlank
(
HandleDataDTO
.
getTaskId
()))
{
HistoricTaskInstance
historicTaskInstance
=
historyService
.
createHistoricTaskInstanceQuery
().
taskId
(
HandleDataDTO
.
getTaskId
()).
singleResult
();
currentNode
=
getChildNode
(
childNode
,
historicTaskInstance
.
getTaskDefinitionKey
());
List
<
FormOperates
>
formPerms
=
currentNode
.
getProps
().
getFormPerms
();
if
(
CollUtil
.
isNotEmpty
(
formPerms
))
{
Iterator
<
FormOperates
>
iterator
=
formPerms
.
iterator
();
while
(
iterator
.
hasNext
())
{
FormOperates
next
=
iterator
.
next
();
if
(
"H"
.
equals
(
next
.
getPerm
()))
{
iterator
.
remove
();
if
(
jsonObject
!=
null
)
{
jsonObject
.
remove
(
next
.
getId
());
}
}
}
}
//
List<FormOperates> formPerms = currentNode.getProps().getFormPerms();
//
if (CollUtil.isNotEmpty(formPerms)) {
//
Iterator<FormOperates> iterator = formPerms.iterator();
//
while (iterator.hasNext()) {
//
FormOperates next = iterator.next();
//
if ("H".equals(next.getPerm())) {
//
iterator.remove();
//
if (jsonObject != null) {
//
jsonObject.remove(next.getId());
//
}
//
}
//
}
//
}
handleDataVO
.
setCurrentNode
(
currentNode
);
handleDataVO
.
setTaskId
(
HandleDataDTO
.
getTaskId
());
}
if
(
sign
)
{
handleDataVO
.
setSignFlag
(
true
);
}
if
(
StringUtils
.
isNotBlank
(
HandleDataDTO
.
getTaskId
()))
{
if
(
currentNode
!=
null
)
{
if
(
currentNode
.
getProps
().
getSign
())
{
handleDataVO
.
setSignFlag
(
true
);
}
else
{
handleDataVO
.
setSignFlag
(
false
);
}
}
}
//
if (sign) {
//
handleDataVO.setSignFlag(true);
//
}
//
if (StringUtils.isNotBlank(HandleDataDTO.getTaskId())) {
//
if (currentNode != null) {
//
if (currentNode.getProps().getSign()) {
//
handleDataVO.setSignFlag(true);
//
} else {
//
handleDataVO.setSignFlag(false);
//
}
//
}
//
}
List
<
HistoricActivityInstance
>
list
=
historyService
.
createHistoricActivityInstanceQuery
().
processInstanceId
(
historicProcessInstance
.
getId
()).
list
();
Map
<
String
,
List
<
HistoricActivityInstance
>>
historicActivityInstanceMap
=
new
HashMap
<>();
...
...
@@ -1422,7 +1416,7 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}
handleDataVO
.
setProcessTemplates
(
processTemplates
);
handleDataVO
.
setDetailVOList
(
deatailMap
);
return
Result
.
OK
(
handleDataVO
);
return
ApiRes
.
success
(
handleDataVO
);
}
private
void
collectUserTaskInfo
(
List
<
Comment
>
processInstanceComments
,
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/utils/BpmnConvert.java
View file @
f16f2ad3
...
...
@@ -11,6 +11,7 @@ import org.flowable.bpmn.model.*;
import
org.flowable.bpmn.model.Process
;
import
org.flowable.engine.TaskService
;
import
org.flowable.engine.delegate.ExecutionListener
;
import
org.flowable.engine.delegate.TaskListener
;
import
org.flowable.task.service.impl.persistence.entity.TaskEntity
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -62,7 +63,7 @@ public class BpmnConvert {
process
.
addFlowElement
(
endEvent
);
// 三.递归绘制节点
drawNode
(
"
root
"
,
process
,
processNode
,
formNode
,
"_start"
,
"_end"
,
null
);
drawNode
(
"
0
"
,
process
,
processNode
,
formNode
,
"_start"
,
"_end"
,
null
);
// 四.自动布局
new
BpmnAutoLayout
(
bpmnModel
).
execute
();
// 五.转xml
...
...
@@ -119,8 +120,9 @@ public class BpmnConvert {
* @return Inout
*/
private
static
Inout
drawBzNode
(
Process
process
,
JsonNode
node
,
JsonNode
formJson
,
String
typeNode
)
{
// String id= "Node_"+UUID.randomUUID();
String
id
=
"Node_"
+
node
.
get
(
"id"
).
asText
();
// String id= "Node_"+UUID.randomUUID();
String
id
=
"root"
;
//创建发起人结点
UserTask
task
=
new
UserTask
();
//设置结点ID
...
...
@@ -129,11 +131,23 @@ public class BpmnConvert {
task
.
setName
(
node
.
get
(
"name"
).
asText
());
//通过将 ${initiator} 作为指派人的值,可以将用户任务分配给流程的发起人。当流程实例启动时,${initiator} 会被替换为实际的发起人信息。
//需要注意的是,在使用表达式时,需要确保流程引擎的配置中启用了表达式语言(例如使用 Flowable 的默认配置,会启用表达式语言)。
task
.
setAssignee
(
"${initiator}"
);
//
task.setAssignee("${initiator}");
List
<
FormProperty
>
formProperties
=
formJsonToFormProperty
(
formJson
);
task
.
setFormProperties
(
formProperties
);
ArrayList
<
FlowableListener
>
taskListeners
=
new
ArrayList
<>();
FlowableListener
taskListener
=
new
FlowableListener
();
// 事件类型,
taskListener
.
setEvent
(
TaskListener
.
EVENTNAME_CREATE
);
// 监听器类型
taskListener
.
setImplementationType
(
IMPLEMENTATION_TYPE_DELEGATEEXPRESSION
);
// 设置实现了,这里设置监听器的类型是delegateExpression,这样可以在实现类注入Spring bean.
taskListener
.
setImplementation
(
"${taskCreatedListener}"
);
taskListeners
.
add
(
taskListener
);
task
.
setTaskListeners
(
taskListeners
);
//添加连线
process
.
addFlowElement
(
task
);
return
new
Inout
(
id
,
id
);
}
...
...
@@ -175,11 +189,11 @@ public class BpmnConvert {
multiInstanceLoopCharacteristics
.
setInputDataItem
(
userTask
.
getId
()+
"assigneeList"
);
// 迭代集合
multiInstanceLoopCharacteristics
.
setElementVariable
(
"assigneeName"
);
//
并
行
//
串
行
multiInstanceLoopCharacteristics
.
setSequential
(
false
);
multiInstanceLoopCharacteristics
.
setCompletionCondition
(
"${nrOfCompletedInstances/nrOfInstances > 0}"
);
userTask
.
setAssignee
(
"${assigneeName}"
);
//
设置多实例属性
//
设置多实例属性
userTask
.
setLoopCharacteristics
(
multiInstanceLoopCharacteristics
);
process
.
addFlowElement
(
userTask
);
return
new
Inout
(
id
,
id
);
...
...
@@ -197,7 +211,12 @@ public class BpmnConvert {
listener
.
setEvent
(
ExecutionListener
.
EVENTNAME_START
);
//监听任务启动
listener
.
setImplementationType
(
IMPLEMENTATION_TYPE_DELEGATEEXPRESSION
);
listener
.
setImplementation
(
"${counterSignListener}"
);
//启动角色分配监听事件
FlowableListener
flowableListener
=
new
FlowableListener
();
flowableListener
.
setEvent
(
ExecutionListener
.
EVENTNAME_END
);
flowableListener
.
setImplementationType
(
ImplementationType
.
IMPLEMENTATION_TYPE_DELEGATEEXPRESSION
);
flowableListener
.
setImplementation
(
"${processListener}"
);
taskListeners
.
add
(
listener
);
taskListeners
.
add
(
flowableListener
);
return
taskListeners
;
}
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/utils/BpmnModelUtils.java
View file @
f16f2ad3
差异被折叠。
点击展开。
jyzb-process/src/main/resources/mapper/OrgUserMapper.xml
View file @
f16f2ad3
...
...
@@ -21,7 +21,7 @@
GROUP BY su.user_id,su.real_name
</select>
<select
id=
"QueryUserParentOrg"
resultMap=
"UserListDTO"
>
<select
id=
"QueryUser
With
ParentOrg"
resultMap=
"UserListDTO"
>
SELECT
CASE
WHEN userorg2.org_id = -1 THEN mainUser.user_id
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论