From c8ef39340e785acf03fe77cd2c0ba6016f4c87b7 Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Tue, 16 Jun 2026 08:32:47 +0800 Subject: [PATCH] =?UTF-8?q?pqc=E9=A9=B3=E5=9B=9E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QmsIssueTicketControllerService.java | 57 ++++++++++++++----- 1 file changed, 42 insertions(+), 15 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 338070df..fe6a8b87 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 @@ -302,6 +302,7 @@ public class QmsIssueTicketControllerService { // 5. 按处理人分组合并不合格项ID Map> userTaskMap = new LinkedHashMap<>(); + Map userMap = new LinkedHashMap<>(); for (QmsPqcTicketDispatchQO.AssigneeItem item : request.getAssignees()) { List taskResultIds = Arrays.stream(item.getTaskResultIds().split(",")) .filter(StrUtil::isNotBlank) @@ -312,24 +313,23 @@ public class QmsIssueTicketControllerService { if (taskResultIds.isEmpty()) { continue; } - userTaskMap.computeIfAbsent(item.getUserId(), k -> new ArrayList<>()) + + User user = getPqcDispatchUser(item.getUserId()); + VUtil.trueThrowBusinessError(user == null).throwMessage("处理人不存在:" + item.getUserId()); + + userMap.put(user.getId(), user); + userTaskMap.computeIfAbsent(user.getId(), k -> new ArrayList<>()) .addAll(taskResultIds); } VUtil.trueThrowBusinessError(userTaskMap.isEmpty()).throwMessage("请选择未分派或已驳回的不合格项"); - // 6. 批量查询处理人信息 - List userIds = new ArrayList<>(userTaskMap.keySet()); - List users = userService.listByIds(userIds); - Map userMap = users.stream() - .collect(Collectors.toMap(User::getId, u -> u)); - // 7. 为每个处理人创建处理记录并推送待办 for (Map.Entry> entry : userTaskMap.entrySet()) { Long userId = entry.getKey(); List taskResultIds = entry.getValue(); User user = userMap.get(userId); - VUtil.trueThrowBusinessError(user == null).throwMessage("处理人不存在"); + VUtil.trueThrowBusinessError(user == null).throwMessage("处理人不存在:" + userId); // 拼接不合格项ID(用逗号) String taskResultIdsStr = String.join(",", taskResultIds); @@ -361,6 +361,21 @@ public class QmsIssueTicketControllerService { .update(); } + private User getPqcDispatchUser(Long handlerUserId) { + if (handlerUserId == null) { + return null; + } + User user = userService.getById(handlerUserId); + if (user != null) { + return user; + } + UserInterior userInterior = userInteriorService.getById(handlerUserId); + if (userInterior == null || userInterior.getUserId() == null) { + return null; + } + return userService.getById(userInterior.getUserId()); + } + private Set getPqcRedispatchableTaskResultIds(QmsIssueTicket ticket) { List allUnqualified = pqcTaskRecordDetailsService.lambdaQuery() .eq(QmsPqcTaskRecordDetails::getTaskId, ticket.getSourceId()) @@ -2595,9 +2610,12 @@ public class QmsIssueTicketControllerService { .eq(QmsIssueTicketProcess::getIssueTicketId, id) .eq(QmsIssueTicketProcess::getHandlerUserId, currentUserId) .list(); + List effectiveProcesses = processes.stream() + .filter(p -> !Objects.equals(p.getApprovalStatus(), (short) 1)) + .collect(Collectors.toList()); // 查询当前登录人的处理记录 - QmsIssueTicketProcess process = CollectionUtil.isEmpty(processes) ? null : processes.get(0); + QmsIssueTicketProcess process = CollectionUtil.isEmpty(effectiveProcesses) ? null : effectiveProcesses.get(0); if (process != null && StrUtil.isNotBlank(process.getTaskResultIds())) { // 解析不合格项ID @@ -2721,17 +2739,17 @@ public class QmsIssueTicketControllerService { } } } - vo.setIssueDetails(buildPqcIssueDetails(processes)); - if (CollectionUtil.isNotEmpty(processes)) { + vo.setIssueDetails(buildPqcIssueDetails(ticket, effectiveProcesses)); + if (CollectionUtil.isNotEmpty(effectiveProcesses)) { Long temporaryTypeIdAll = dictionaryItemService.getId("工单解决措施", "临时纠正措施"); Long permanentTypeIdAll = dictionaryItemService.getId("工单解决措施", "永久纠正措施"); Map processHandlerUserIdMap = new HashMap<>(); - for (QmsIssueTicketProcess p : processes) { + for (QmsIssueTicketProcess p : effectiveProcesses) { if (p.getId() != null) { processHandlerUserIdMap.put(p.getId(), p.getHandlerUserId()); } } - List processIdsAll = processes.stream() + List processIdsAll = effectiveProcesses.stream() .map(QmsIssueTicketProcess::getId) .filter(Objects::nonNull) .collect(Collectors.toList()); @@ -2844,8 +2862,8 @@ public class QmsIssueTicketControllerService { /** * 解析文件列表 */ - private List buildPqcIssueDetails(List processes) { - if (CollectionUtil.isEmpty(processes)) { + private List buildPqcIssueDetails(QmsIssueTicket ticket, List processes) { + if (ticket == null || ticket.getSourceId() == null) { return new ArrayList<>(); } @@ -2857,6 +2875,15 @@ public class QmsIssueTicketControllerService { taskResultProcessMap.putIfAbsent(taskResultId, process); } } + List allUnqualified = pqcTaskRecordDetailsService.lambdaQuery() + .eq(QmsPqcTaskRecordDetails::getTaskId, ticket.getSourceId()) + .eq(QmsPqcTaskRecordDetails::getReviewEnable, false) + .list(); + for (QmsPqcTaskRecordDetails detail : allUnqualified) { + if (detail.getId() != null && !orderedTaskResultIds.contains(detail.getId())) { + orderedTaskResultIds.add(detail.getId()); + } + } if (CollectionUtil.isEmpty(orderedTaskResultIds)) { return new ArrayList<>(); }