diff --git a/src/main/java/org/folio/dew/batch/acquisitions/mapper/OrderEmailContextMapper.java b/src/main/java/org/folio/dew/batch/acquisitions/mapper/OrderEmailContextMapper.java index 060e73b5d..c34ce1f9d 100644 --- a/src/main/java/org/folio/dew/batch/acquisitions/mapper/OrderEmailContextMapper.java +++ b/src/main/java/org/folio/dew/batch/acquisitions/mapper/OrderEmailContextMapper.java @@ -32,7 +32,8 @@ import java.math.BigDecimal; import java.time.Instant; -import java.time.temporal.ChronoUnit; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -45,6 +46,8 @@ @Log4j2 public class OrderEmailContextMapper { + private static final DateTimeFormatter CREATED_AT_FORMATTER = new DateTimeFormatterBuilder().appendInstant(3).toFormatter(); + private final IdentifierTypeService identifierTypeService; private final ContributorNameTypeService contributorNameTypeService; private final ConfigurationService configurationService; @@ -60,12 +63,16 @@ public OrderEmailContext buildContext(List orders) { .toList())) .toList(); return OrderEmailContext.builder() - .createdAt(Instant.now().truncatedTo(ChronoUnit.MILLIS).toString()) + .createdAt(formatCreatedAt(Instant.now())) .organization(mapOrganization(orders)) .orders(orderWrappers) .build(); } + static String formatCreatedAt(Instant instant) { + return CREATED_AT_FORMATTER.format(instant); + } + private OrganizationContext mapOrganization(List orders) { return orders.stream() .map(CompositePurchaseOrder::getVendor) diff --git a/src/test/java/org/folio/dew/batch/acquisitions/mapper/OrderEmailContextMapperTest.java b/src/test/java/org/folio/dew/batch/acquisitions/mapper/OrderEmailContextMapperTest.java index e27a49e0e..edb757ff6 100644 --- a/src/test/java/org/folio/dew/batch/acquisitions/mapper/OrderEmailContextMapperTest.java +++ b/src/test/java/org/folio/dew/batch/acquisitions/mapper/OrderEmailContextMapperTest.java @@ -20,6 +20,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import java.io.IOException; +import java.time.Instant; import java.util.List; import java.util.UUID; @@ -176,6 +177,11 @@ void buildContext_setsCreatedAt() { assertThat(ctx.getCreatedAt()).matches("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z"); } + @Test + void formatCreatedAt_wholeSecond_keepsMilliseconds() { + assertThat(OrderEmailContextMapper.formatCreatedAt(Instant.parse("2026-08-12T10:15:30Z"))).isEqualTo("2026-08-12T10:15:30.000Z"); + } + @Test void buildContext_mapsOrganizationFields() throws IOException { var org = new Organization();