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 f1826001..6a2deb7a 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 @@ -1794,14 +1794,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())) @@ -1813,6 +1834,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); } }