diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiComponentBindingControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiComponentBindingControllerService.java index b07b51cf..b8cb986b 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiComponentBindingControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiComponentBindingControllerService.java @@ -79,6 +79,7 @@ public class QmsPdiComponentBindingControllerService { getComponentMapByName(request.getPdiDetectionRulesId(), componentNames); List bindings = new ArrayList<>(); + Set bindingKeys = new HashSet<>(); for (QmsPdiComponentBindingSaveQO.ImageBindingQO item : request.getItems()) { if (CollectionUtil.isEmpty(item.getComponents())) { continue; @@ -93,6 +94,10 @@ public class QmsPdiComponentBindingControllerService { throw new NflgException(STATE.BusinessError, "部件名称不存在:" + component.getComponentName()); } for (QmsPdiComponentAnagement matchedComponent : matchedComponents) { + String bindingKey = bindingKey(item.getUploadImageId(), matchedComponent.getId(), matchedComponent.getStatus()); + if (!bindingKeys.add(bindingKey)) { + continue; + } bindings.add(new QmsPdiComponentBinding() .setPdiDetectionRulesId(request.getPdiDetectionRulesId()) .setUploadImageId(item.getUploadImageId()) @@ -409,7 +414,17 @@ public class QmsPdiComponentBindingControllerService { if (StrUtil.isBlank(componentName)) { return; } - componentMap.computeIfAbsent(componentName, ignored -> new ArrayList<>()).add(component); + List components = componentMap.computeIfAbsent(componentName, ignored -> new ArrayList<>()); + boolean exists = components.stream() + .anyMatch(item -> Objects.equals(item.getId(), component.getId()) + && Objects.equals(item.getStatus(), component.getStatus())); + if (!exists) { + components.add(component); + } + } + + private String bindingKey(Long uploadImageId, Long componentId, Short status) { + return uploadImageId + "|" + componentId + "|" + status; } private String appendNewlineIfMixedChineseEnglishEndsWithEnglish(String text) {