巡检任务权限管理修改

This commit is contained in:
yf001217 2026-06-14 17:01:58 +08:00
parent 085349bd08
commit 2220161145
1 changed files with 42 additions and 8 deletions

View File

@ -1546,6 +1546,41 @@ public class QmsIssueTicketControllerService {
return rules == null ? null : rules.getModelNo();
}
private boolean hasPendingLeaderReview(List<QmsIssueTicketProcess> processes, Long currentUserId) {
if (CollectionUtil.isEmpty(processes)) {
return false;
}
for (QmsIssueTicketProcess process : processes) {
if (!Objects.equals(process.getApprovalStatus(), (short) 0)
|| process.getLeaderApprovalResult() != null
|| !isCurrentUserLeaderOfProcess(process, currentUserId)) {
continue;
}
return true;
}
return false;
}
private boolean isCurrentUserLeaderOfProcess(QmsIssueTicketProcess process, Long currentUserId) {
if (currentUserId == null || process == null) {
return false;
}
if (currentUserId.equals(process.getLeaderUserId())) {
return true;
}
if (process.getHandlerUserId() == null) {
return false;
}
UserInterior handlerInterior = userInteriorService.lambdaQuery()
.eq(UserInterior::getUserId, process.getHandlerUserId())
.one();
if (handlerInterior == null || handlerInterior.getDeptId() == null) {
return false;
}
Department dept = departmentService.getById(handlerInterior.getDeptId());
return dept != null && currentUserId.equals(dept.getHeadUserId());
}
private String buildPqcIncidentDescription(List<QmsPqcTaskRecordDetails> detailList) {
if (CollectionUtil.isEmpty(detailList)) {
return "";
@ -2295,8 +2330,8 @@ public class QmsIssueTicketControllerService {
}
if (isLeader) {
// 领导有审核权限无编辑权限
vo.setIsReview(true);
// 领导存在待领导审核的处理记录时有审核权限
vo.setIsReview(hasPendingLeaderReview(allProcesses, currentUserId));
vo.setIsEdit(false);
} else if (isHandler) {
// 处理人/审批人
@ -2304,11 +2339,10 @@ public class QmsIssueTicketControllerService {
.filter(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId()))
.anyMatch(p -> p.getApprovalStatus() == null);
vo.setIsReview(hasUnapproved);
// isEdit未提交approvalStatus为null或领导驳回leaderApprovalResult==1时有编辑权限
// isEdit未提交或领导驳回重置后可编辑提交后关闭编辑权限
boolean canEdit = allProcesses.stream()
.filter(p -> currentUserId.equals(p.getHandlerUserId()) || currentUserId.equals(p.getApprovalUserId()))
.anyMatch(p -> p.getApprovalStatus() == null
|| (p.getLeaderApprovalResult() != null && p.getLeaderApprovalResult() == 1));
.anyMatch(p -> p.getApprovalStatus() == null);
vo.setIsEdit(canEdit);
} else {
// 其他角色无权限
@ -2602,10 +2636,10 @@ public class QmsIssueTicketControllerService {
// 处理人
// - isDispatch=false处理人无分派权限
// - isReview=true状态=1且审批状态为空时
// - isEdit=true状态=1
// - isEdit=true状态=1且审批状态为空
vo.setIsDispatch(false);
vo.setIsReview(ticket.getStatus() != null && ticket.getStatus() == 1 && process.getApprovalStatus() == null);
vo.setIsEdit(ticket.getStatus() != null && ticket.getStatus() == 1);
vo.setIsEdit(ticket.getStatus() != null && ticket.getStatus() == 1 && process.getApprovalStatus() == null);
} else {
// 其他角色无权限
vo.setIsDispatch(false);
@ -3196,7 +3230,7 @@ public class QmsIssueTicketControllerService {
}
// 领导权限只有审核权限
else if (isLeader) {
vo.setIsReview(true);
vo.setIsReview(hasPendingLeaderReview(allProcesses, currentUserId));
vo.setIsEdit(false);
vo.setIsDispatch(false);
vo.setIsShut(false);