From ed4e0355af5d03acb5dc275c6bd61aebb3998b0c Mon Sep 17 00:00:00 2001 From: yf001217 <834502597@qq.com> Date: Sun, 14 Jun 2026 09:26:34 +0800 Subject: [PATCH] =?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 --- .../QmsPqcTaskRecordControllerService.java | 65 ++++++++++++++++++- 1 file changed, 62 insertions(+), 3 deletions(-) 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 f8ac7cc0..933b4469 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 @@ -40,6 +40,12 @@ public class QmsPqcTaskRecordControllerService { @Resource private IQmsPqcInspectionRuleService pqcInspectionRuleService; + @Resource + private IQmsInspectorModelItemService inspectorModelItemService; + + @Resource + private IQmsQualityInspectorService qualityInspectorService; + @Resource private IQmsPqcInspectionPointService pqcInspectionPointService; @@ -339,6 +345,7 @@ public class QmsPqcTaskRecordControllerService { if (Boolean.TRUE.equals(request.getIsReview())) { queryWrapper.eq(QmsPqcTaskRecord::getStatus, (short) 3) + .eq(QmsPqcTaskRecord::getReviewerId, UserUtil.getUserId()) .orderByDesc(QmsPqcTaskRecord::getCreateTime); } else if (Objects.equals(request.getType(), 1)) { queryWrapper.eq(QmsPqcTaskRecord::getStatus, (short) 0) @@ -346,6 +353,7 @@ public class QmsPqcTaskRecordControllerService { .orderByDesc(QmsPqcTaskRecord::getCreateTime); } else if (Objects.equals(request.getType(), 0)) { queryWrapper.in(QmsPqcTaskRecord::getStatus, (short) 1, (short) 2) + .eq(QmsPqcTaskRecord::getReviewerId, UserUtil.getUserId()) .orderByAsc(QmsPqcTaskRecord::getStatus) .orderByDesc(QmsPqcTaskRecord::getCreateTime); } else { @@ -1019,6 +1027,9 @@ public class QmsPqcTaskRecordControllerService { taskRecord.setSelfTesterId(currentUserId); taskRecord.setSelfTesterName(currentUserName); } + User reviewer = resolvePqcReviewerUser(taskRecord.getModelNo()); + taskRecord.setReviewerId(reviewer.getId()); + taskRecord.setReviewerName(reviewer.getUserName()); // 自检提交,状态改为1(待复核) taskRecord.setStatus((short) 1); } else { @@ -1031,6 +1042,11 @@ public class QmsPqcTaskRecordControllerService { } pqcTaskRecordService.updateById(taskRecord); + if (!hasReviewContent) { + sendPqcReviewTodoMessage(taskRecord, currentUserId, currentUserName, now); + } else { + markPqcReviewTodoDone(taskRecord.getId(), taskRecord.getReviewerId(), currentUserId, currentUserName, now); + } // 6. 同步生成工单;仅当任务总体不合格时才额外生成重检任务 Map detailIdMap = getTaskDetailIdMap(taskRecord.getId()); List unqualifiedItems = buildUnqualifiedItems(request, detailIdMap); @@ -1623,17 +1639,60 @@ public class QmsPqcTaskRecordControllerService { .setSourceTypeId(sourceTypeId) .setSourceId(sourceId) .setIsRead(false) - .setCreateUserId(createUserId) - .setCreateUserName(createUserName) + .setCreateUserId(handlerUserId) + .setCreateUserName(handlerUserName) .setCreateTime(now) .setUpdateUserId(createUserId) .setUpdateUserName(createUserName) .setUpdateTime(now); - // 通过消息服务发送 sendMessageServices.forEach(service -> service.sendSystemMessage(todoItem)); } + private User resolvePqcReviewerUser(String modelNo) { + QmsInspectorModelItem modelItem = inspectorModelItemService.lambdaQuery() + .eq(QmsInspectorModelItem::getModelNo, modelNo) + .last("LIMIT 1") + .one(); + VUtil.trueThrowBusinessError(modelItem == null).throwMessage("机型未绑定PQC复核人"); + + QmsQualityInspector inspector = qualityInspectorService.getById(modelItem.getInspectorId()); + VUtil.trueThrowBusinessError(inspector == null).throwMessage("PQC复核人不存在"); + VUtil.trueThrowBusinessError(!Objects.equals(inspector.getInspectionType(), 2)).throwMessage("复核人不是PQC类型"); + VUtil.trueThrowBusinessError(!Boolean.TRUE.equals(inspector.getEnable())).throwMessage("PQC复核人已禁用"); + + QmsQualityInspector actualInspector = inspector; + if (inspector.getChangeUserId() != null) { + actualInspector = qualityInspectorService.getById(inspector.getChangeUserId()); + } + + User reviewer = actualInspector == null ? null : userService.getById(actualInspector.getUserId()); + VUtil.trueThrowBusinessError(reviewer == null).throwMessage("实际复核人用户不存在"); + return reviewer; + } + + private void sendPqcReviewTodoMessage(QmsPqcTaskRecord taskRecord, Long updateUserId, String updateUserName, LocalDateTime now) { + Long reviewTypeId = dictionaryItemService.getIdByCode("MessageType", "PQCReviewTask"); + VUtil.trueThrowBusinessError(reviewTypeId == null).throwMessage("消息类型PQCReviewTask不存在"); + sendTodoMessage(taskRecord.getTaskNo(), taskRecord.getReviewerId(), taskRecord.getReviewerName(), + taskRecord.getId(), reviewTypeId, updateUserId, updateUserName, now); + } + + private void markPqcReviewTodoDone(Long taskId, Long reviewerId, Long updateUserId, String updateUserName, LocalDateTime now) { + Long reviewTypeId = dictionaryItemService.getIdByCode("MessageType", "PQCReviewTask"); + VUtil.trueThrowBusinessError(reviewTypeId == null).throwMessage("消息类型PQCReviewTask不存在"); + todoItemService.lambdaUpdate() + .set(QmsTodoItem::getIsRead, true) + .set(QmsTodoItem::getUpdateUserId, updateUserId) + .set(QmsTodoItem::getUpdateUserName, updateUserName) + .set(QmsTodoItem::getUpdateTime, now) + .eq(QmsTodoItem::getSourceTypeId, reviewTypeId) + .eq(QmsTodoItem::getSourceId, taskId) + .eq(QmsTodoItem::getCreateUserId, reviewerId) + .eq(QmsTodoItem::getIsRead, false) + .update(); + } + private String buildStepKey(QmsPqcInspectionPoint point) { String stepName = StrUtil.blankToDefault(point.getStepName(), ""); String stepDicItemId = point.getStepDicItemId() == null ? "" : point.getStepDicItemId().toString();