From d72e0b79c5f470d627a2713ecf6b76508cddf987 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Tue, 14 Apr 2026 11:33:35 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-911 --- .../LocalDateTimeV2Deserializer.java | 22 +++++++++++++++++++ .../request/security/CurrencyRate.java | 6 ++--- .../listeners/RatesMessageListener.java | 2 +- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/deserializers/LocalDateTimeV2Deserializer.java diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/deserializers/LocalDateTimeV2Deserializer.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/deserializers/LocalDateTimeV2Deserializer.java new file mode 100644 index 000000000..23ff5fd85 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/deserializers/LocalDateTimeV2Deserializer.java @@ -0,0 +1,22 @@ +package ru.spcex.clearing.gatewayapi.config.deserializers; + + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class LocalDateTimeV2Deserializer extends JsonDeserializer { + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss.SSS"); + + @Override + public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + String date = p.getText(); + if (date == null || date.trim().length() == 0) { + return null; + } + return LocalDateTime.parse(date, formatter); + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/inbound/request/security/CurrencyRate.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/inbound/request/security/CurrencyRate.java index f8258a99a..c60b0e7b9 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/inbound/request/security/CurrencyRate.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/inbound/request/security/CurrencyRate.java @@ -6,7 +6,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateDeserializer; -import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateTimeDeserializer; +import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateTimeV2Deserializer; public class CurrencyRate { @@ -32,11 +32,11 @@ public class CurrencyRate { private BigDecimal price; - @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonDeserialize(using = LocalDateTimeV2Deserializer.class) @JsonProperty("update_date_time") private LocalDateTime updateDateTime; - @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonDeserialize(using = LocalDateTimeV2Deserializer.class) @JsonProperty("source_date_time") private LocalDateTime sourceDateTime; diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/listeners/RatesMessageListener.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/listeners/RatesMessageListener.java index dc51fd574..3b45db880 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/listeners/RatesMessageListener.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/listeners/RatesMessageListener.java @@ -121,7 +121,7 @@ public class RatesMessageListener extends QueueConsumer implements InitializingB ImdgPredicateBuilder predicateBuilder = ratesImdg.predicateBuilder(); Collection rateIds = ratesImdg.getCollectionIdsByPredicate( predicateBuilder.and( - predicateBuilder.equals("date", elem.getDate()), + predicateBuilder.equals("valueDate", elem.getDate()), predicateBuilder.equals("currency", elem.getBaseCurrencyLetterCode()) )); if (rateIds.isEmpty()) {