From 3879fa5df2e9a80e924d9df55e11a65de7dd71a2 Mon Sep 17 00:00:00 2001 From: TomXin <766781886@qq.com> Date: 星期一, 13 五月 2024 16:29:43 +0800 Subject: [PATCH] 修正Oracle的sql --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java | 83 +++++++++++++++++++++-------------------- 1 files changed, 43 insertions(+), 40 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 6f75fb9..f475f19 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.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; @@ -15,8 +17,6 @@ import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; -import org.dromara.system.domain.SysUserRole; -import org.dromara.system.domain.vo.SysUserVo; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.enums.BusinessStatusEnum; import org.dromara.workflow.common.enums.MessageTypeEnum; @@ -29,7 +29,6 @@ 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.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.FlowNode; import org.flowable.common.engine.api.delegate.Expression; @@ -55,7 +54,7 @@ public class WorkflowUtils { private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class); - private static final IWorkflowUserService WORKFLOW_USER_SERVICE = SpringUtils.getBean(IWorkflowUserService.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); @@ -95,6 +94,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(); @@ -104,7 +104,7 @@ newTask.setProcessDefinitionId(parentTask.getProcessDefinitionId()); newTask.setProcessInstanceId(parentTask.getProcessInstanceId()); newTask.setTaskDefinitionKey(parentTask.getTaskDefinitionKey()); - newTask.setTenantId(TenantHelper.getTenantId()); + newTask.setTenantId(tenantId); list.add(newTask); } } @@ -117,7 +117,7 @@ actHiTaskinst.setProcDefId(processDefinitionId); actHiTaskinst.setProcInstId(processInstanceId); actHiTaskinst.setScopeType(TaskStatusEnum.COPY.getStatus()); - actHiTaskinst.setTenantId(TenantHelper.getTenantId()); + actHiTaskinst.setTenantId(tenantId); LambdaUpdateWrapper<ActHiTaskinst> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.in(ActHiTaskinst::getId, taskIds); ACT_HI_TASKINST_MAPPER.update(actHiTaskinst, updateWrapper); @@ -140,15 +140,14 @@ 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 = WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(groupIds); - if (CollUtil.isNotEmpty(sysUserRoles)) { + List<Long> userIds = USER_SERVICE.selectUserIdsByRoleIds(groupIds); + if (CollUtil.isNotEmpty(userIds)) { participantVo.setGroupIds(groupIds); - List<Long> userIdList = StreamUtils.toList(sysUserRoles, SysUserRole::getUserId); - 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); + List<UserDTO> userList = USER_SERVICE.selectListByIds(userIds); + if (CollUtil.isNotEmpty(userList)) { + List<Long> userIdList = StreamUtils.toList(userList, UserDTO::getUserId); + List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName); + participantVo.setCandidate(userIdList); participantVo.setCandidateName(nickNames); participantVo.setClaim(!StringUtils.isBlank(task.getAssignee())); } @@ -163,17 +162,16 @@ } } - 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); + List<UserDTO> userList = USER_SERVICE.selectListByIds(userIdList); + if (CollUtil.isNotEmpty(userList)) { + List<Long> userIds = StreamUtils.toList(userList, UserDTO::getUserId); + List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName); participantVo.setCandidate(userIds); participantVo.setCandidateName(nickNames); - if (StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) { - participantVo.setClaim(false); - } - if (!StringUtils.isBlank(task.getAssignee()) && CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) { - participantVo.setClaim(true); + // 鍒ゆ柇褰撳墠浠诲姟鏄惁鍏锋湁澶氫釜鍔炵悊浜� + if (CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) { + // 濡傛灉 assignee 瀛樺湪锛屽垯璁剧疆褰撳墠浠诲姟宸茬粡琚棰� + participantVo.setClaim(StringUtils.isNotBlank(task.getAssignee())); } } } @@ -241,7 +239,7 @@ * @param businessKey 涓氬姟id */ public static void setProcessInstanceVo(Object obj, String businessKey) { - if (StringUtils.isBlank(businessKey)) { + if (StringUtils.isBlank(businessKey) || obj == null) { return; } ActHiProcinst actHiProcinst = ACT_HI_PROCINST_SERVICE.selectByBusinessKey(businessKey); @@ -264,7 +262,7 @@ * @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 = ACT_HI_PROCINST_SERVICE.selectByBusinessKeyIn(idList); @@ -309,9 +307,9 @@ for (Task t : list) { ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId()); if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) { - List<SysUserRole> sysUserRoles = WORKFLOW_USER_SERVICE.getUserRoleListByRoleIds(taskParticipant.getGroupIds()); - if (CollUtil.isNotEmpty(sysUserRoles)) { - userIds.addAll(StreamUtils.toList(sysUserRoles, SysUserRole::getUserId)); + List<Long> userIdList = USER_SERVICE.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); + if (CollUtil.isNotEmpty(userIdList)) { + userIds.addAll(userIdList); } } List<Long> candidate = taskParticipant.getCandidate(); @@ -320,19 +318,24 @@ } } if (CollUtil.isNotEmpty(userIds)) { - List<SysUserVo> sysUserVoList = WORKFLOW_USER_SERVICE.getUserListByIds(new ArrayList<>(userIds)); + List<UserDTO> userList = USER_SERVICE.selectListByIds(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(userList, UserDTO::getEmail), "鍗曟嵁瀹℃壒鎻愰啋", message); + break; + case SMS_MESSAGE: + //todo 鐭俊鍙戦�� + break; + } } } } -- Gitblit v1.9.3