From 6ea777d584e70a8480a3eebff66b640e4a4bed7b Mon Sep 17 00:00:00 2001
From: gssong <1742057357@qq.com>
Date: 星期一, 08 四月 2024 21:32:27 +0800
Subject: [PATCH] Merge branch 'dev' of https://gitee.com/dromara/RuoYi-Vue-Plus into dev
---
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java | 116 +++++++++++++++++++++++-----------------------------------
1 files changed, 46 insertions(+), 70 deletions(-)
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
index bb0e52b..6979671 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java
@@ -5,6 +5,8 @@
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -21,26 +23,20 @@
import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.workflow.domain.ActHiTaskinst;
-import org.dromara.workflow.domain.vo.MultiInstanceVo;
-import org.dromara.workflow.domain.vo.ParticipantVo;
-import org.dromara.workflow.domain.vo.ProcessInstanceVo;
+import org.dromara.workflow.domain.vo.*;
import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd;
import org.dromara.workflow.mapper.ActHiTaskinstMapper;
-import org.dromara.workflow.service.IActHiProcinstService;
-import org.dromara.workflow.service.IWorkflowUserService;
-import org.dromara.workflow.service.impl.WorkflowUserServiceImpl;
-import org.flowable.bpmn.model.*;
+import org.dromara.workflow.service.*;
+import org.flowable.bpmn.model.BpmnModel;
+import org.flowable.bpmn.model.FlowNode;
import org.flowable.common.engine.api.delegate.Expression;
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.history.HistoricProcessInstance;
-import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
import org.flowable.identitylink.api.history.HistoricIdentityLink;
import org.flowable.task.api.Task;
-import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
-import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import java.util.*;
@@ -52,14 +48,12 @@
*
* @author may
*/
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class WorkflowUtils {
- public WorkflowUtils() {
- }
-
private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class);
- private static final IWorkflowUserService I_WORKFLOW_USER_SERVICE = SpringUtils.getBean(WorkflowUserServiceImpl.class);
- private static final IActHiProcinstService I_ACT_HI_PROCINST_SERVICE = SpringUtils.getBean(IActHiProcinstService.class);
+ private static final IWorkflowUserService WORKFLOW_USER_SERVICE = SpringUtils.getBean(IWorkflowUserService.class);
+ private static final IActHiProcinstService ACT_HI_PROCINST_SERVICE = SpringUtils.getBean(IActHiProcinstService.class);
private static final ActHiTaskinstMapper ACT_HI_TASKINST_MAPPER = SpringUtils.getBean(ActHiTaskinstMapper.class);
/**
@@ -73,7 +67,6 @@
task = (TaskEntity) PROCESS_ENGINE.getTaskService().newTask();
task.setCategory(currentTask.getCategory());
task.setDescription(currentTask.getDescription());
- task.setTenantId(currentTask.getTenantId());
task.setAssignee(currentTask.getAssignee());
task.setName(currentTask.getName());
task.setProcessDefinitionId(currentTask.getProcessDefinitionId());
@@ -81,9 +74,7 @@
task.setTaskDefinitionKey(currentTask.getTaskDefinitionKey());
task.setPriority(currentTask.getPriority());
task.setCreateTime(new Date());
- if (TenantHelper.isEnable()) {
- task.setTenantId(TenantHelper.getTenantId());
- }
+ task.setTenantId(TenantHelper.getTenantId());
PROCESS_ENGINE.getTaskService().saveTask(task);
}
if (ObjectUtil.isNotNull(task)) {
@@ -101,6 +92,7 @@
*/
public static void createCopyTask(List<Task> parentTaskList, List<Long> userIds) {
List<Task> list = new ArrayList<>();
+ String tenantId = TenantHelper.getTenantId();
for (Task parentTask : parentTaskList) {
for (Long userId : userIds) {
TaskEntity newTask = (TaskEntity) PROCESS_ENGINE.getTaskService().newTask();
@@ -110,9 +102,7 @@
newTask.setProcessDefinitionId(parentTask.getProcessDefinitionId());
newTask.setProcessInstanceId(parentTask.getProcessInstanceId());
newTask.setTaskDefinitionKey(parentTask.getTaskDefinitionKey());
- if (TenantHelper.isEnable()) {
- newTask.setTenantId(TenantHelper.getTenantId());
- }
+ newTask.setTenantId(tenantId);
list.add(newTask);
}
}
@@ -125,9 +115,7 @@
actHiTaskinst.setProcDefId(processDefinitionId);
actHiTaskinst.setProcInstId(processInstanceId);
actHiTaskinst.setScopeType(TaskStatusEnum.COPY.getStatus());
- if (TenantHelper.isEnable()) {
- actHiTaskinst.setTenantId(TenantHelper.getTenantId());
- }
+ actHiTaskinst.setTenantId(tenantId);
LambdaUpdateWrapper<ActHiTaskinst> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(ActHiTaskinst::getId, taskIds);
ACT_HI_TASKINST_MAPPER.update(actHiTaskinst, updateWrapper);
@@ -145,20 +133,16 @@
public static ParticipantVo getCurrentTaskParticipant(String taskId) {
ParticipantVo participantVo = new ParticipantVo();
List<HistoricIdentityLink> linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId);
- TaskQuery query = PROCESS_ENGINE.getTaskService().createTaskQuery();
- if (TenantHelper.isEnable()) {
- query.taskTenantId(TenantHelper.getTenantId());
- }
- Task task = query.taskId(taskId).singleResult();
+ Task task = QueryUtils.taskQuery().taskId(taskId).singleResult();
if (task != null && CollUtil.isNotEmpty(linksForTask)) {
List<HistoricIdentityLink> groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId()));
if (CollUtil.isNotEmpty(groupList)) {
List<Long> groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId()));
- List<SysUserRole> sysUserRoles = I_WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(groupIds);
+ List<SysUserRole> sysUserRoles = WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(groupIds);
if (CollUtil.isNotEmpty(sysUserRoles)) {
participantVo.setGroupIds(groupIds);
List<Long> userIdList = StreamUtils.toList(sysUserRoles, SysUserRole::getUserId);
- List<SysUserVo> sysUsers = I_WORKFLOW_USER_SERVICE.getUserListByIds(userIdList);
+ List<SysUserVo> sysUsers = WORKFLOW_USER_SERVICE.getUserListByIds(userIdList);
if (CollUtil.isNotEmpty(sysUsers)) {
List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId);
List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName);
@@ -177,17 +161,16 @@
}
}
- List<SysUserVo> sysUsers = I_WORKFLOW_USER_SERVICE.getUserListByIds(userIdList);
+ List<SysUserVo> sysUsers = WORKFLOW_USER_SERVICE.getUserListByIds(userIdList);
if (CollUtil.isNotEmpty(sysUsers)) {
List<Long> userIds = StreamUtils.toList(sysUsers, SysUserVo::getUserId);
List<String> nickNames = StreamUtils.toList(sysUsers, SysUserVo::getNickName);
participantVo.setCandidate(userIds);
participantVo.setCandidateName(nickNames);
- if (StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList)) {
- participantVo.setClaim(false);
- }
- if (!StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList)) {
- participantVo.setClaim(true);
+ // 鍒ゆ柇褰撳墠浠诲姟鏄惁鍏锋湁澶氫釜鍔炵悊浜�
+ if (CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) {
+ // 濡傛灉 assignee 瀛樺湪锛屽垯璁剧疆褰撳墠浠诲姟宸茬粡琚棰�
+ participantVo.setClaim(StringUtils.isNotBlank(task.getAssignee()));
}
}
}
@@ -233,16 +216,8 @@
* @param taskId 浠诲姟id
*/
public static String getBusinessStatusByTaskId(String taskId) {
- HistoricTaskInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricTaskInstanceQuery();
- if (TenantHelper.isEnable()) {
- query.taskTenantId(TenantHelper.getTenantId());
- }
- HistoricTaskInstance historicTaskInstance = query.taskId(taskId).singleResult();
- HistoricProcessInstanceQuery query1 = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery();
- if (TenantHelper.isEnable()) {
- query1.processInstanceTenantId(TenantHelper.getTenantId());
- }
- HistoricProcessInstance historicProcessInstance = query1.processInstanceId(historicTaskInstance.getProcessInstanceId()).singleResult();
+ HistoricTaskInstance historicTaskInstance = QueryUtils.hisTaskInstanceQuery().taskId(taskId).singleResult();
+ HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(historicTaskInstance.getProcessInstanceId()).singleResult();
return historicProcessInstance.getBusinessStatus();
}
@@ -252,11 +227,7 @@
* @param processInstanceId 娴佺▼瀹炰緥id
*/
public static String getBusinessStatus(String processInstanceId) {
- HistoricProcessInstanceQuery query = PROCESS_ENGINE.getHistoryService().createHistoricProcessInstanceQuery();
- if (TenantHelper.isEnable()) {
- query.processInstanceTenantId(TenantHelper.getTenantId());
- }
- HistoricProcessInstance historicProcessInstance = query.processInstanceId(processInstanceId).singleResult();
+ HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult();
return historicProcessInstance.getBusinessStatus();
}
@@ -267,10 +238,10 @@
* @param businessKey 涓氬姟id
*/
public static void setProcessInstanceVo(Object obj, String businessKey) {
- if (StringUtils.isBlank(businessKey)) {
+ if (StringUtils.isBlank(businessKey) || obj == null) {
return;
}
- ActHiProcinst actHiProcinst = I_ACT_HI_PROCINST_SERVICE.selectByBusinessKey(businessKey);
+ ActHiProcinst actHiProcinst = ACT_HI_PROCINST_SERVICE.selectByBusinessKey(businessKey);
if (actHiProcinst == null) {
ProcessInstanceVo processInstanceVo = new ProcessInstanceVo();
processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus());
@@ -290,10 +261,10 @@
* @param fieldName 涓婚敭灞炴�у悕绉�
*/
public static void setProcessInstanceListVo(Object obj, List<String> idList, String fieldName) {
- if (CollUtil.isEmpty(idList)) {
+ if (CollUtil.isEmpty(idList) || obj == null) {
return;
}
- List<ActHiProcinst> actHiProcinstList = I_ACT_HI_PROCINST_SERVICE.selectByBusinessKeyIn(idList);
+ List<ActHiProcinst> actHiProcinstList = ACT_HI_PROCINST_SERVICE.selectByBusinessKeyIn(idList);
if (obj instanceof Collection<?> collection) {
for (Object o : collection) {
String fieldValue = ReflectUtils.invokeGetter(o, fieldName).toString();
@@ -335,7 +306,7 @@
for (Task t : list) {
ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId());
if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) {
- List<SysUserRole> sysUserRoles = I_WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(taskParticipant.getGroupIds());
+ List<SysUserRole> sysUserRoles = WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(taskParticipant.getGroupIds());
if (CollUtil.isNotEmpty(sysUserRoles)) {
userIds.addAll(StreamUtils.toList(sysUserRoles, SysUserRole::getUserId));
}
@@ -346,19 +317,24 @@
}
}
if (CollUtil.isNotEmpty(userIds)) {
- List<SysUserVo> sysUserVoList = I_WORKFLOW_USER_SERVICE.getUserListByIds(new ArrayList<>(userIds));
+ List<SysUserVo> sysUserVoList = WORKFLOW_USER_SERVICE.getUserListByIds(new ArrayList<>(userIds));
for (String code : messageType) {
- if (code.equals(MessageTypeEnum.SYSTEM_MESSAGE.getCode())) {
- WebSocketMessageDto dto = new WebSocketMessageDto();
- dto.setSessionKeys(new ArrayList<>(userIds));
- dto.setMessage(message);
- WebSocketUtils.publishMessage(dto);
- }
- if (code.equals(MessageTypeEnum.EMAIL_MESSAGE.getCode())) {
- MailUtils.sendText(StreamUtils.join(sysUserVoList, SysUserVo::getEmail), "鍗曟嵁瀹℃壒鎻愰啋", message);
- }
- if (code.equals(MessageTypeEnum.SMS_MESSAGE.getCode())) {
- //todo 鐭俊鍙戦��
+ MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code);
+ if (ObjectUtil.isNotEmpty(messageTypeEnum)) {
+ switch (messageTypeEnum) {
+ case SYSTEM_MESSAGE:
+ WebSocketMessageDto dto = new WebSocketMessageDto();
+ dto.setSessionKeys(new ArrayList<>(userIds));
+ dto.setMessage(message);
+ WebSocketUtils.publishMessage(dto);
+ break;
+ case EMAIL_MESSAGE:
+ MailUtils.sendText(StreamUtils.join(sysUserVoList, SysUserVo::getEmail), "鍗曟嵁瀹℃壒鎻愰啋", message);
+ break;
+ case SMS_MESSAGE:
+ //todo 鐭俊鍙戦��
+ break;
+ }
}
}
}
--
Gitblit v1.9.3