From fc6fd5eae4ed57342213fcd19115865b10621004 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 20 Nov 2024 11:54:36 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E8=8A=82=E7=82=B9=E6=94=AF=E6=8C=81=E6=9C=89?= =?UTF-8?q?=E6=9D=83=E9=99=90=E7=9A=84=E7=94=A8=E6=88=B7=E5=B9=B2=E9=A2=84?= =?UTF-8?q?=E8=BD=AC=E4=BA=A4=E5=85=B7=E4=BD=93=E5=AE=A1=E6=89=B9=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1293468838625280]后端-审批节点支持有权限的用户干预转交具体审批人 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1293468838625280 --- .../handler/TaskOperateHandler.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/main/java/neatlogic/module/process/operationauth/handler/TaskOperateHandler.java b/src/main/java/neatlogic/module/process/operationauth/handler/TaskOperateHandler.java index 95e060c43..168a684c2 100644 --- a/src/main/java/neatlogic/module/process/operationauth/handler/TaskOperateHandler.java +++ b/src/main/java/neatlogic/module/process/operationauth/handler/TaskOperateHandler.java @@ -881,6 +881,76 @@ public class TaskOperateHandler extends OperationAuthHandlerBase { } return true; }); + + /** + * 审批步骤转交权限 + * 判断userUuid用户是否有步骤删除任务权限逻辑: + * userUuid用户是步骤的处理人 + */ + operationBiPredicateMap.put(ProcessTaskOperationType.TRANSFER_EOA_STEP, + (processTaskVo, processTaskStepVo, userUuid, operationTypePermissionDeniedExceptionMap, extraParam) -> { + Long id = processTaskVo.getId(); + ProcessTaskOperationType operationType = ProcessTaskOperationType.TRANSFER_EOA_STEP; + //1.判断工单是否被隐藏,如果isShow=0,则提示“工单已隐藏”; + if (processTaskVo.getIsShow() == 0) { + operationTypePermissionDeniedExceptionMap.computeIfAbsent(id, key -> new HashMap<>()) + .put(operationType, new ProcessTaskHiddenException()); + return false; + } + //2.判断工单状态是否是“未提交”,如果是,则提示“工单未提交”; + //3.判断工单状态是否是“已完成”,如果是,则提示“工单已完成”; + //4.判断工单状态是否是“已取消”,如果是,则提示“工单已取消”; + //5.判断工单状态是否是“异常”,如果是,则提示“工单异常”; + //6.判断工单状态是否是“已挂起”,如果是,则提示“工单已挂起”; + //7.判断工单状态是否是“已评分”,如果是,则提示“工单已评分”; + ProcessTaskPermissionDeniedException exception = processTaskService.checkProcessTaskStatus(processTaskVo.getStatus(), + ProcessTaskStatus.DRAFT, + ProcessTaskStatus.SUCCEED, + ProcessTaskStatus.ABORTED, + ProcessTaskStatus.FAILED, + ProcessTaskStatus.HANG, + ProcessTaskStatus.SCORED); + if (exception != null) { + operationTypePermissionDeniedExceptionMap.computeIfAbsent(id, key -> new HashMap<>()) + .put(operationType, exception); + return false; + } + if (ProcessTaskStatus.RUNNING.getValue().equals(processTaskVo.getStatus())) { + //系统用户默认拥有权限 + if (SystemUser.SYSTEM.getUserUuid().equals(userUuid)) { + return true; + } + //8.判断当前用户是否有工单某个步骤的转交权限,如果没有,则提示“工单里没有您可以转交的步骤”; + boolean flag = false; + for (ProcessTaskStepVo processTaskStep : processTaskVo.getStepList()) { + // 步骤状态为已激活的才能转交,否则跳过; + if (!Objects.equals(processTaskStep.getIsActive(), 1)) { + continue; + } + if (!Objects.equals(processTaskStep.getHandler(), "eoa")) { + continue; + } + //9.判断步骤状态是否是“已完成”,如果是,则跳过; + //10.判断步骤状态是否是“异常”,如果是,则跳过; + //11.判断步骤状态是否是“已挂起”,如果是,则跳过; + if (processTaskService.checkProcessTaskStepStatus(processTaskStep.getStatus(), ProcessTaskStepStatus.SUCCEED, + ProcessTaskStepStatus.FAILED, + ProcessTaskStepStatus.HANG) != null) { + continue; + } + flag = checkOperationAuthIsConfigured(processTaskVo, processTaskStep, ProcessTaskOperationType.STEP_TRANSFER, userUuid); + if (flag) { + return true; + } + } + if (!flag) { + operationTypePermissionDeniedExceptionMap.computeIfAbsent(id, key -> new HashMap<>()) + .put(operationType, new ProcessTaskNoTransferableStepsException()); + return false; + } + } + return false; + }); } @Override -- Gitee