From ae2a329016f2de1f8649c3af242138d42fe1afdc Mon Sep 17 00:00:00 2001 From: funny <834502597@qq.com> Date: Thu, 14 May 2026 09:14:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E5=88=86=E6=B4=BE=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QmsIssueTicketControllerService.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index fdf802d7..7f5cf607 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -1791,14 +1791,35 @@ public class QmsIssueTicketControllerService { List allProcesses = issueTicketProcessService.lambdaQuery() .eq(QmsIssueTicketProcess::getIssueTicketId, id) .list(); + + // 判断是否为处理人/审批人 + boolean isHandler = allProcesses.stream() + .anyMatch(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId())); + + // 判断是否为领导:1.已在process表记录了leaderUserId 2.或当前用户是处理人的部门负责人 boolean isLeader = allProcesses.stream() .anyMatch(p -> currentUserId.equals(p.getLeaderUserId())); + if (!isLeader) { + for (QmsIssueTicketProcess p : allProcesses) { + if (p.getHandlerUserId() == null) continue; + UserInterior handlerInterior = userInteriorService.lambdaQuery() + .eq(UserInterior::getUserId, p.getHandlerUserId()) + .one(); + if (handlerInterior != null && handlerInterior.getDeptId() != null) { + Department dept = departmentService.getById(handlerInterior.getDeptId()); + if (dept != null && currentUserId.equals(dept.getHeadUserId())) { + isLeader = true; + break; + } + } + } + } if (isLeader) { // 领导:仅有审核权限,无编辑权限 vo.setIsReview(true); vo.setIsEdit(false); - } else { + } else if (isHandler) { // 处理人/审批人 boolean hasUnapproved = allProcesses.stream() .filter(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId())) @@ -1810,6 +1831,10 @@ public class QmsIssueTicketControllerService { .anyMatch(p -> p.getApprovalStatus() == null || (p.getLeaderApprovalResult() != null && p.getLeaderApprovalResult() == 1)); vo.setIsEdit(canEdit); + } else { + // 其他角色:无权限 + vo.setIsReview(false); + vo.setIsEdit(false); } }