From 3c2c87364b89de46d12e95abd5bdf8cbd2c6dbf6 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期三, 12 三月 2025 08:43:23 +0800 Subject: [PATCH] dev-init --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java | 87 ++++--------------------------------------- 1 files changed, 8 insertions(+), 79 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 aa84387..d7c4472 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 @@ -1,36 +1,30 @@ package org.dromara.workflow.utils; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; 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.domain.dto.BusinessInstanceDTO; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.core.utils.reflect.ReflectUtils; import org.dromara.common.mail.utils.MailUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; import org.dromara.workflow.common.constant.FlowConstant; -import org.dromara.workflow.common.enums.BusinessStatusEnum; import org.dromara.workflow.common.enums.MessageTypeEnum; 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.flowable.cmd.UpdateHiTaskInstCmd; import org.dromara.workflow.mapper.ActHiTaskinstMapper; -import org.dromara.workflow.service.IActHiProcinstService; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowNode; import org.flowable.common.engine.api.delegate.Expression; @@ -46,8 +40,6 @@ import java.util.*; -import static org.dromara.workflow.common.constant.FlowConstant.BUSINESS_INSTANCE_DTO; - /** * 宸ヤ綔娴佸伐鍏� * @@ -57,8 +49,6 @@ public class WorkflowUtils { private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class); - private static final UserService USER_SERVICE = SpringUtils.getBean(UserService.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); /** @@ -135,7 +125,7 @@ * * @param taskId 浠诲姟id */ - public static ParticipantVo getCurrentTaskParticipant(String taskId) { + public static ParticipantVo getCurrentTaskParticipant(String taskId, UserService userService) { ParticipantVo participantVo = new ParticipantVo(); List<HistoricIdentityLink> linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId); Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); @@ -143,10 +133,10 @@ 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<Long> userIds = USER_SERVICE.selectUserIdsByRoleIds(groupIds); + List<Long> userIds = userService.selectUserIdsByRoleIds(groupIds); if (CollUtil.isNotEmpty(userIds)) { participantVo.setGroupIds(groupIds); - List<UserDTO> userList = USER_SERVICE.selectListByIds(userIds); + List<UserDTO> userList = userService.selectListByIds(userIds); if (CollUtil.isNotEmpty(userList)) { List<Long> userIdList = StreamUtils.toList(userList, UserDTO::getUserId); List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName); @@ -165,7 +155,7 @@ } } - List<UserDTO> userList = USER_SERVICE.selectListByIds(userIdList); + List<UserDTO> userList = userService.selectListByIds(userIdList); if (CollUtil.isNotEmpty(userList)) { List<Long> userIds = StreamUtils.toList(userList, UserDTO::getUserId); List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName); @@ -236,67 +226,6 @@ } /** - * 璁剧疆娴佺▼瀹炰緥瀵硅薄 - * - * @param obj 涓氬姟瀵硅薄 - * @param businessKey 涓氬姟id - */ - public static void setBusinessInstanceDTO(Object obj, String businessKey) { - if (StringUtils.isBlank(businessKey) || obj == null) { - return; - } - ActHiProcinst actHiProcinst = ACT_HI_PROCINST_SERVICE.selectByBusinessKey(businessKey); - if (actHiProcinst == null) { - BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); - businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - return; - } - BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class); - businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); - businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId()); - ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - } - - /** - * 璁剧疆娴佺▼瀹炰緥瀵硅薄 - * - * @param obj 涓氬姟瀵硅薄 - * @param idList 涓氬姟id - * @param fieldName 涓婚敭灞炴�у悕绉� - */ - public static void setBusinessInstanceListDTO(Object obj, List<String> idList, String fieldName) { - if (CollUtil.isEmpty(idList) || obj == null) { - return; - } - 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(); - if (CollUtil.isEmpty(actHiProcinstList)) { - BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); - businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); - ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - } else { - ActHiProcinst actHiProcinst = actHiProcinstList.stream().filter(e -> e.getBusinessKey().equals(fieldValue)).findFirst().orElse(null); - if (ObjectUtil.isNotEmpty(actHiProcinst)) { - BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class); - businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); - businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId()); - ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - } else { - BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); - businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); - ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); - } - } - } - } - } - - /** * 鍙戦�佹秷鎭� * * @param list 浠诲姟 @@ -304,15 +233,15 @@ * @param messageType 娑堟伅绫诲瀷 * @param message 娑堟伅鍐呭锛屼负绌哄垯鍙戦�侀粯璁ら厤缃殑娑堟伅鍐呭 */ - public static void sendMessage(List<Task> list, String name, List<String> messageType, String message) { + public static void sendMessage(List<Task> list, String name, List<String> messageType, String message, UserService userService) { Set<Long> userIds = new HashSet<>(); if (StringUtils.isBlank(message)) { message = "鏈夋柊鐨勩��" + name + "銆戝崟鎹凡缁忔彁浜よ嚦鎮ㄧ殑寰呭姙锛岃鎮ㄥ強鏃跺鐞嗐��"; } for (Task t : list) { - ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId()); + ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId(), userService); if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) { - List<Long> userIdList = USER_SERVICE.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); + List<Long> userIdList = userService.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); if (CollUtil.isNotEmpty(userIdList)) { userIds.addAll(userIdList); } @@ -323,7 +252,7 @@ } } if (CollUtil.isNotEmpty(userIds)) { - List<UserDTO> userList = USER_SERVICE.selectListByIds(new ArrayList<>(userIds)); + List<UserDTO> userList = userService.selectListByIds(new ArrayList<>(userIds)); for (String code : messageType) { MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); if (ObjectUtil.isNotEmpty(messageTypeEnum)) { -- Gitblit v1.9.3