diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java index 2dd39424..f9398b1a 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java @@ -32,8 +32,12 @@ import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; @Slf4j @Component @@ -164,16 +168,7 @@ public class QmsService { apply.setStorageLocation(inventory.getBinLocation()); apply.setStorageDays(request.getStorageDays()); - List qrCodes = qrCodeMasterService.lambdaQuery() - .select(WmsQrCodeMaster::getBarcodeCode) - .eq(WmsQrCodeMaster::getMaterialCode, apply.getMaterialNo()) - .eq(WmsQrCodeMaster::getFactoryCode, apply.getFactory()) - .eq(WmsQrCodeMaster::getStorageLocation, apply.getWarehouse()) - .eq(WmsQrCodeMaster::getBinLocation, apply.getStorageLocation()) - .list() - .stream() - .map(WmsQrCodeMaster::getBarcodeCode) - .toList(); + List qrCodes = getInventoryInspectionQrCodes(apply); apply.setQrCodes(qrCodes); log.info("推送库存检测申请到QMS:申请参数={},关联二维码={}", JSONUtil.toJsonStr(apply), JSONUtil.toJsonStr(qrCodes)); @@ -243,4 +238,42 @@ public class QmsService { return LocalDateTime.now().format(INVENTORY_INSPECTION_REQUEST_NO_FORMATTER) + inventoryId; } + private List getInventoryInspectionQrCodes(ExternalInventoryInspectionApplyQO apply) { + List qrCodeMasters = qrCodeMasterService.lambdaQuery() + .select(WmsQrCodeMaster::getId, WmsQrCodeMaster::getBarcodeCode) + .eq(WmsQrCodeMaster::getMaterialCode, apply.getMaterialNo()) + .eq(WmsQrCodeMaster::getFactoryCode, apply.getFactory()) + .eq(WmsQrCodeMaster::getStorageLocation, apply.getWarehouse()) + .eq(WmsQrCodeMaster::getBinLocation, apply.getStorageLocation()) + .list(); + if (qrCodeMasters.isEmpty()) { + return List.of(); + } + + List qrCodeIds = qrCodeMasters.stream() + .map(WmsQrCodeMaster::getId) + .filter(Objects::nonNull) + .toList(); + Map> childrenMap = qrCodeMasterService.lambdaQuery() + .select(WmsQrCodeMaster::getParentBarcodeId, WmsQrCodeMaster::getBarcodeCode) + .in(WmsQrCodeMaster::getParentBarcodeId, qrCodeIds) + .list() + .stream() + .collect(Collectors.groupingBy(WmsQrCodeMaster::getParentBarcodeId)); + + LinkedHashSet qrCodes = new LinkedHashSet<>(); + qrCodeMasters.forEach(qrCodeMaster -> { + List children = childrenMap.get(qrCodeMaster.getId()); + if (Objects.nonNull(children) && !children.isEmpty()) { + children.stream() + .map(WmsQrCodeMaster::getBarcodeCode) + .filter(Objects::nonNull) + .forEach(qrCodes::add); + } else if (Objects.nonNull(qrCodeMaster.getBarcodeCode())) { + qrCodes.add(qrCodeMaster.getBarcodeCode()); + } + }); + return new ArrayList<>(qrCodes); + } + }