From 9b507f06c4a7ff9ad39d25b45bb11982bc814e5d Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期日, 02 六月 2024 10:19:18 +0800 Subject: [PATCH] update 增加通用接口 降低耦合 --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java | 71 +++++++++++++++++++++++------------ 1 files changed, 47 insertions(+), 24 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 f475f19..aa84387 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 @@ -7,6 +7,8 @@ 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; @@ -14,6 +16,7 @@ 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; @@ -25,7 +28,6 @@ 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.flowable.cmd.UpdateHiTaskInstCmd; import org.dromara.workflow.mapper.ActHiTaskinstMapper; import org.dromara.workflow.service.IActHiProcinstService; @@ -38,12 +40,13 @@ 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.service.impl.persistence.entity.TaskEntity; import java.util.*; -import static org.dromara.workflow.common.constant.FlowConstant.PROCESS_INSTANCE_VO; +import static org.dromara.workflow.common.constant.FlowConstant.BUSINESS_INSTANCE_DTO; /** * 宸ヤ綔娴佸伐鍏� @@ -225,10 +228,10 @@ /** * 鑾峰彇褰撳墠娴佺▼鐘舵�� * - * @param processInstanceId 娴佺▼瀹炰緥id + * @param businessKey 涓氬姟id */ - public static String getBusinessStatus(String processInstanceId) { - HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult(); + public static String getBusinessStatus(String businessKey) { + HistoricProcessInstance historicProcessInstance = QueryUtils.hisBusinessKeyQuery(businessKey).singleResult(); return historicProcessInstance.getBusinessStatus(); } @@ -238,20 +241,21 @@ * @param obj 涓氬姟瀵硅薄 * @param businessKey 涓氬姟id */ - public static void setProcessInstanceVo(Object obj, String businessKey) { + 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) { - ProcessInstanceVo processInstanceVo = new ProcessInstanceVo(); - processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - ReflectUtils.invokeSetter(obj, PROCESS_INSTANCE_VO, processInstanceVo); + BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); + businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); + ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO); return; } - ProcessInstanceVo processInstanceVo = BeanUtil.toBean(actHiProcinst, ProcessInstanceVo.class); - processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus())); - ReflectUtils.invokeSetter(obj, PROCESS_INSTANCE_VO, processInstanceVo); + BusinessInstanceDTO businessInstanceDTO = BeanUtil.toBean(actHiProcinst, BusinessInstanceDTO.class); + businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); + businessInstanceDTO.setProcessDefinitionId(actHiProcinst.getProcDefId()); + ReflectUtils.invokeSetter(obj, BUSINESS_INSTANCE_DTO, businessInstanceDTO); } /** @@ -261,7 +265,7 @@ * @param idList 涓氬姟id * @param fieldName 涓婚敭灞炴�у悕绉� */ - public static void setProcessInstanceListVo(Object obj, List<String> idList, String fieldName) { + public static void setBusinessInstanceListDTO(Object obj, List<String> idList, String fieldName) { if (CollUtil.isEmpty(idList) || obj == null) { return; } @@ -270,21 +274,22 @@ for (Object o : collection) { String fieldValue = ReflectUtils.invokeGetter(o, fieldName).toString(); if (CollUtil.isEmpty(actHiProcinstList)) { - ProcessInstanceVo processInstanceVo = new ProcessInstanceVo(); - processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus())); - ReflectUtils.invokeSetter(o, PROCESS_INSTANCE_VO, processInstanceVo); + 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)) { - ProcessInstanceVo processInstanceVo = BeanUtil.toBean(actHiProcinst, ProcessInstanceVo.class); - processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus())); - ReflectUtils.invokeSetter(o, PROCESS_INSTANCE_VO, processInstanceVo); + 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 { - ProcessInstanceVo processInstanceVo = new ProcessInstanceVo(); - processInstanceVo.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); - processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstanceVo.getBusinessStatus())); - ReflectUtils.invokeSetter(o, PROCESS_INSTANCE_VO, processInstanceVo); + BusinessInstanceDTO businessInstanceDTO = new BusinessInstanceDTO(); + businessInstanceDTO.setBusinessStatus(BusinessStatusEnum.DRAFT.getStatus()); + businessInstanceDTO.setBusinessStatusName(BusinessStatusEnum.findByStatus(businessInstanceDTO.getBusinessStatus())); + ReflectUtils.invokeSetter(o, BUSINESS_INSTANCE_DTO, businessInstanceDTO); } } } @@ -340,4 +345,22 @@ } } } + + /** + * 鏍规嵁浠诲姟id鏌ヨ 褰撳墠鐢ㄦ埛鐨勪换鍔★紝妫�鏌� 褰撳墠浜哄憳 鏄惁鏄 taskId 鐨勫姙鐞嗕汉 + * + * @param taskId 浠诲姟id + * @return 缁撴灉 + */ + public static Task getTaskByCurrentUser(String taskId) { + TaskQuery taskQuery = QueryUtils.taskQuery(); + taskQuery.taskId(taskId).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())); + + List<RoleDTO> roles = LoginHelper.getLoginUser().getRoles(); + if (CollUtil.isNotEmpty(roles)) { + List<String> groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId())); + taskQuery.taskCandidateGroupIn(groupIds); + } + return taskQuery.singleResult(); + } } -- Gitblit v1.9.3