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
fcffbf59
Commit
fcffbf59
authored
Nov 07, 2023
by
赵剑炜
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加自审批工作流
parent
37140e2e
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
146 行增加
和
71 行删除
+146
-71
EquipmentTypeDto.java
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/dto/EquipmentTypeDto.java
+1
-0
CounterSignListener.java
jyzb-biz/src/main/java/com/junmp/jyzb/listener/CounterSignListener.java
+49
-20
GlobalEndListener.java
jyzb-biz/src/main/java/com/junmp/jyzb/listener/GlobalEndListener.java
+7
-26
SkipTaskListener.java
jyzb-biz/src/main/java/com/junmp/jyzb/listener/SkipTaskListener.java
+8
-7
EquipmentTypeServiceImpl.java
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/EquipmentTypeServiceImpl.java
+22
-5
PubOrgServiceImpl.java
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/PubOrgServiceImpl.java
+5
-3
FlowInstanceServiceImpl.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/FlowInstanceServiceImpl.java
+27
-8
BpmnConvert.java
jyzb-process/src/main/java/com/junmp/junmpProcess/utils/BpmnConvert.java
+27
-2
没有找到文件。
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/dto/EquipmentTypeDto.java
View file @
fcffbf59
...
@@ -23,6 +23,7 @@ public class EquipmentTypeDto {
...
@@ -23,6 +23,7 @@ public class EquipmentTypeDto {
private
Boolean
isLeaf
;
private
Boolean
isLeaf
;
private
List
<
String
>
supplierList
;
private
List
<
String
>
supplierList
;
private
String
photo
;
private
String
photo
;
private
Integer
childCount
;
private
List
<
EquipmentTypeDto
>
children
=
new
ArrayList
<>();
private
List
<
EquipmentTypeDto
>
children
=
new
ArrayList
<>();
public
void
addChild
(
EquipmentTypeDto
child
)
{
public
void
addChild
(
EquipmentTypeDto
child
)
{
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/listener/CounterSignListener.java
View file @
fcffbf59
...
@@ -21,21 +21,23 @@ import com.junmp.v2.message.api.bean.req.MessageSendReq;
...
@@ -21,21 +21,23 @@ import com.junmp.v2.message.api.bean.req.MessageSendReq;
import
com.junmp.v2.sys.api.UserServiceApi
;
import
com.junmp.v2.sys.api.UserServiceApi
;
import
com.junmp.v2.sys.api.bean.user.dto.RoleUserDto
;
import
com.junmp.v2.sys.api.bean.user.dto.RoleUserDto
;
import
com.junmp.v2.sys.api.bean.user.vo.QueryUserInfoVo
;
import
com.junmp.v2.sys.api.bean.user.vo.QueryUserInfoVo
;
import
com.junmp.v2.sys.user.service.SysUserService
;
import
org.flowable.bpmn.model.Process
;
import
org.flowable.bpmn.model.Process
;
import
org.flowable.bpmn.model.UserTask
;
import
org.flowable.bpmn.model.UserTask
;
import
org.flowable.engine.HistoryService
;
import
org.flowable.engine.*
;
import
org.flowable.engine.RepositoryService
;
import
org.flowable.engine.TaskService
;
import
org.flowable.engine.delegate.DelegateExecution
;
import
org.flowable.engine.delegate.DelegateExecution
;
import
org.flowable.engine.delegate.ExecutionListener
;
import
org.flowable.engine.delegate.ExecutionListener
;
import
com.junmp.junmpProcess.enums.AssigneeTypeEnums
;
import
com.junmp.junmpProcess.enums.AssigneeTypeEnums
;
import
org.flowable.engine.history.HistoricProcessInstance
;
import
org.flowable.engine.history.HistoricProcessInstance
;
import
org.flowable.task.api.Task
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.*
;
import
static
com
.
junmp
.
junmpProcess
.
common
.
CommonConstants
.
BUSINESS_STATUS_4
;
import
static
com
.
junmp
.
junmpProcess
.
common
.
CommonConstants
.
PROCESS_STATUS
;
import
static
com
.
junmp
.
junmpProcess
.
utils
.
BpmnModelUtils
.
getChildNode
;
import
static
com
.
junmp
.
junmpProcess
.
utils
.
BpmnModelUtils
.
getChildNode
;
/**
/**
...
@@ -44,6 +46,8 @@ import static com.junmp.junmpProcess.utils.BpmnModelUtils.getChildNode;
...
@@ -44,6 +46,8 @@ import static com.junmp.junmpProcess.utils.BpmnModelUtils.getChildNode;
*/
*/
@Component
@Component
public
class
CounterSignListener
implements
ExecutionListener
{
public
class
CounterSignListener
implements
ExecutionListener
{
@Autowired
private
ProcessEngine
processEngine
;
@Resource
@Resource
private
TaskService
taskService
;
private
TaskService
taskService
;
@Resource
@Resource
...
@@ -178,34 +182,59 @@ public class CounterSignListener implements ExecutionListener {
...
@@ -178,34 +182,59 @@ public class CounterSignListener implements ExecutionListener {
}
}
else
if
(
Type
.
equals
(
"10"
))
//自己审批
{
assigneeList
.
add
(
LoginContext
.
getContext
().
getLoginUser
().
getUserId
().
toString
());
execution
.
setVariable
(
"skip"
,
true
);
// // 查询当前执行流程实例的任务列表
// String processInstanceId = execution.getProcessInstanceId();
// List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
//
// // 如果任务列表为空,说明流程刚启动,直接完成整个流程实例
// if (tasks.isEmpty()) {
// ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// RuntimeService runtimeService = processEngine.getRuntimeService();
// runtimeService.deleteProcessInstance(processInstanceId, "自动审批通过");
// } else {
// // 完成找到的第一个任务
// taskService.complete(tasks.get(0).getId(), null);
// }
}
if
(
assigneeList
.
size
()!=
0
)
if
(
assigneeList
.
size
()!=
0
)
{
{
execution
.
setVariable
(
variable
,
assigneeList
);
execution
.
setVariable
(
variable
,
assigneeList
);
assigneeList
.
forEach
(
userId
->
//为相应的用户推送消息
assigneeList
.
forEach
(
userId
->
//为相应的用户推送消息
{
{
MessageSendReq
sendReq
=
new
MessageSendReq
();
if
(
userId
!=
LoginContext
.
getContext
().
getLoginUser
().
getUserId
().
toString
())
//非本人审核单据
sendReq
.
setReceiveUserIds
(
String
.
valueOf
(
userId
));
{
sendReq
.
setMsgTitle
(
"单据审批提示"
);
MessageSendReq
sendReq
=
new
MessageSendReq
();
sendReq
.
setBizType
(
"单据审批"
);
sendReq
.
setReceiveUserIds
(
String
.
valueOf
(
userId
));
sendReq
.
setMsgContent
(
"您有一条单据流程需要进行审批"
);
sendReq
.
setMsgTitle
(
"单据审批提示"
);
sendReq
.
setPriority
(
"0"
);
sendReq
.
setBizType
(
"单据审批"
);
sendReq
.
setSendTime
(
DateTime
.
now
());
sendReq
.
setMsgContent
(
"您有一条单据流程需要进行审批"
);
messageApi
.
sendMessage
(
sendReq
);
sendReq
.
setPriority
(
"0"
);
messageApi
.
queryCount
(
new
MessageReq
());
sendReq
.
setSendTime
(
DateTime
.
now
());
/*推送发送未读数量*/
messageApi
.
sendMessage
(
sendReq
);
MessageReq
req1
=
new
MessageReq
();
messageApi
.
queryCount
(
new
MessageReq
());
req1
.
setReadFlag
(
0
);
/*推送发送未读数量*/
req1
.
setReceiveUserId
(
Long
.
valueOf
(
userId
));
MessageReq
req1
=
new
MessageReq
();
Integer
count1
=
messageApi
.
queryCount
(
req1
);
req1
.
setReadFlag
(
0
);
messageApi
.
pushMsgToUser
(
userId
,
count1
);
req1
.
setReceiveUserId
(
Long
.
valueOf
(
userId
));
Integer
count1
=
messageApi
.
queryCount
(
req1
);
messageApi
.
pushMsgToUser
(
userId
,
count1
);
}
});
});
}
}
}
else
{
}
else
{
}
}
}
}
}
}
jyzb-biz/src/main/java/com/junmp/jyzb/listener/GlobalEndListener.java
View file @
fcffbf59
...
@@ -63,6 +63,7 @@ import java.util.stream.Collectors;
...
@@ -63,6 +63,7 @@ import java.util.stream.Collectors;
@SneakyThrows
@SneakyThrows
@Override
@Override
protected
void
processCompleted
(
FlowableEngineEntityEvent
event
)
{
protected
void
processCompleted
(
FlowableEngineEntityEvent
event
)
{
if
(
event
.
getType
()
==
FlowableEngineEventType
.
PROCESS_COMPLETED
)
{
if
(
event
.
getType
()
==
FlowableEngineEventType
.
PROCESS_COMPLETED
)
{
// 获取流程实例ID
// 获取流程实例ID
String
processInstanceId
=
event
.
getProcessInstanceId
();
String
processInstanceId
=
event
.
getProcessInstanceId
();
...
@@ -70,7 +71,11 @@ import java.util.stream.Collectors;
...
@@ -70,7 +71,11 @@ import java.util.stream.Collectors;
// 获取流程定义ID
// 获取流程定义ID
String
processDefinitionId
=
event
.
getProcessDefinitionId
();
String
processDefinitionId
=
event
.
getProcessDefinitionId
();
List
<
HistoricVariableInstance
>
orderType
=
historyService
.
createHistoricVariableInstanceQuery
().
processInstanceId
(
processInstanceId
).
variableName
(
"orderType"
).
list
();
List
<
HistoricVariableInstance
>
orderType
=
historyService
.
createHistoricVariableInstanceQuery
().
processInstanceId
(
processInstanceId
).
variableName
(
"orderType"
).
list
();
String
Type
=
orderType
.
get
(
0
).
getValue
().
toString
();
if
(
orderType
.
size
()>
0
)
{
String
Type
=
orderType
.
get
(
0
).
getValue
().
toString
();
if
(
Type
.
equals
(
"workOrder"
))
//出入库单据
if
(
Type
.
equals
(
"workOrder"
))
//出入库单据
{
{
OrderMainReq
req
=
new
OrderMainReq
();
OrderMainReq
req
=
new
OrderMainReq
();
...
@@ -112,31 +117,7 @@ import java.util.stream.Collectors;
...
@@ -112,31 +117,7 @@ import java.util.stream.Collectors;
if
(
Type
.
equals
(
"stocktakeOrder"
)){
//盘库申请单
if
(
Type
.
equals
(
"stocktakeOrder"
)){
//盘库申请单
}
}
}
// 获取流程实例关联的变量
// Map<String, Object> processVariables = getProcessVariables(processInstanceId);
// if (processVariables!=null)
// {
// // 获取单据类型
// String documentType = (String) processVariables.get("documentType");
// updateOrderReq = JSONObject.parseObject(documentType, new TypeReference<UpdateOrderReq>() {
// });
// updateOrderReq.setExamineState("finished");
// updateOrderReq.setOrderState("ready");
// orderMainService.updateOrder(updateOrderReq);
// // 获取单据类型
// String orderReq = (String) processVariables.get("orderReq");
// // 根据单据类型执行不同的操作
// if ("equipment".equals(documentType)) {
// // 执行装备相关操作,防止循环应用,丢入消息队列
// orderMainService.AddOrder(updateOrderReq);
// } else if ("personnel".equals(documentType)) {
// // 执行人员相关操作
// // ...
// }
// }
}
}
}
}
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/listener/S
ervice
Listener.java
→
jyzb-biz/src/main/java/com/junmp/jyzb/listener/S
kipTask
Listener.java
View file @
fcffbf59
package
com
.
junmp
.
jyzb
.
listener
;
package
com
.
junmp
.
jyzb
.
listener
;
import
org.flowable.engine.RepositoryService
;
import
com.baomidou.mybatisplus.core.toolkit.ObjectUtils
;
import
com.junmp.v2.auth.api.context.LoginContext
;
import
org.apache.commons.lang3.BooleanUtils
;
import
org.flowable.bpmn.model.UserTask
;
import
org.flowable.engine.delegate.DelegateExecution
;
import
org.flowable.engine.delegate.DelegateExecution
;
import
org.flowable.engine.delegate.ExecutionListener
;
import
org.flowable.engine.delegate.ExecutionListener
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
/**
* @author LoveMyOrange
* @author LoveMyOrange
* @create 2022-10-15 19:47
* @create 2022-10-15 19:47
*/
*/
@Component
@Component
public
class
ServiceListener
implements
ExecutionListener
{
public
class
SkipTaskListener
implements
ExecutionListener
{
@Resource
private
RepositoryService
repositoryService
;
@Override
@Override
public
void
notify
(
DelegateExecution
execution
)
{
public
void
notify
(
DelegateExecution
execution
)
{
Object
skip
=
execution
.
getVariable
(
"skip"
);
}
}
}
}
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/EquipmentTypeServiceImpl.java
View file @
fcffbf59
...
@@ -287,23 +287,39 @@ public class EquipmentTypeServiceImpl extends ServiceImpl<EquipmentTypeMapper, E
...
@@ -287,23 +287,39 @@ public class EquipmentTypeServiceImpl extends ServiceImpl<EquipmentTypeMapper, E
public
List
<
EquipmentTypeDto
>
buildTypeTree
(
List
<
EquipmentType
>
searchResults
,
List
<
EquipmentType
>
allTypes
)
{
public
List
<
EquipmentTypeDto
>
buildTypeTree
(
List
<
EquipmentType
>
searchResults
,
List
<
EquipmentType
>
allTypes
)
{
Map
<
String
,
EquipmentTypeDto
>
typeDtoMap
=
new
HashMap
<>();
Map
<
String
,
EquipmentTypeDto
>
typeDtoMap
=
new
HashMap
<>();
// 将所有
组织机构转换为OrgDto并放入map中
// 将所有
设备类型转换为EquipmentTypeDto并放入map中,同时计算子节点数量
for
(
EquipmentType
type
:
allTypes
)
{
for
(
EquipmentType
type
:
allTypes
)
{
EquipmentTypeDto
typeDto
=
new
EquipmentTypeDto
();
EquipmentTypeDto
typeDto
=
new
EquipmentTypeDto
();
BeanPlusUtil
.
copyProperties
(
type
,
typeDto
);
BeanPlusUtil
.
copyProperties
(
type
,
typeDto
);
// 其他字段的映射...
// 其他字段的映射...
// 将OrgDto放入map中,以orgId为键
// 计算子节点数量
int
childCount
=
0
;
for
(
EquipmentType
childType
:
allTypes
)
{
if
(
childType
.
getParentId
().
equals
(
type
.
getId
()))
{
childCount
++;
}
}
typeDto
.
setChildCount
(
childCount
);
if
(
childCount
<=
0
)
{
typeDto
.
setIsLeaf
(
true
);
}
else
{
typeDto
.
setIsLeaf
(
false
);
}
// 将EquipmentTypeDto放入map中,以id为键
typeDtoMap
.
put
(
typeDto
.
getId
(),
typeDto
);
typeDtoMap
.
put
(
typeDto
.
getId
(),
typeDto
);
}
}
List
<
EquipmentTypeDto
>
tree
=
new
ArrayList
<>();
List
<
EquipmentTypeDto
>
tree
=
new
ArrayList
<>();
// 遍历所有搜索到的
组织机构
数据,构建树
// 遍历所有搜索到的
设备类型
数据,构建树
for
(
EquipmentType
searchResult
:
searchResults
)
{
for
(
EquipmentType
searchResult
:
searchResults
)
{
EquipmentTypeDto
typeDto
=
typeDtoMap
.
get
(
searchResult
.
getId
());
EquipmentTypeDto
typeDto
=
typeDtoMap
.
get
(
searchResult
.
getId
());
// 如果找到对应的
Org
Dto
// 如果找到对应的
EquipmentType
Dto
if
(
typeDto
!=
null
&&
!
tree
.
contains
(
typeDto
))
{
if
(
typeDto
!=
null
&&
!
tree
.
contains
(
typeDto
))
{
// 从当前节点开始,依次向上查找上级节点,直到最顶层
// 从当前节点开始,依次向上查找上级节点,直到最顶层
String
parentId
=
typeDto
.
getParentId
();
String
parentId
=
typeDto
.
getParentId
();
...
@@ -320,7 +336,7 @@ public class EquipmentTypeServiceImpl extends ServiceImpl<EquipmentTypeMapper, E
...
@@ -320,7 +336,7 @@ public class EquipmentTypeServiceImpl extends ServiceImpl<EquipmentTypeMapper, E
// 如果上级节点是最顶层,将上级节点添加到树中,确保不重复添加
// 如果上级节点是最顶层,将上级节点添加到树中,确保不重复添加
if
(
parentDto
.
getParentId
().
equals
(
"00000000-0000-0000-0000-000000000000"
)
if
(
parentDto
.
getParentId
().
equals
(
"00000000-0000-0000-0000-000000000000"
)
&&
parentDto
.
getId
()!=
"00000000-0000-0000-0000-000000000000"
&&
!
tree
.
contains
(
parentDto
))
{
&&
!
parentDto
.
getId
().
equals
(
"00000000-0000-0000-0000-000000000000"
)
&&
!
tree
.
contains
(
parentDto
))
{
tree
.
add
(
parentDto
);
tree
.
add
(
parentDto
);
}
}
...
@@ -331,6 +347,7 @@ public class EquipmentTypeServiceImpl extends ServiceImpl<EquipmentTypeMapper, E
...
@@ -331,6 +347,7 @@ public class EquipmentTypeServiceImpl extends ServiceImpl<EquipmentTypeMapper, E
parentId
=
null
;
// 上级节点不存在,跳出循环
parentId
=
null
;
// 上级节点不存在,跳出循环
}
}
}
}
}
}
}
}
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/PubOrgServiceImpl.java
View file @
fcffbf59
...
@@ -314,6 +314,7 @@ public class PubOrgServiceImpl extends ServiceImpl<PubOrgMapper, PubOrg> implem
...
@@ -314,6 +314,7 @@ public class PubOrgServiceImpl extends ServiceImpl<PubOrgMapper, PubOrg> implem
}
}
// Convert PubOrg list to OrgDto list
// Convert PubOrg list to OrgDto list
List
<
OrgDto
>
orgs
=
new
ArrayList
<>();
List
<
OrgDto
>
orgs
=
new
ArrayList
<>();
list
.
forEach
(
p
->
{
list
.
forEach
(
p
->
{
OrgDto
org
=
new
OrgDto
();
OrgDto
org
=
new
OrgDto
();
BeanPlusUtil
.
copyProperties
(
p
,
org
);
BeanPlusUtil
.
copyProperties
(
p
,
org
);
...
@@ -394,11 +395,11 @@ public class PubOrgServiceImpl extends ServiceImpl<PubOrgMapper, PubOrg> implem
...
@@ -394,11 +395,11 @@ public class PubOrgServiceImpl extends ServiceImpl<PubOrgMapper, PubOrg> implem
// 添加 MatchQueryBuilder 作为 must 条件
// 添加 MatchQueryBuilder 作为 must 条件
MatchQueryBuilder
matchQueryBuilder
=
QueryBuilders
.
matchQuery
(
"dName"
,
keyword
).
operator
(
Operator
.
AND
);
MatchQueryBuilder
matchQueryBuilder
=
QueryBuilders
.
matchQuery
(
"dName"
,
keyword
).
operator
(
Operator
.
AND
);
MatchQueryBuilder
matchQueryBuilder2
=
QueryBuilders
.
matchQuery
(
"dName.pinyin"
,
keyword
).
operator
(
Operator
.
AND
);
//
MatchQueryBuilder matchQueryBuilder2 = QueryBuilders.matchQuery("dName.pinyin", keyword).operator(Operator.AND);
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
boolQueryBuilder
.
should
(
matchQueryBuilder
);
boolQueryBuilder
.
should
(
matchQueryBuilder
);
boolQueryBuilder
.
should
(
matchQueryBuilder2
);
//
boolQueryBuilder.should(matchQueryBuilder2);
// 添加过滤条件,只获取 delFlag 为 1 的数据
// 添加过滤条件,只获取 delFlag 为 1 的数据
builder
.
postFilter
(
QueryBuilders
.
termQuery
(
"delFlag"
,
1
));
builder
.
postFilter
(
QueryBuilders
.
termQuery
(
"delFlag"
,
1
));
...
@@ -516,7 +517,7 @@ public class PubOrgServiceImpl extends ServiceImpl<PubOrgMapper, PubOrg> implem
...
@@ -516,7 +517,7 @@ public class PubOrgServiceImpl extends ServiceImpl<PubOrgMapper, PubOrg> implem
public
List
<
OrgDto
>
getOrgTreeByEs
(
QueryOrgReq
req
)
throws
IOException
{
public
List
<
OrgDto
>
getOrgTreeByEs
(
QueryOrgReq
req
)
throws
IOException
{
// 先进行搜索,获取前20条数据
// 先进行搜索,获取前20条数据
List
<
PubOrg
>
searchResults
=
searchOrg
(
0
,
1
5
,
req
.
getOrgName
());
List
<
PubOrg
>
searchResults
=
searchOrg
(
0
,
1
0
,
req
.
getOrgName
());
req
.
setDelFlag
(
1
);
req
.
setDelFlag
(
1
);
LambdaQueryWrapper
<
PubOrg
>
wp
=
this
.
createWrapper
(
req
);
LambdaQueryWrapper
<
PubOrg
>
wp
=
this
.
createWrapper
(
req
);
// 获取所有组织机构数据
// 获取所有组织机构数据
...
@@ -624,6 +625,7 @@ public class PubOrgServiceImpl extends ServiceImpl<PubOrgMapper, PubOrg> implem
...
@@ -624,6 +625,7 @@ public class PubOrgServiceImpl extends ServiceImpl<PubOrgMapper, PubOrg> implem
LambdaQueryWrapper
<
PubOrg
>
wp
=
this
.
createWrapper
(
req
);
LambdaQueryWrapper
<
PubOrg
>
wp
=
this
.
createWrapper
(
req
);
List
<
PubOrg
>
list
=
this
.
list
(
wp
);
List
<
PubOrg
>
list
=
this
.
list
(
wp
);
List
<
OrgDto
>
orgs
=
new
ArrayList
<>();
List
<
OrgDto
>
orgs
=
new
ArrayList
<>();
Comparator
<
PubOrg
>
orgComparator
=
(
org1
,
org2
)
->
{
Comparator
<
PubOrg
>
orgComparator
=
(
org1
,
org2
)
->
{
String
orgCode1
=
org1
.
getOrgCode
();
String
orgCode1
=
org1
.
getOrgCode
();
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/FlowInstanceServiceImpl.java
View file @
fcffbf59
...
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
...
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.alibaba.fastjson.TypeReference
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.ObjectUtils
;
import
com.junmp.junmpProcess.dto.StartProcessInstanceDTO
;
import
com.junmp.junmpProcess.dto.StartProcessInstanceDTO
;
import
com.junmp.junmpProcess.factory.FlowServiceFactory
;
import
com.junmp.junmpProcess.factory.FlowServiceFactory
;
import
com.junmp.junmpProcess.service.IFlowInstanceService
;
import
com.junmp.junmpProcess.service.IFlowInstanceService
;
...
@@ -20,6 +21,8 @@ import com.junmp.v2.common.util.BeanPlusUtil;
...
@@ -20,6 +21,8 @@ import com.junmp.v2.common.util.BeanPlusUtil;
import
com.junmp.v2.sys.user.entity.SysUser
;
import
com.junmp.v2.sys.user.entity.SysUser
;
import
com.junmp.v2.sys.user.service.SysUserService
;
import
com.junmp.v2.sys.user.service.SysUserService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.BooleanUtils
;
import
org.flowable.bpmn.model.UserTask
;
import
org.flowable.common.engine.api.FlowableObjectNotFoundException
;
import
org.flowable.common.engine.api.FlowableObjectNotFoundException
;
import
org.flowable.common.engine.impl.identity.Authentication
;
import
org.flowable.common.engine.impl.identity.Authentication
;
import
org.flowable.engine.history.HistoricActivityInstance
;
import
org.flowable.engine.history.HistoricActivityInstance
;
...
@@ -136,25 +139,41 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
...
@@ -136,25 +139,41 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
// {
// {
// return ApiRes.failure("流程不存在或已挂起");
// return ApiRes.failure("流程不存在或已挂起");
// }
// }
try
{
//
try {
ProcessInstance
processInstance
=
processInstanceBuilder
ProcessInstance
processInstance
=
processInstanceBuilder
.
processDefinitionId
(
processInstanceDto
.
getProcessDefinitionId
())
.
processDefinitionId
(
processInstanceDto
.
getProcessDefinitionId
())
.
variable
(
"initiator"
,
StartUser
.
getUserId
()
)
.
variable
(
"initiator"
,
StartUser
!=
null
?
StartUser
.
getUserId
()
:
null
)
.
variables
(
processVariables
)
.
variables
(
processVariables
!=
null
?
processVariables
:
Collections
.
emptyMap
()
)
.
businessStatus
(
BUSINESS_STATUS_1
)
.
businessStatus
(
BUSINESS_STATUS_1
)
.
start
();
.
start
();
// 从流程执行上下文中获取流程变量
Object
skip
=
runtimeService
.
getVariable
(
processInstance
.
getId
(),
"skip"
);
if
(
ObjectUtils
.
isNotEmpty
(
skip
)
&&
BooleanUtils
.
toBoolean
(
skip
.
toString
())){
Task
currentTask
=
taskService
.
createTaskQuery
().
processInstanceId
(
processInstance
.
getId
()).
singleResult
();
// 直接完成当前任务
taskService
.
complete
(
currentTask
.
getId
());
return
processInstance
.
getId
();
}
else
{
Task
task
=
taskService
.
createTaskQuery
().
processInstanceId
(
processInstance
.
getId
()).
singleResult
();
Task
task
=
taskService
.
createTaskQuery
().
processInstanceId
(
processInstance
.
getId
()).
singleResult
();
task
.
setAssignee
(
StartUser
.
getUserId
().
toString
());
task
.
setAssignee
(
StartUser
.
getUserId
().
toString
());
return
processInstance
.
getProcessInstanceId
();
return
processInstance
.
getProcessInstanceId
();
}
catch
(
Exception
e
)
{
String
fullErrorMessage
=
getFullErrorMessage
(
e
);
// 处理在启动流程实例时发生的异常
throw
new
ServiceException
(
OrderExceptionEnum
.
ROLE_ERROR
);
// throw new ServiceException(fullErrorMessage);
}
}
// } catch (Exception e) {
// String fullErrorMessage = getFullErrorMessage(e);
// // 处理在启动流程实例时发生的异常
// throw new ServiceException(OrderExceptionEnum.ROLE_ERROR);
//// throw new ServiceException(fullErrorMessage);
//
// }
//手动完成第一个任务
//手动完成第一个任务
}
}
...
...
jyzb-process/src/main/java/com/junmp/junmpProcess/utils/BpmnConvert.java
View file @
fcffbf59
...
@@ -195,6 +195,8 @@ public class BpmnConvert {
...
@@ -195,6 +195,8 @@ public class BpmnConvert {
ObjectMapper
objectMapper
=
new
ObjectMapper
();
ObjectMapper
objectMapper
=
new
ObjectMapper
();
JsonNode
[]
approverGroups
=
objectMapper
.
convertValue
(
node
.
get
(
"approverGroups"
),
JsonNode
[].
class
);
JsonNode
[]
approverGroups
=
objectMapper
.
convertValue
(
node
.
get
(
"approverGroups"
),
JsonNode
[].
class
);
userTask
.
setExecutionListeners
(
getTaskListeners
());
//角色监听
userTask
.
setExecutionListeners
(
getTaskListeners
());
//角色监听
// userTask.setExecutionListeners(SkipTaskListeners());//跳过事件监听
MultiInstanceLoopCharacteristics
multiInstanceLoopCharacteristics
=
new
MultiInstanceLoopCharacteristics
();
MultiInstanceLoopCharacteristics
multiInstanceLoopCharacteristics
=
new
MultiInstanceLoopCharacteristics
();
// 审批人集合参数
// 审批人集合参数
multiInstanceLoopCharacteristics
.
setInputDataItem
(
userTask
.
getId
()+
"assigneeList"
);
multiInstanceLoopCharacteristics
.
setInputDataItem
(
userTask
.
getId
()+
"assigneeList"
);
...
@@ -217,15 +219,38 @@ public class BpmnConvert {
...
@@ -217,15 +219,38 @@ public class BpmnConvert {
*/
*/
private
static
List
<
FlowableListener
>
getTaskListeners
()
{
private
static
List
<
FlowableListener
>
getTaskListeners
()
{
ArrayList
<
FlowableListener
>
taskListeners
=
new
ArrayList
<>();
ArrayList
<
FlowableListener
>
taskListeners
=
new
ArrayList
<>();
// 第一个监听器
FlowableListener
counterSignListener
=
new
FlowableListener
();
counterSignListener
.
setEvent
(
ExecutionListener
.
EVENTNAME_START
);
counterSignListener
.
setImplementationType
(
IMPLEMENTATION_TYPE_DELEGATEEXPRESSION
);
counterSignListener
.
setImplementation
(
"${counterSignListener}"
);
taskListeners
.
add
(
counterSignListener
);
// 第二个监听器
FlowableListener
skipTaskListener
=
new
FlowableListener
();
skipTaskListener
.
setEvent
(
ExecutionListener
.
EVENTNAME_START
);
skipTaskListener
.
setImplementationType
(
IMPLEMENTATION_TYPE_DELEGATEEXPRESSION
);
skipTaskListener
.
setImplementation
(
"${skipTaskListener}"
);
taskListeners
.
add
(
skipTaskListener
);
return
taskListeners
;
}
/**
* 监听任务启动后角色分配事件
*
* @return 监听节点列表
*/
private
static
List
<
FlowableListener
>
SkipTaskListeners
()
{
ArrayList
<
FlowableListener
>
taskListeners
=
new
ArrayList
<>();
//监听器开始class
//监听器开始class
FlowableListener
listener
=
new
FlowableListener
();
FlowableListener
listener
=
new
FlowableListener
();
listener
.
setEvent
(
ExecutionListener
.
EVENTNAME_START
);
//监听任务启动
listener
.
setEvent
(
ExecutionListener
.
EVENTNAME_START
);
//监听任务启动
listener
.
setImplementationType
(
IMPLEMENTATION_TYPE_DELEGATEEXPRESSION
);
listener
.
setImplementationType
(
IMPLEMENTATION_TYPE_DELEGATEEXPRESSION
);
listener
.
setImplementation
(
"${
counterSign
Listener}"
);
//启动角色分配监听事件
listener
.
setImplementation
(
"${
SkipTask
Listener}"
);
//启动角色分配监听事件
taskListeners
.
add
(
listener
);
taskListeners
.
add
(
listener
);
return
taskListeners
;
return
taskListeners
;
}
}
/**
/**
* 绘制分支节点
* 绘制分支节点
* @param process 绘图对象
* @param process 绘图对象
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论