From da0d28445c95d49100b177f50c4a1baef2d01d4a Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Wed, 4 Dec 2024 11:49:47 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=8A=9E=E7=90=86=E4=BA=BA=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FlwTaskController.java | 17 ++-------- .../workflow/domain/bo/AddSignatureBo.java | 16 +++++++++ .../workflow/domain/bo/FlowDelegateBo.java | 17 ++++++++++ .../workflow/domain/bo/FlowTransferBo.java | 17 ++++++++++ .../service/impl/FlwTaskServiceImpl.java | 11 ++---- .../dromara/workflow/utils/WorkflowUtils.java | 34 ------------------- 6 files changed, 56 insertions(+), 56 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java index 75fef0e28..cb84d77fa 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -12,7 +12,6 @@ import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.warm.flow.core.entity.HisTask; @@ -26,7 +25,6 @@ import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowTaskVo; import org.dromara.workflow.service.IFlwTaskService; -import org.dromara.workflow.utils.WorkflowUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -173,9 +171,7 @@ public class FlwTaskController extends BaseController { @PostMapping("/delegateTask") public R delegateTask(@Validated({AddGroup.class}) @RequestBody FlowDelegateBo bo) { FlowParams flowParams = new FlowParams(); - flowParams.addHandlers(Collections.singletonList(USER.getCode()+bo.getUserId())); - flowParams.handler(LoginHelper.getUserIdStr()); - flowParams.permissionFlag(WorkflowUtils.permissionList()); + flowParams.addHandlers(bo.getUserIdentifierList()); flowParams.message(bo.getMessage()); flowParams.hisStatus(TaskStatusEnum.DEPUTE.getStatus()); return toAjax(taskService.depute(bo.getTaskId(), flowParams)); @@ -191,9 +187,7 @@ public class FlwTaskController extends BaseController { @PostMapping("/transferTask") public R transferTask(@Validated({AddGroup.class}) @RequestBody FlowTransferBo bo) { FlowParams flowParams = new FlowParams(); - flowParams.addHandlers(Collections.singletonList(USER.getCode()+bo.getUserId())); - flowParams.handler(LoginHelper.getUserIdStr()); - flowParams.permissionFlag(WorkflowUtils.permissionList()); + flowParams.addHandlers(bo.getUserIdentifierList()); flowParams.message(bo.getMessage()); flowParams.hisStatus(TaskStatusEnum.TRANSFER.getStatus()); return toAjax(taskService.transfer(bo.getTaskId(), flowParams)); @@ -209,9 +203,7 @@ public class FlwTaskController extends BaseController { @PostMapping("/addSignature") public R addSignature(@Validated({AddGroup.class}) @RequestBody AddSignatureBo bo) { FlowParams flowParams = new FlowParams(); - flowParams.addHandlers(StreamUtils.toList(bo.getUserIds(),u->USER.getCode()+u)); - flowParams.handler(LoginHelper.getUserIdStr()); - flowParams.permissionFlag(WorkflowUtils.permissionList()); + flowParams.addHandlers(bo.getUserIdentifierList()); flowParams.message(bo.getMessage()); flowParams.hisStatus(TaskStatusEnum.SIGN.getStatus()); return toAjax(taskService.addSignature(bo.getTaskId(), flowParams)); @@ -228,8 +220,6 @@ public class FlwTaskController extends BaseController { public R reductionSignature(@Validated({AddGroup.class}) @RequestBody ReductionSignatureBo bo) { FlowParams flowParams = new FlowParams(); flowParams.reductionHandlers(StreamUtils.toList(bo.getUserIds(),u->USER.getCode()+u)); - flowParams.handler(LoginHelper.getUserIdStr()); - flowParams.permissionFlag(WorkflowUtils.permissionList()); flowParams.message(bo.getMessage()); flowParams.hisStatus(TaskStatusEnum.SIGN_OFF.getStatus()); return toAjax(taskService.reductionSignature(bo.getTaskId(), flowParams)); @@ -275,5 +265,4 @@ public class FlwTaskController extends BaseController { return R.ok(flwTaskService.getBackTaskNode(instanceId)); } - } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/AddSignatureBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/AddSignatureBo.java index e546249bc..7f7e43aa2 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/AddSignatureBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/AddSignatureBo.java @@ -2,12 +2,15 @@ package org.dromara.workflow.domain.bo; import jakarta.validation.constraints.NotNull; import lombok.Data; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.validate.AddGroup; import java.io.Serial; import java.io.Serializable; import java.util.List; +import static org.dromara.common.core.enums.TaskAssigneeEnum.USER; + /** * 加签请求对象 * @@ -35,4 +38,17 @@ public class AddSignatureBo implements Serializable { * 意见 */ private String message; + + /** + * 获取包含用户标识符的列表 + *

+ * 该方法将用户代码(由 `USER.getCode()` 获取)与 `userIds` 列表中的每个用户ID拼接, + * 然后返回一个新的列表,其中每个元素都是用户代码与用户ID的拼接结果 + * + * @return 返回一个列表,其中每个元素是由用户代码和用户ID拼接而成的字符串 + */ + public List getUserIdentifierList() { + return StreamUtils.toList(userIds, userId -> USER.getCode() + userId); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowDelegateBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowDelegateBo.java index 20dad1253..f58f9aaab 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowDelegateBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowDelegateBo.java @@ -6,6 +6,10 @@ import org.dromara.common.core.validate.AddGroup; import java.io.Serial; import java.io.Serializable; +import java.util.Collections; +import java.util.List; + +import static org.dromara.common.core.enums.TaskAssigneeEnum.USER; /** * 委派任务请求对象 @@ -34,4 +38,17 @@ public class FlowDelegateBo implements Serializable { * 意见 */ private String message; + + /** + * 获取包含用户标识符的列表 + *

+ * 该方法将用户的代码(由 `USER.getCode()` 获取)与当前用户的 ID(`userId`)进行拼接, + * 然后返回一个包含该拼接结果的单一元素列表 + * + * @return 返回一个列表,列表中包含一个字符串元素,该元素是由用户代码和用户ID拼接而成 + */ + public List getUserIdentifierList() { + return Collections.singletonList(USER.getCode() + userId); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTransferBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTransferBo.java index 65792da19..3a1be475a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTransferBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTransferBo.java @@ -6,6 +6,10 @@ import org.dromara.common.core.validate.AddGroup; import java.io.Serial; import java.io.Serializable; +import java.util.Collections; +import java.util.List; + +import static org.dromara.common.core.enums.TaskAssigneeEnum.USER; /** * 终转办务请求对象 @@ -34,4 +38,17 @@ public class FlowTransferBo implements Serializable { * 意见 */ private String message; + + /** + * 获取包含用户标识符的列表 + *

+ * 该方法将用户的代码(由 `USER.getCode()` 获取)与当前用户的 ID(`userId`)进行拼接, + * 然后返回一个包含该拼接结果的单一元素列表 + * + * @return 返回一个列表,列表中包含一个字符串元素,该元素是由用户代码和用户ID拼接而成 + */ + public List getUserIdentifierList() { + return Collections.singletonList(USER.getCode() + userId); + } + } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index a85de469b..474ab00e4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -12,6 +12,7 @@ import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.AssigneeService; +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.mybatis.core.page.PageQuery; @@ -34,6 +35,7 @@ import org.dromara.workflow.domain.vo.FlowTaskVo; import org.dromara.workflow.domain.vo.WfCopy; import org.dromara.workflow.domain.vo.WfDefinitionConfigVo; import org.dromara.workflow.handler.FlowProcessEventHandler; +import org.dromara.workflow.handler.WorkflowPermissionHandler; import org.dromara.workflow.mapper.FlwTaskMapper; import org.dromara.workflow.service.IFlwInstanceService; import org.dromara.workflow.service.IFlwTaskService; @@ -109,7 +111,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService { FlowParams flowParams = new FlowParams(); flowParams.flowCode(wfDefinitionConfigVo.getProcessKey()); flowParams.variable(startProcessBo.getVariables()); - flowParams.handler(userId); flowParams.flowStatus(BusinessStatusEnum.DRAFT.getStatus()); Instance instance; try { @@ -160,8 +161,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService { flowParams.variable(completeTaskBo.getVariables()); flowParams.skipType(SkipType.PASS.getKey()); flowParams.message(completeTaskBo.getMessage()); - flowParams.handler(userId); - flowParams.permissionFlag(WorkflowUtils.permissionList()); flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.PASS.getStatus()); // 执行任务跳转,并根据返回的处理人设置下一步处理人 setHandler(taskService.skip(taskId, flowParams), flowTask, wfCopyList); @@ -260,7 +259,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService { public TableDataInfo getPageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); - queryWrapper.in("t.processed_by", WorkflowUtils.permissionList()); + queryWrapper.in("t.processed_by", SpringUtils.getBean(WorkflowPermissionHandler.class).permissions()); queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); Page page = flwTaskMapper.getTaskWaitByPage(pageQuery.build(), queryWrapper); return TableDataInfo.build(page); @@ -363,9 +362,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService { } flowParams.hisStatus(TaskStatusEnum.BACK.getStatus()); flowParams.message(bo.getMessage()); - flowParams.handler(userId); flowParams.nodeCode(bo.getNodeCode()); - flowParams.permissionFlag(WorkflowUtils.permissionList()); Instance instance = taskService.skip(taskId, flowParams); setHandler(instance, flowTasks.get(0), null); flowProcessEventHandler.processHandler(definition.getFlowCode(), @@ -409,9 +406,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService { //流程定义 Definition definition = defService.getById(flowTask.getDefinitionId()); FlowParams flowParams = new FlowParams(); - flowParams.handler(LoginHelper.getUserIdStr()); flowParams.message(bo.getComment()); - flowParams.permissionFlag(WorkflowUtils.permissionList()); flowParams.flowStatus(BusinessStatusEnum.TERMINATION.getStatus()) .hisStatus(TaskStatusEnum.TERMINATION.getStatus()); taskService.termination(bo.getTaskId(), flowParams); 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 97dc6f953..8b3d39a89 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 @@ -4,17 +4,13 @@ import cn.hutool.core.collection.CollUtil; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.dromara.common.core.domain.dto.UserDTO; -import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.utils.SpringUtils; -import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.warm.flow.core.entity.User; import org.dromara.warm.flow.orm.entity.FlowUser; -import org.dromara.common.core.enums.TaskAssigneeEnum; import org.dromara.workflow.service.IWfTaskAssigneeService; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; import static org.dromara.common.core.enums.TaskAssigneeEnum.USER; @@ -26,36 +22,6 @@ import static org.dromara.common.core.enums.TaskAssigneeEnum.USER; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class WorkflowUtils { - /** - * 当前用户所有权限 - * - * @return 权限列表 - */ - public static List permissionList() { - LoginUser loginUser = LoginHelper.getLoginUser(); - Long userId = loginUser.getUserId(); - Long deptId = loginUser.getDeptId(); - // 使用一个流来构建权限列表 - return Stream.of( - // 角色权限前缀 - loginUser.getRoles().stream() - .map(role -> TaskAssigneeEnum.ROLE.getCode() + role.getRoleId()), - - // 岗位权限前缀 - Stream.ofNullable(loginUser.getPosts()) - .flatMap(Collection::stream) - .map(post -> TaskAssigneeEnum.POST.getCode() + post.getPostId()), - - // 用户和部门权限 - Stream.of( - USER.getCode() + userId, - TaskAssigneeEnum.DEPT.getCode() + deptId - ) - ) - .flatMap(stream -> stream) - .collect(Collectors.toList()); - } - /** * 获取办理人 *