From 1ded1581d41b313da86c89e143dce169b0e5e0e0 Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Tue, 16 Jun 2026 15:22:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A1=E6=A3=80=E5=B7=A5=E5=8D=95=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QmsIssueTicketControllerService.java | 12 ++++----- ...msIssueTicketProcessControllerService.java | 26 +++++++++++++++++-- ...TicketProcessMeasureControllerService.java | 26 +++++++++++++++++-- .../mapper/QmsIssueTicketToDoMapper.xml | 2 +- 4 files changed, 54 insertions(+), 12 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 65e4757a..86216952 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 @@ -3428,11 +3428,8 @@ public class QmsIssueTicketControllerService { boolean isResponsiblePerson = currentUserId.equals(ticket.getApprovalUserId()); // 判断当前用户是否为处理人 - QmsIssueTicketProcess myProcess = allProcesses.stream() - .filter(p -> currentUserId.equals(p.getHandlerUserId())) - .findFirst() - .orElse(null); - boolean isHandler = myProcess != null; + boolean isHandler = allProcesses.stream() + .anyMatch(p -> currentUserId.equals(p.getHandlerUserId())); // 判断是否为领导:1.已在process表记录了leaderUserId 2.或当前用户是处理人的部门负责人 boolean isLeader = allProcesses.stream() @@ -3462,8 +3459,9 @@ public class QmsIssueTicketControllerService { && ticket.getApprovalStatus() == null; boolean responsibleCanDispatch = isResponsiblePerson && isProcessingStatus; - Short handlerApprovalStatus = isHandler ? myProcess.getApprovalStatus() : null; - boolean handlerCanReview = isHandler && handlerApprovalStatus == null; + boolean handlerCanReview = allProcesses.stream() + .filter(p -> currentUserId.equals(p.getHandlerUserId())) + .anyMatch(p -> p.getApprovalStatus() == null && p.getLeaderApprovalResult() == null); boolean handlerCanEdit = handlerCanReview; boolean leaderCanReview = isLeader && hasPendingLeaderReview(allProcesses, currentUserId); 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 7f469a8c..0237ff3e 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 @@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Objects; @@ -298,11 +299,32 @@ public class QmsIssueTicketProcessControllerService { return null; } return processes.stream() - .filter(p -> StrUtil.isNotBlank(p.getTaskResultIds())) - .findFirst() + .min(Comparator.comparingInt(p -> getProcessPriority(p, currentUserId))) .orElse(processes.get(0)); } + private int getProcessPriority(QmsIssueTicketProcess process, Long currentUserId) { + if (Objects.equals(process.getHandlerUserId(), currentUserId) + && process.getApprovalStatus() == null + && process.getLeaderApprovalResult() == null) { + return 0; + } + if (Objects.equals(process.getApprovalUserId(), currentUserId) + && process.getApprovalStatus() == null + && process.getLeaderApprovalResult() == null) { + return 1; + } + if (Objects.equals(process.getLeaderUserId(), currentUserId) + && Objects.equals(process.getApprovalStatus(), (short) 0) + && process.getLeaderApprovalResult() == null) { + return 2; + } + if (StrUtil.isNotBlank(process.getTaskResultIds())) { + return 3; + } + return 4; + } + 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 acdfdb60..1c859cc0 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 @@ -20,6 +20,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.Comparator; import java.util.List; import java.util.Objects; @@ -236,11 +237,32 @@ public class QmsIssueTicketProcessMeasureControllerService { throw new NflgException(STATE.BusinessError, "未找到当前用户的工单处理记录"); } return processes.stream() - .filter(p -> StrUtil.isNotBlank(p.getTaskResultIds())) - .findFirst() + .min(Comparator.comparingInt(p -> getProcessPriority(p, userId))) .orElse(processes.get(0)); } + private int getProcessPriority(QmsIssueTicketProcess process, Long userId) { + if (Objects.equals(process.getHandlerUserId(), userId) + && process.getApprovalStatus() == null + && process.getLeaderApprovalResult() == null) { + return 0; + } + if (Objects.equals(process.getApprovalUserId(), userId) + && process.getApprovalStatus() == null + && process.getLeaderApprovalResult() == null) { + return 1; + } + if (Objects.equals(process.getLeaderUserId(), userId) + && Objects.equals(process.getApprovalStatus(), (short) 0) + && process.getLeaderApprovalResult() == null) { + return 2; + } + if (StrUtil.isNotBlank(process.getTaskResultIds())) { + return 3; + } + return 4; + } + /** * 保存措施记录(先删除旧数据,再分别插入临时措施和永久措施) */ diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsIssueTicketToDoMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsIssueTicketToDoMapper.xml index 3d1a7cb9..6c5303e3 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsIssueTicketToDoMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsIssueTicketToDoMapper.xml @@ -13,7 +13,7 @@ vit.* FROM qms_issue_ticket_todo itd INNER JOIN v_qms_issue_ticket vit ON itd.ticket_id = vit.ticket_id - where itd.handler_user_id = #{userId} and (vit.handler_user_id=#{userId} or vit.approval_user_id=#{userId}) + where itd.handler_user_id = #{userId} AND vit.source_type = #{request.sourceType}