From b211b9927ed3199a1745dfdb778567bef95af16a Mon Sep 17 00:00:00 2001 From: Khamidulla Abdulkhakimov Date: Mon, 13 Nov 2023 17:09:45 +0500 Subject: [PATCH 1/3] [MODORDSTOR-356] - Update status date when PUT operation --- .../service/pieces/flows/update/PieceUpdateFlowManager.java | 3 +++ 1 file changed, 3 insertions(+) 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 d0567b478..1d037421a 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 @@ -17,6 +17,8 @@ import io.vertx.core.Promise; import io.vertx.core.json.JsonObject; +import java.util.Date; + public class PieceUpdateFlowManager { private static final Logger logger = LogManager.getLogger(PieceUpdateFlowManager.class); @@ -68,6 +70,7 @@ public Future updatePiece(Piece pieceToUpdate, boolean createItem, boolean logger.debug("receivingStatusStorage -- {}", receivingStatusStorage); logger.debug("receivingStatusUpdate -- {}", receivingStatusUpdate); if (receivingStatusStorage.compareTo(receivingStatusUpdate) != 0) { + holder.getPieceToUpdate().setStatusUpdatedDate(new Date()); pieceService.receiptConsistencyPiecePoLine(messageToEventBus, requestContext); } return null; From c74b76fb68c7700a067374c22f7390e209b94170 Mon Sep 17 00:00:00 2001 From: Khamidulla Abdulkhakimov Date: Mon, 13 Nov 2023 18:21:01 +0500 Subject: [PATCH 2/3] [MODORDSTOR-356] - Increased coverage --- src/test/java/org/folio/rest/impl/PieceApiTest.java | 5 ++++- .../pieces/flows/update/PieceUpdateFlowManagerTest.java | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/folio/rest/impl/PieceApiTest.java b/src/test/java/org/folio/rest/impl/PieceApiTest.java index f015a2eae..3018ef49a 100644 --- a/src/test/java/org/folio/rest/impl/PieceApiTest.java +++ b/src/test/java/org/folio/rest/impl/PieceApiTest.java @@ -152,7 +152,10 @@ void testPutPiecesByIdTest() throws Exception { pieceRequest.put("receivingStatus", "Received"); addMockEntry(PIECES_STORAGE, pieceStorage); - verifyPut(String.format(PIECES_ID_PATH, pieceId), pieceRequest, "", 204); + verifyPut(String.format(PIECES_ID_PATH, pieceId), pieceRequest, "", 204) + .then() + .assertThat() + .body("statusUpdatedDate", notNullValue());; // Message sent to event bus HandlersTestHelper.verifyReceiptStatusUpdateEvent(1); diff --git a/src/test/java/org/folio/service/pieces/flows/update/PieceUpdateFlowManagerTest.java b/src/test/java/org/folio/service/pieces/flows/update/PieceUpdateFlowManagerTest.java index 93684a9eb..375886d9b 100644 --- a/src/test/java/org/folio/service/pieces/flows/update/PieceUpdateFlowManagerTest.java +++ b/src/test/java/org/folio/service/pieces/flows/update/PieceUpdateFlowManagerTest.java @@ -13,8 +13,7 @@ import static org.folio.service.inventory.InventoryManager.HOLDING_PERMANENT_LOCATION_ID; import static org.folio.service.inventory.InventoryManager.ITEM_STATUS; import static org.folio.service.inventory.InventoryManager.ITEM_STATUS_NAME; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; @@ -235,7 +234,7 @@ void shouldUpdateLineQuantityIfPoLineIsNotPackageAndHoldingReferenceChangedAndSh Piece pieceFromStorage = new Piece().withId(pieceId).withPoLineId(lineId).withItemId(itemId).withTitleId(titleId) .withHoldingId(oldHoldingId).withFormat(Piece.Format.ELECTRONIC); Piece incomingPieceToUpdate = new Piece().withId(pieceId).withPoLineId(lineId).withItemId(itemId).withTitleId(titleId) - .withHoldingId(holdingIdToUpdate).withFormat(Piece.Format.ELECTRONIC); + .withHoldingId(holdingIdToUpdate).withFormat(Piece.Format.ELECTRONIC).withReceivingStatus(Piece.ReceivingStatus.RECEIVED); Cost cost = new Cost().withQuantityElectronic(1); Location loc = new Location().withHoldingId(oldHoldingId).withQuantityElectronic(1).withQuantity(1); PoLine poLine = new PoLine().withIsPackage(false).withPurchaseOrderId(orderId).withId(lineId) @@ -265,6 +264,7 @@ void shouldUpdateLineQuantityIfPoLineIsNotPackageAndHoldingReferenceChangedAndSh Piece pieceToUpdate = pieceToUpdateCapture.getValue(); PieceUpdateHolder pieceUpdateHolder = pieceUpdateHolderCapture.getValue(); + assertNotNull(pieceToUpdate.getStatusUpdatedDate()); verify(basePieceFlowHolderBuilder).updateHolderWithOrderInformation(pieceUpdateHolderCapture.capture(), eq(requestContext)); verify(pieceUpdateFlowPoLineService).updatePoLine(pieceUpdateHolderCapture.capture(), eq(requestContext)); verify(pieceUpdateFlowInventoryManager).processInventory(any(PieceUpdateHolder.class), eq(requestContext)); From 2197b20bd7489d8d4c15297d22ed2c01ecdf4d41 Mon Sep 17 00:00:00 2001 From: Khamidulla Abdulkhakimov Date: Tue, 14 Nov 2023 18:48:54 +0500 Subject: [PATCH 3/3] [MODORDSTOR-356] - Completed the forgotten places to populate statusUpdatedDate --- .../org/folio/helper/CheckinReceivePiecesHelper.java | 6 ++++-- .../update/open/OpenCompositeOrderPieceService.java | 12 +++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/folio/helper/CheckinReceivePiecesHelper.java b/src/main/java/org/folio/helper/CheckinReceivePiecesHelper.java index 52ea4ba9d..74ce9ea92 100644 --- a/src/main/java/org/folio/helper/CheckinReceivePiecesHelper.java +++ b/src/main/java/org/folio/helper/CheckinReceivePiecesHelper.java @@ -30,6 +30,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; @@ -400,8 +401,9 @@ protected Future>> storeUpdatedPieceRecords(Map storeUpdatedPieceRecord(piece, requestContext)) - .collect(Collectors.toList()); + .map(piece -> piece.withStatusUpdatedDate(new Date())) + .map(piece -> storeUpdatedPieceRecord(piece, requestContext)) + .toList(); return GenericCompositeFuture.join(futures) .map(v -> piecesGroupedByPoLine); diff --git a/src/main/java/org/folio/service/orders/flows/update/open/OpenCompositeOrderPieceService.java b/src/main/java/org/folio/service/orders/flows/update/open/OpenCompositeOrderPieceService.java index 8070e0865..6cc74b85d 100644 --- a/src/main/java/org/folio/service/orders/flows/update/open/OpenCompositeOrderPieceService.java +++ b/src/main/java/org/folio/service/orders/flows/update/open/OpenCompositeOrderPieceService.java @@ -5,6 +5,7 @@ import static org.folio.orders.utils.HelperUtils.collectResultsOnSuccess; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Optional; import java.util.concurrent.CompletionException; @@ -121,18 +122,23 @@ public Future updatePieceRecord(Piece piece, RequestContext requestContext .compose(v -> inventoryManager.updateItemWithPieceFields(piece, requestContext)) .onSuccess(vVoid -> pieceStorageService.getPieceById(piece.getId(), requestContext).onSuccess(pieceStorage -> { + Piece.ReceivingStatus receivingStatusUpdate = piece.getReceivingStatus(); Piece.ReceivingStatus receivingStatusStorage = pieceStorage.getReceivingStatus(); + boolean isReceivingStatusChanged = receivingStatusStorage.compareTo(receivingStatusUpdate) != 0; + + if(isReceivingStatusChanged) { + piece.setStatusUpdatedDate(new Date()); + } + pieceStorageService.updatePiece(piece, requestContext) .onSuccess(ok -> { promise.complete(); JsonObject messageToEventBus = new JsonObject(); messageToEventBus.put("poLineIdUpdate", piece.getPoLineId()); - - Piece.ReceivingStatus receivingStatusUpdate = piece.getReceivingStatus(); logger.debug("receivingStatusStorage -- {}", receivingStatusStorage); logger.debug("receivingStatusUpdate -- {}", receivingStatusUpdate); - if (receivingStatusStorage.compareTo(receivingStatusUpdate) != 0) { + if (isReceivingStatusChanged) { receiptStatusPublisher.sendEvent(MessageAddress.RECEIPT_STATUS, messageToEventBus, requestContext); } })