From aa42f0b58d1a6ea41aade461c81e484b227b8266 Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Sun, 14 Jun 2026 21:05:50 +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 --- ...msIssueTicketProcessControllerService.java | 50 +++++++++++++++++-- ...TicketProcessMeasureControllerService.java | 12 +++-- 2 files changed, 55 insertions(+), 7 deletions(-) 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 fe3aadd3..d26903cd 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 @@ -149,6 +149,13 @@ public class QmsIssueTicketProcessControllerService { QmsIssueTicket ticket = issueTicketService.getById(request.getId()); VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); + if (Objects.equals(ticket.getSourceType(), (short) 2) + && Objects.equals(ticket.getApprovalUserId(), currentUserId) + && Objects.equals(request.getApprovalStatus(), (short) 1)) { + rejectInspectionByResponsible(request, ticket, now, currentUserId, currentUserName); + return; + } + // 2. 通过工单ID + 当前登录人查找处理记录 QmsIssueTicketProcess process = issueTicketProcessService.lambdaQuery() .eq(QmsIssueTicketProcess::getIssueTicketId, request.getId()) @@ -244,6 +251,29 @@ public class QmsIssueTicketProcessControllerService { /** * 领导审批统一处理(PDI和巡检共用) */ + private void rejectInspectionByResponsible(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket, + LocalDateTime now, Long currentUserId, String currentUserName) { + issueTicketToDoService.processed(ticket.getId()); + + issueTicketService.lambdaUpdate() + .eq(QmsIssueTicket::getId, ticket.getId()) + .set(QmsIssueTicket::getStatus, (short) 2) + .set(QmsIssueTicket::getApprovalStatus, request.getApprovalStatus()) + .set(request.getApprovalOpinion() != null, + QmsIssueTicket::getApprovalOpinion, request.getApprovalOpinion()) + .set(QmsIssueTicket::getUpdateUserId, currentUserId) + .set(QmsIssueTicket::getUpdateUserName, currentUserName) + .set(QmsIssueTicket::getUpdateTime, now) + .update(); + + QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo() + .setTicketId(ticket.getId()) + .setHandlerUserId(ticket.getCreateUserId()) + .setHasProcessed(false) + .setIsRead(false); + issueTicketToDoService.save(todoItem); + } + private void leaderSubmitUnified(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket, QmsIssueTicketProcess process, LocalDateTime now, Long currentUserId, String currentUserName) { @@ -464,7 +494,7 @@ public class QmsIssueTicketProcessControllerService { } // 判断是否是最后一个处理人 - boolean isLastHandler = isLastPqcHandler(ticket.getId()); + boolean isLastHandler = isLastPqcHandler(ticket.getId(), currentUserId); if (isLastHandler) { // 最后一个处理人提交,工单状态改为2(已完成) issueTicketService.lambdaUpdate() @@ -518,14 +548,26 @@ public class QmsIssueTicketProcessControllerService { * 判断是否是PQC工单最后一个处理人 * @return true=是最后一个,false=不是 */ - private boolean isLastPqcHandler(Long ticketId) { + private boolean isLastPqcHandler(Long ticketId, Long currentUserId) { // 查询该工单所有处理记录 List processes = issueTicketProcessService.lambdaQuery() .eq(QmsIssueTicketProcess::getIssueTicketId, ticketId) .list(); - // 检查是否所有人的approval_time都不为空 + Map> processMap = processes.stream() + .filter(p -> p.getHandlerUserId() != null) + .collect(Collectors.groupingBy(QmsIssueTicketProcess::getHandlerUserId)); + if (processMap.isEmpty()) { + return false; + } + + // 按处理人去重判断,避免同一个处理人存在重复处理记录时一直卡在处理中 return processes.stream() - .allMatch(p -> p.getApprovalTime() != null); + .filter(p -> p.getHandlerUserId() != null) + .collect(Collectors.groupingBy(QmsIssueTicketProcess::getHandlerUserId)) + .values() + .stream() + .allMatch(list -> list.stream() + .anyMatch(p -> p.getApprovalTime() != null || currentUserId.equals(p.getHandlerUserId()))); } } 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 7884c21a..c150261d 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 @@ -126,14 +126,20 @@ public class QmsIssueTicketProcessMeasureControllerService { public void draftUnified(@Valid QmsIssueTicketProcessDraftQO request) { Long currentUserId = UserUtil.getUserId(); + QmsIssueTicket ticket = issueTicketService.getById(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); + + if (Objects.equals(ticket.getSourceType(), (short) 2) + && Objects.equals(ticket.getApprovalUserId(), currentUserId) + && Objects.equals(request.getApprovalStatus(), (short) 1)) { + return; + } + // 1. 通过工单ID + 当前登录人查找处理记录 QmsIssueTicketProcess process = findProcessByTicketAndUser(request.getId(), currentUserId); Long processId = process.getId(); // 2. 查询工单获取source_type - QmsIssueTicket ticket = issueTicketService.getById(request.getId()); - VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); - Short sourceType = ticket.getSourceType(); Long handlerUserId = process.getHandlerUserId(); String mergedRootCause = mergeRootCause(process.getRootCause(), request.getRootCause());