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 19a9ae3a..1c52ef80 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 @@ -865,6 +865,26 @@ public class QmsPqcTaskRecordControllerService { .collect(Collectors.toList()); } + private QmsPqcTaskRecord getOrCreateTaskRecord(QmsPqcTaskRecordDraftQO request) { + if (request.getTaskId() != null) { + QmsPqcTaskRecord taskRecord = pqcTaskRecordService.getById(request.getTaskId()); + VUtil.trueThrowBusinessError(taskRecord == null).throwMessage("任务不存在"); + return taskRecord; + } + + QmsPqcTaskRecord existTask = pqcTaskRecordService.lambdaQuery() + .eq(QmsPqcTaskRecord::getAufnr, request.getAufnr()) + .eq(QmsPqcTaskRecord::getModelNo, request.getModelNo()) + .eq(QmsPqcTaskRecord::getInspectionPointId, request.getInspectionPointId()) + .one(); + + if (existTask != null) { + return existTask; + } + + return createPqcTask(request.getAufnr(), request.getNo(), request.getModelNo(), request.getInspectionPointId()); + } + /** * 6. 暂存 */ @@ -874,20 +894,8 @@ public class QmsPqcTaskRecordControllerService { String currentUserName = UserUtil.getUserName(); LocalDateTime now = LocalDateTime.now(); - // 1. 校验任务是否存在(订单编号+机型编号+检查点ID一致就是同一个任务) - QmsPqcTaskRecord existTask = pqcTaskRecordService.lambdaQuery() - .eq(QmsPqcTaskRecord::getAufnr, request.getAufnr()) - .eq(QmsPqcTaskRecord::getModelNo, request.getModelNo()) - .eq(QmsPqcTaskRecord::getInspectionPointId, request.getInspectionPointId()) - .one(); - - QmsPqcTaskRecord taskRecord; - if (existTask == null) { - // 不存在则新建 - taskRecord = createPqcTask(request.getAufnr(), request.getNo(), request.getModelNo(), request.getInspectionPointId()); - } else { - taskRecord = existTask; - } + // 1. 校验任务是否存在 + QmsPqcTaskRecord taskRecord = getOrCreateTaskRecord(request); // 2. 判断是否有复核相关内容 boolean hasReviewContent = hasReviewContent(request); @@ -935,19 +943,7 @@ public class QmsPqcTaskRecordControllerService { LocalDateTime now = LocalDateTime.now(); // 1. 校验任务是否存在 - QmsPqcTaskRecord existTask = pqcTaskRecordService.lambdaQuery() - .eq(QmsPqcTaskRecord::getAufnr, request.getAufnr()) - .eq(QmsPqcTaskRecord::getModelNo, request.getModelNo()) - .eq(QmsPqcTaskRecord::getInspectionPointId, request.getInspectionPointId()) - .one(); - - QmsPqcTaskRecord taskRecord; - if (existTask == null) { - // 不存在则新建 - taskRecord = createPqcTask(request.getAufnr(), request.getNo(), request.getModelNo(), request.getInspectionPointId()); - } else { - taskRecord = existTask; - } + QmsPqcTaskRecord taskRecord = getOrCreateTaskRecord(request); // 2. 校验数据完整性 boolean hasReviewContent = hasReviewContent(request); @@ -1006,8 +1002,12 @@ public class QmsPqcTaskRecordControllerService { * 判断是否有复核相关内容 */ private boolean hasReviewContent(QmsPqcTaskRecordDraftQO request) { - if (request.getQcMaterialCollections() != null && !request.getQcMaterialCollections().isEmpty()) { - return true; + if (request.getQcMaterialCollections() != null) { + for (QmsPqcTaskRecordDraftQO.MaterialCollectionItem item : request.getQcMaterialCollections()) { + if (hasMaterialCollectionContent(item)) { + return true; + } + } } if (request.getProcessInspections() != null) { for (QmsPqcTaskRecordDraftQO.ProcessInspectionItem item : request.getProcessInspections()) { @@ -1031,6 +1031,14 @@ public class QmsPqcTaskRecordControllerService { return false; } + private boolean hasMaterialCollectionContent(QmsPqcTaskRecordDraftQO.MaterialCollectionItem item) { + return item != null + && (StrUtil.isNotBlank(item.getSerialNo()) + || StrUtil.isNotBlank(item.getBatchNo()) + || item.getFiles() != null && !item.getFiles().isEmpty() + || item.getEnable() != null); + } + private boolean isDetailType(QmsPqcTaskRecordDetails detail, int type) { return detail != null && Objects.equals(detail.getType(), (short) type); } @@ -1259,9 +1267,10 @@ public class QmsPqcTaskRecordControllerService { QmsPqcTaskRecordDetails detail = new QmsPqcTaskRecordDetails() .setTaskId(taskId) .setType((short) 1) - .setInspectionPointItemId(i < selfMaterialItemIds.size() ? selfMaterialItemIds.get(i) : null) + .setInspectionPointItemId(resolveInspectionPointItemId(item.getInspectionPointItemId(), selfMaterialItemIds, i)) .setSelfTestData(item.getSerialNo()) .setSelfCheck(item.getFiles() != null && !item.getFiles().isEmpty() ? true : null) + .setReviewEnable(item.getEnable()) .setReviewData(item.getBatchNo()) .setSelfTestAttachments(serializeFileList(item.getFiles())) .setSelfTestUploadTime(now); @@ -1278,9 +1287,10 @@ public class QmsPqcTaskRecordControllerService { QmsPqcTaskRecordDetails detail = new QmsPqcTaskRecordDetails() .setTaskId(taskId) .setType((short) 1) - .setInspectionPointItemId(i < qcMaterialItemIds.size() ? qcMaterialItemIds.get(i) : null) + .setInspectionPointItemId(resolveInspectionPointItemId(item.getInspectionPointItemId(), qcMaterialItemIds, i)) .setSelfTestData(item.getSerialNo()) .setSelfCheck(item.getFiles() != null && !item.getFiles().isEmpty() ? true : null) + .setReviewEnable(item.getEnable()) .setReviewData(item.getBatchNo()) .setSelfTestAttachments(serializeFileList(item.getFiles())) .setSelfTestUploadTime(now); @@ -1297,7 +1307,7 @@ public class QmsPqcTaskRecordControllerService { QmsPqcTaskRecordDetails detail = new QmsPqcTaskRecordDetails() .setTaskId(taskId) .setType((short) 0) - .setInspectionPointItemId(i < selfProcessItemIds.size() ? selfProcessItemIds.get(i) : null) + .setInspectionPointItemId(resolveInspectionPointItemId(item.getInspectionPointItemId(), selfProcessItemIds, i)) .setSelfTestData(item.getSelfTestData()) .setSelfCheck(item.getSelfCheck()) .setReviewData(item.getReviewData()) @@ -1320,7 +1330,7 @@ public class QmsPqcTaskRecordControllerService { QmsPqcTaskRecordDetails detail = new QmsPqcTaskRecordDetails() .setTaskId(taskId) .setType((short) 0) - .setInspectionPointItemId(i < qcProcessItemIds.size() ? qcProcessItemIds.get(i) : null) + .setInspectionPointItemId(resolveInspectionPointItemId(item.getInspectionPointItemId(), qcProcessItemIds, i)) .setSelfCheck(null) .setReviewEnable(item.getEnable()); if (hasReviewContent) { @@ -1342,6 +1352,13 @@ public class QmsPqcTaskRecordControllerService { } } + private Long resolveInspectionPointItemId(Long requestItemId, List fallbackItemIds, int index) { + if (requestItemId != null) { + return requestItemId; + } + return index < fallbackItemIds.size() ? fallbackItemIds.get(index) : null; + } + private void saveExistingTaskDetails(Long taskId, List details) { if (details == null || details.isEmpty()) { return; diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPqcTaskRecordDraftQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPqcTaskRecordDraftQO.java index 85383dc6..a0d5a18f 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPqcTaskRecordDraftQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsPqcTaskRecordDraftQO.java @@ -1,5 +1,6 @@ package com.nflg.wms.common.pojo.qo; +import com.fasterxml.jackson.annotation.JsonAlias; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -11,6 +12,11 @@ import java.util.List; @Data public class QmsPqcTaskRecordDraftQO { + /** + * 任务ID + */ + private Long taskId; + /** * 订单编号(必传) */ @@ -65,6 +71,11 @@ public class QmsPqcTaskRecordDraftQO { */ @Data public static class MaterialCollectionItem { + /** + * 检测项ID + */ + private Long inspectionPointItemId; + /** * 序列号 */ @@ -89,6 +100,12 @@ public class QmsPqcTaskRecordDraftQO { * 采集时间 */ private String collectionTime; + + /** + * 检测结果 + */ + @JsonAlias({"reviewEnable", "review_enable"}) + private Boolean enable; } /** @@ -96,6 +113,11 @@ public class QmsPqcTaskRecordDraftQO { */ @Data public static class ProcessInspectionItem { + /** + * 检测项ID + */ + private Long inspectionPointItemId; + /** * 检查内容 */ @@ -134,6 +156,7 @@ public class QmsPqcTaskRecordDraftQO { /** * 检测结果 */ + @JsonAlias({"reviewEnable", "review_enable"}) private Boolean enable; /** @@ -157,6 +180,11 @@ public class QmsPqcTaskRecordDraftQO { */ @Data public static class ProcessInspectionLevel3Item { + /** + * 检测项ID + */ + private Long inspectionPointItemId; + /** * 检查内容 */ @@ -185,6 +213,7 @@ public class QmsPqcTaskRecordDraftQO { /** * 检测结果 */ + @JsonAlias({"reviewEnable", "review_enable"}) private Boolean enable; /**