From 9e2682981dd10174682a8d5195124411945fbf6c Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Mon, 15 Jun 2026 09:51:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E8=B4=9F=E8=B4=A3=E4=BA=BA?= =?UTF-8?q?=E9=A9=B3=E5=9B=9E=E4=BF=AE=E6=94=B9=20pqc=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QmsIssueTicketControllerService.java | 59 ++++++++----------- ...msIssueTicketProcessControllerService.java | 30 ++++++---- ...TicketProcessMeasureControllerService.java | 12 ++-- .../QmsPqcTaskRecordControllerService.java | 7 --- 4 files changed, 50 insertions(+), 58 deletions(-) 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 125a709f..d2fe0cd7 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 @@ -3268,42 +3268,29 @@ public class QmsIssueTicketControllerService { } // 负责人权限:工单状态为处理中时有审批和分配权限,有了审批状态后失去审批权限 - if (isResponsiblePerson) { - vo.setIsReview(status != null && status == 1 && ticket.getApprovalStatus() == null); - vo.setIsDispatch(status != null && status == 1); - vo.setIsEdit(false); - vo.setIsShut(false); - } - // 处理人权限:未提交或领导驳回重置后可编辑,处理人提交后关闭编辑权限 - else if (isHandler) { - Short handlerApprovalStatus = myProcess.getApprovalStatus(); - vo.setIsReview(handlerApprovalStatus == null); - vo.setIsEdit(handlerApprovalStatus == null); - vo.setIsDispatch(false); - vo.setIsShut(false); - } - // 领导权限:只有审核权限 - else if (isLeader) { - vo.setIsReview(hasPendingLeaderReview(allProcesses, currentUserId)); - vo.setIsEdit(false); - vo.setIsDispatch(false); - vo.setIsShut(false); - } - // 创建人权限 - else if (currentUserId.equals(ticket.getCreateUserId())) { - vo.setIsReview(false); - vo.setIsDispatch(status != null && status == 0); - vo.setIsEdit(false); - // 创建人且工单状态为已完成时,有关闭权限 - vo.setIsShut(status != null && status == 2); - } - // 其他 - else { - vo.setIsReview(false); - vo.setIsDispatch(false); - vo.setIsEdit(false); - vo.setIsShut(false); - } + boolean isCreator = currentUserId.equals(ticket.getCreateUserId()); + boolean isProcessingStatus = status != null && (status == 0 || status == 1); + boolean isCompletedStatus = status != null && status == 2; + + boolean responsibleCanReview = isResponsiblePerson + && status != null + && status == 1 + && ticket.getApprovalStatus() == null; + boolean responsibleCanDispatch = isResponsiblePerson && isProcessingStatus; + + Short handlerApprovalStatus = isHandler ? myProcess.getApprovalStatus() : null; + boolean handlerCanReview = isHandler && handlerApprovalStatus == null; + boolean handlerCanEdit = handlerCanReview; + + boolean leaderCanReview = isLeader && hasPendingLeaderReview(allProcesses, currentUserId); + + boolean creatorCanDispatch = isCreator && status != null && status == 0; + boolean creatorCanShut = isCreator && isCompletedStatus; + + vo.setIsReview(responsibleCanReview || handlerCanReview || leaderCanReview); + vo.setIsDispatch(responsibleCanDispatch || creatorCanDispatch); + vo.setIsEdit(handlerCanEdit); + vo.setIsShut(creatorCanShut); return vo; } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java index b8ca3c6f..e4d304d1 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessControllerService.java @@ -157,16 +157,7 @@ public class QmsIssueTicketProcessControllerService { } // 2. 通过工单ID + 当前登录人查找处理记录 - QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery() - .eq(QmsIssueTicketProcess::getIssueTicketId, request.getId()) - .and(w -> w - .eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId) - .or() - .eq(QmsIssueTicketProcess::getApprovalUserId, currentUserId) - .or() - .eq(QmsIssueTicketProcess::getLeaderUserId, currentUserId)) - .last("LIMIT 1") - .one(); + QmsIssueTicketProcess process = getCurrentUserProcess(request.getId(), currentUserId); // 如果没找到,检查当前用户是否为处理人的部门负责人 if (process == null) { @@ -251,6 +242,25 @@ public class QmsIssueTicketProcessControllerService { /** * 领导审批统一处理(PDI和巡检共用) */ + private QmsIssueTicketProcess getCurrentUserProcess(Long ticketId, Long currentUserId) { + List processes = issueTicketProcessService.lambdaQuery() + .eq(QmsIssueTicketProcess::getIssueTicketId, ticketId) + .and(w -> w + .eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId) + .or() + .eq(QmsIssueTicketProcess::getApprovalUserId, currentUserId) + .or() + .eq(QmsIssueTicketProcess::getLeaderUserId, currentUserId)) + .list(); + if (processes.isEmpty()) { + return null; + } + return processes.stream() + .filter(p -> StrUtil.isNotBlank(p.getTaskResultIds())) + .findFirst() + .orElse(processes.get(0)); + } + private void rejectInspectionByResponsible(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket, LocalDateTime now, Long currentUserId, String currentUserName) { issueTicketToDoService.processed(ticket.getId()); diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessMeasureControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessMeasureControllerService.java index c150261d..ea2b0ccf 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessMeasureControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketProcessMeasureControllerService.java @@ -211,7 +211,7 @@ public class QmsIssueTicketProcessMeasureControllerService { * 通过工单ID + 用户ID查找处理记录 */ private QmsIssueTicketProcess findProcessByTicketAndUser(Long ticketId, Long userId) { - QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery() + List processes = issueTicketProcessService.lambdaQuery() .eq(QmsIssueTicketProcess::getIssueTicketId, ticketId) .and(w -> w .eq(QmsIssueTicketProcess::getHandlerUserId, userId) @@ -219,12 +219,14 @@ public class QmsIssueTicketProcessMeasureControllerService { .eq(QmsIssueTicketProcess::getApprovalUserId, userId) .or() .eq(QmsIssueTicketProcess::getLeaderUserId, userId)) - .last("LIMIT 1") - .one(); - if (process == null) { + .list(); + if (processes.isEmpty()) { throw new NflgException(STATE.BusinessError, "未找到当前用户的工单处理记录"); } - return process; + return processes.stream() + .filter(p -> StrUtil.isNotBlank(p.getTaskResultIds())) + .findFirst() + .orElse(processes.get(0)); } /** diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPqcTaskRecordControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPqcTaskRecordControllerService.java index 1417814d..f2d9d48e 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPqcTaskRecordControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPqcTaskRecordControllerService.java @@ -1576,13 +1576,6 @@ public class QmsPqcTaskRecordControllerService { .setHandlerUserName(taskRecord.getReviewerName()); issueTicketProcessService.save(ticketProcess); - QmsIssueTicketToDo ticketTodo = new QmsIssueTicketToDo() - .setTicketId(ticket.getId()) - .setHandlerUserId(taskRecord.getReviewerId()) - .setHasProcessed(false) - .setIsRead(false); - issueTicketToDoService.save(ticketTodo); - // 2. 任务总体合格时,仅生成工单,不创建重检任务 if (!Boolean.FALSE.equals(taskRecord.getEnable())) { return ticket.getId();