diff --git a/ramls/acq-models b/ramls/acq-models index c0c72775d..a8f2fef0b 160000 --- a/ramls/acq-models +++ b/ramls/acq-models @@ -1 +1 @@ -Subproject commit c0c72775d08c28a77d1475df435497e8b0020667 +Subproject commit a8f2fef0b41fbe99f917a39857821b93c417b1a9 diff --git a/src/main/java/org/folio/orders/utils/ResourcePathResolver.java b/src/main/java/org/folio/orders/utils/ResourcePathResolver.java index aa8e91a94..64f197063 100644 --- a/src/main/java/org/folio/orders/utils/ResourcePathResolver.java +++ b/src/main/java/org/folio/orders/utils/ResourcePathResolver.java @@ -26,6 +26,7 @@ private ResourcePathResolver() { public static final String REPORTING_CODES = "reportingCodes"; public static final String PURCHASE_ORDER_STORAGE = "purchaseOrder"; public static final String PIECES_STORAGE = "pieces"; + public static final String PIECES_STORAGE_BATCH = "pieces-batch"; public static final String ORGANIZATION_STORAGE = "organizations"; public static final String RECEIVING_HISTORY = "receiving-history"; public static final String RECEIPT_STATUS = "receiptStatus"; @@ -79,6 +80,7 @@ private ResourcePathResolver() { apis.put(PO_NUMBER, "/orders-storage/po-number"); apis.put(PURCHASE_ORDER_STORAGE, "/orders-storage/purchase-orders"); apis.put(PIECES_STORAGE, "/orders-storage/pieces"); + apis.put(PIECES_STORAGE_BATCH, "/orders-storage/pieces-batch"); apis.put(ORGANIZATION_STORAGE, "/organizations-storage/organizations"); apis.put(RECEIVING_HISTORY, "/orders-storage/receiving-history"); apis.put(PO_LINE_NUMBER, "/orders-storage/po-line-number"); diff --git a/src/main/java/org/folio/service/pieces/PieceStorageService.java b/src/main/java/org/folio/service/pieces/PieceStorageService.java index 466cab229..979e5414e 100644 --- a/src/main/java/org/folio/service/pieces/PieceStorageService.java +++ b/src/main/java/org/folio/service/pieces/PieceStorageService.java @@ -6,6 +6,7 @@ import static org.folio.orders.utils.QueryUtils.convertIdsToCqlQuery; import static org.folio.orders.utils.QueryUtils.getCqlExpressionForFieldNullValue; import static org.folio.orders.utils.ResourcePathResolver.PIECES_STORAGE; +import static org.folio.orders.utils.ResourcePathResolver.PIECES_STORAGE_BATCH; import static org.folio.orders.utils.ResourcePathResolver.resourcesPath; import static org.folio.rest.RestConstants.MAX_IDS_FOR_GET_RQ_15; @@ -40,6 +41,7 @@ public class PieceStorageService { private static final String PIECES_BY_HOLDING_ID_QUERY = "holdingId==%s"; private static final String PIECE_STORAGE_ENDPOINT = resourcesPath(PIECES_STORAGE); private static final String PIECE_STORAGE_BY_ID_ENDPOINT = PIECE_STORAGE_ENDPOINT + "/{id}"; + private static final String PIECES_STORAGE_BATCH_ENDPOINT = resourcesPath(PIECES_STORAGE_BATCH); private final ConsortiumConfigurationService consortiumConfigurationService; private final ConsortiumUserTenantsRetriever consortiumUserTenantsRetriever; @@ -82,6 +84,11 @@ public Future updatePiece(Piece piece, RequestContext requestContext) { return restClient.put(requestEntry, piece, requestContext); } + public Future updatePiecesBatch(PieceCollection pieceCollection, RequestContext requestContext) { + RequestEntry requestEntry = new RequestEntry(PIECES_STORAGE_BATCH_ENDPOINT); + return restClient.put(requestEntry, pieceCollection, requestContext); + } + public Future insertPiece(Piece piece, RequestContext requestContext) { RequestEntry requestEntry = new RequestEntry(PIECE_STORAGE_ENDPOINT); return restClient.post(requestEntry, piece, Piece.class, requestContext); diff --git a/src/main/java/org/folio/service/pieces/flows/update/PieceUpdateFlowManager.java b/src/main/java/org/folio/service/pieces/flows/update/PieceUpdateFlowManager.java index 5eed324f9..56b76e0e8 100644 --- a/src/main/java/org/folio/service/pieces/flows/update/PieceUpdateFlowManager.java +++ b/src/main/java/org/folio/service/pieces/flows/update/PieceUpdateFlowManager.java @@ -27,6 +27,7 @@ import org.folio.rest.jaxrs.model.Parameter; import org.folio.rest.jaxrs.model.Piece; import org.folio.rest.jaxrs.model.PieceBatchStatusCollection; +import org.folio.rest.jaxrs.model.PieceCollection; import org.folio.service.ProtectionService; import org.folio.service.orders.PurchaseOrderLineService; import org.folio.service.pieces.PieceService; @@ -176,8 +177,7 @@ private Future updatePiecesStatusesByPoLine(PieceBatchStatusUpdateHolder h if (!Boolean.TRUE.equals(isAnyPiecesUpdated)) { return Future.succeededFuture(); } - var updates = holder.getPieces().stream().map(piece -> pieceStorageService.updatePiece(piece, requestContext)).toList(); - return HelperUtils.collectResultsOnSuccess(updates) + return pieceStorageService.updatePiecesBatch(new PieceCollection().withPieces(holder.getPieces()), requestContext) .compose(v -> asFuture(() -> pieceService.receiptConsistencyPiecePoLine(holder.getOrderLineId(), requestContext))); }