From 6054c508e1fa2868b69604a386d045971ec63422 Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Mon, 15 Jun 2026 14:58:46 +0800 Subject: [PATCH 1/5] =?UTF-8?q?pqc=E5=B7=A5=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QmsIssueTicketProcessControllerService.java | 3 ++- ...msIssueTicketProcessMeasureControllerService.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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 c95c75d8..c3454e19 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 @@ -480,9 +480,10 @@ public class QmsIssueTicketProcessControllerService { public void submitPqcHandler(QmsIssueTicketProcessDraftQO request, QmsIssueTicket ticket, QmsIssueTicketProcess process, LocalDateTime now, Long currentUserId, String currentUserName) { + QmsIssueTicketProcess latestProcess = issueTicketProcessService.getById(process.getId()); Short approvalStatus = request.getApprovalStatus() != null ? request.getApprovalStatus() - : process.getApprovalStatus(); + : latestProcess.getApprovalStatus(); VUtil.trueThrowBusinessError(approvalStatus == null).throwMessage("提交时审批状态不能为空"); VUtil.trueThrowBusinessError(approvalStatus != 0 && approvalStatus != 1) .throwMessage("不支持的审批状态"); 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 ea2b0ccf..a78fff4f 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 @@ -187,6 +187,18 @@ public class QmsIssueTicketProcessMeasureControllerService { } else if (sourceType == 3) { // PQC工单(无领导审批) if (isHandler) { + if (Objects.equals(request.getApprovalStatus(), (short) 1)) { + issueTicketProcessService.lambdaUpdate() + .eq(QmsIssueTicketProcess::getId, processId) + .set(QmsIssueTicketProcess::getApprovalStatus, request.getApprovalStatus()) + .set(request.getApprovalOpinion() != null, + QmsIssueTicketProcess::getApprovalOpinion, request.getApprovalOpinion()) + .set(QmsIssueTicketProcess::getApprovalUserId, currentUserId) + .set(QmsIssueTicketProcess::getApprovalUserName, UserUtil.getUserName()) + .update(); + return; + } + // 处理人处理:保存根本原因、审批状态和措施 issueTicketProcessService.lambdaUpdate() .eq(QmsIssueTicketProcess::getId, processId) From e17031c2ae589902c867f2ad39862b78a08d379b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 15 Jun 2026 15:16:09 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix(qms):=20=E4=BF=AE=E5=A4=8DCOA=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E9=80=BB=E8=BE=91=E5=92=8C=E8=B4=A8=E6=A3=80=E5=91=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8F=82=E6=95=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除冗余的COA报告存在性检查逻辑,简化审核流程 - 修复XML映射文件中物料编号、分类代码和描述的参数引用错误 - 统一参数访问路径为request对象下的字段引用 --- .../service/impl/QmsCoaReviewServiceImpl.java | 13 ------------- .../resources/mapper/QmsQualityInspectorMapper.xml | 12 ++++++------ 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaReviewServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaReviewServiceImpl.java index 786d7e9b..7c6653dc 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaReviewServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsCoaReviewServiceImpl.java @@ -623,19 +623,6 @@ public class QmsCoaReviewServiceImpl extends ServiceImpl + AND m.material_no = #{request.materialNo} - + AND m.material_category_code LIKE CONCAT(#{request.materialCategoryCode}, '%') - + AND m.material_desc LIKE CONCAT('%', #{request.materialDesc}, '%') UNION ALL @@ -163,13 +163,13 @@ WHERE qi.inspection_type=#{request.inspectionType} AND imci.inspector_id = ( SELECT id FROM qms_quality_inspector WHERE user_id = #{userId} LIMIT 1 ) - + AND m.material_no = #{request.materialNo} - + AND m.material_category_code LIKE CONCAT(#{request.materialCategoryCode}, '%') - + AND m.material_desc LIKE CONCAT('%', #{request.materialDesc}, '%') ORDER BY material_id ASC From c82c48881a8ca551bae21e480d6a1d31dab182a6 Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Mon, 15 Jun 2026 15:27:57 +0800 Subject: [PATCH 3/5] =?UTF-8?q?pqc=E3=80=81=E5=B7=A1=E6=A3=80=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QmsIssueTicketControllerService.java | 9 +++- ...msIssueTicketProcessControllerService.java | 47 +++++++++++++++---- 2 files changed, 46 insertions(+), 10 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 1155f804..c174a11a 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 @@ -652,7 +652,7 @@ public class QmsIssueTicketControllerService { .setIncidentDescription(incidentDescription) .setRemark(request.getRemark()) .setUnqualifiedQty(unqualifiedDetails.size()) - .setStatus((short) 1) + .setStatus((short) 0) .setCreateUserId(userId) .setCreateUserName(userName) .setCreateTime(now) @@ -661,6 +661,13 @@ public class QmsIssueTicketControllerService { .setUpdateTime(now); issueTicketService.save(entity); + QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo() + .setTicketId(entity.getId()) + .setHandlerUserId(userId) + .setHasProcessed(false) + .setIsRead(false); + issueTicketToDoService.save(todoItem); + Set fileIds = new HashSet<>(); Set itemIds = unqualifiedDetails.stream() .map(QmsPqcTaskRecordDetails::getInspectionPointItemId) 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 c3454e19..26e41218 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 @@ -293,10 +293,8 @@ public class QmsIssueTicketProcessControllerService { VUtil.trueThrowBusinessError(Objects.isNull(request.getApprovalStatus())) .throwMessage("提交时审批状态不能为空"); - // 2. 驳回时校验:handlers和审批意见不能为空 + // 2. 驳回时校验:审批意见不能为空 if (request.getApprovalStatus() == 1) { - VUtil.trueThrowBusinessError(request.getHandlers() == null || request.getHandlers().isEmpty()) - .throwMessage("驳回时处理人列表不能为空"); VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getApprovalOpinion())) .throwMessage("驳回时审批意见不能为空"); } @@ -320,16 +318,31 @@ public class QmsIssueTicketProcessControllerService { Short leaderApprovalResult = request.getApprovalStatus(); if (leaderApprovalResult == 1) { - // 驳回:只驳回传入的handlers对应的处理记录 + // 驳回:自动驳回当前领导部门下属的待审批处理记录 Long issueTicketId = ticket.getId(); - List rejectUserIds = request.getHandlers().stream() - .map(QmsIssueTicketProcessDraftQO.RejectHandlerItem::getHandlerUserId) + List rejectProcesses = issueTicketProcessService.lambdaQuery() + .eq(QmsIssueTicketProcess::getIssueTicketId, issueTicketId) + .eq(QmsIssueTicketProcess::getApprovalStatus, (short) 0) + .isNull(QmsIssueTicketProcess::getLeaderApprovalResult) + .list() + .stream() + .filter(p -> isCurrentUserHeadOfHandlerDept(p.getHandlerUserId(), currentUserId)) + .collect(Collectors.toList()); + VUtil.trueThrowBusinessError(rejectProcesses.isEmpty()) + .throwMessage("未找到当前领导可驳回的下属处理记录"); + + List rejectProcessIds = rejectProcesses.stream() + .map(QmsIssueTicketProcess::getId) + .collect(Collectors.toList()); + List rejectUserIds = rejectProcesses.stream() + .map(QmsIssueTicketProcess::getHandlerUserId) + .filter(Objects::nonNull) + .distinct() .collect(Collectors.toList()); // 更新指定处理人的记录:重置审批状态 issueTicketProcessService.lambdaUpdate() - .eq(QmsIssueTicketProcess::getIssueTicketId, issueTicketId) - .in(QmsIssueTicketProcess::getHandlerUserId, rejectUserIds) + .in(QmsIssueTicketProcess::getId, rejectProcessIds) .set(QmsIssueTicketProcess::getApprovalStatus, null) .set(QmsIssueTicketProcess::getApprovalTime, null) .set(QmsIssueTicketProcess::getLeaderApprovalResult, null) @@ -352,7 +365,9 @@ public class QmsIssueTicketProcessControllerService { for (Long userId : rejectUserIds) { QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo() .setTicketId(issueTicketId) - .setHandlerUserId(userId); + .setHandlerUserId(userId) + .setHasProcessed(false) + .setIsRead(false); issueTicketToDoService.save(todoItem); } } else if (leaderApprovalResult == 0) { @@ -444,6 +459,20 @@ public class QmsIssueTicketProcessControllerService { } } + private boolean isCurrentUserHeadOfHandlerDept(Long handlerUserId, Long currentUserId) { + if (handlerUserId == null || currentUserId == null) { + return false; + } + UserInterior handlerInterior = userInteriorService.lambdaQuery() + .eq(UserInterior::getUserId, handlerUserId) + .one(); + if (handlerInterior == null || handlerInterior.getDeptId() == null) { + return false; + } + Department department = departmentService.getById(handlerInterior.getDeptId()); + return department != null && currentUserId.equals(department.getHeadUserId()); + } + /** * PQC工单处理人提交 */ From 3ef270bb02248160a49a505a467008eaae202313 Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Mon, 15 Jun 2026 15:38:38 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=B7=A1=E6=A3=80=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...msIssueTicketProcessControllerService.java | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 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 26e41218..0ae19518 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 @@ -301,18 +301,6 @@ public class QmsIssueTicketProcessControllerService { Long processId = process.getId(); - // 3. 保存数据:前端传入approvalStatus/approvalOpinion,数据库填入leaderApprovalResult/leaderApprovalOpinion - issueTicketProcessService.lambdaUpdate() - .eq(QmsIssueTicketProcess::getId, processId) - .set(request.getApprovalOpinion() != null, - QmsIssueTicketProcess::getLeaderApprovalOpinion, request.getApprovalOpinion()) - .set(request.getApprovalStatus() != null, - QmsIssueTicketProcess::getLeaderApprovalResult, request.getApprovalStatus()) - .set(QmsIssueTicketProcess::getLeaderUserId, currentUserId) - .set(QmsIssueTicketProcess::getLeaderUserName, UserUtil.getUserName()) - .set(QmsIssueTicketProcess::getLeaderApprovalTime, now) - .update(); - issueTicketToDoService.processed(ticket.getId()); Short leaderApprovalResult = request.getApprovalStatus(); @@ -371,6 +359,17 @@ public class QmsIssueTicketProcessControllerService { issueTicketToDoService.save(todoItem); } } else if (leaderApprovalResult == 0) { + // 同意:保存领导审批结果 + issueTicketProcessService.lambdaUpdate() + .eq(QmsIssueTicketProcess::getId, processId) + .set(request.getApprovalOpinion() != null, + QmsIssueTicketProcess::getLeaderApprovalOpinion, request.getApprovalOpinion()) + .set(QmsIssueTicketProcess::getLeaderApprovalResult, request.getApprovalStatus()) + .set(QmsIssueTicketProcess::getLeaderUserId, currentUserId) + .set(QmsIssueTicketProcess::getLeaderUserName, UserUtil.getUserName()) + .set(QmsIssueTicketProcess::getLeaderApprovalTime, now) + .update(); + // 同意:检查同一工单下所有处理记录是否都已完成 Long issueTicketId = process.getIssueTicketId(); From a524e02e16c44465779ead49bb47d4d8ff016c7b Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Mon, 15 Jun 2026 16:23:11 +0800 Subject: [PATCH 5/5] =?UTF-8?q?pqc=E5=B7=A5=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...msIssueTicketProcessControllerService.java | 35 +++++++++++++++---- 1 file changed, 28 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 0ae19518..a98ff508 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 @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -86,19 +87,39 @@ public class QmsIssueTicketProcessControllerService { Collectors.mapping(QmsIssueTicketProcessAddQO.HandlerItem::getTaskResultId, Collectors.toList()) )); + List handlerUserIds = new ArrayList<>(); + // 为每个处理人创建处理记录 for (Map.Entry> entry : handlerToResultsMap.entrySet()) { doAdd(request.getIssueTicketId(), entry.getKey(), entry.getValue()); + handlerUserIds.add(entry.getKey()); } - if (Objects.equals(ticket.getSourceType(), (short) 3) && !Objects.equals(ticket.getStatus(), (short) 1)) { - issueTicketService.lambdaUpdate() - .eq(QmsIssueTicket::getId, ticket.getId()) - .set(QmsIssueTicket::getStatus, (short) 1) - .set(QmsIssueTicket::getUpdateUserId, currentUserId) - .set(QmsIssueTicket::getUpdateUserName, currentUserName) - .set(QmsIssueTicket::getUpdateTime, now) + if (Objects.equals(ticket.getSourceType(), (short) 3)) { + issueTicketToDoService.lambdaUpdate() + .eq(QmsIssueTicketToDo::getTicketId, ticket.getId()) + .eq(QmsIssueTicketToDo::getHasProcessed, false) + .set(QmsIssueTicketToDo::getHasProcessed, true) .update(); + + for (Long handlerUserId : handlerUserIds) { + QmsIssueTicketToDo todoItem = new QmsIssueTicketToDo() + .setTicketId(ticket.getId()) + .setHandlerUserId(handlerUserId) + .setHasProcessed(false) + .setIsRead(false); + issueTicketToDoService.save(todoItem); + } + + if (!Objects.equals(ticket.getStatus(), (short) 1)) { + issueTicketService.lambdaUpdate() + .eq(QmsIssueTicket::getId, ticket.getId()) + .set(QmsIssueTicket::getStatus, (short) 1) + .set(QmsIssueTicket::getUpdateUserId, currentUserId) + .set(QmsIssueTicket::getUpdateUserName, currentUserName) + .set(QmsIssueTicket::getUpdateTime, now) + .update(); + } } }