diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HistoryConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HistoryConfig.java index cd0b2826c..c220f2036 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HistoryConfig.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HistoryConfig.java @@ -45,6 +45,7 @@ public class HistoryConfig { hst.add(liabilitiesRegister()); hst.add(executionRegister()); hst.add(session()); + hst.add(orderCurrency()); return hst; } @@ -192,4 +193,16 @@ public class HistoryConfig { )); return sbscr; } + + private HistorySubscription orderCurrency() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("order-currency"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchOrderCurrency); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_OrderCurrency); + sbscr.setConditions(List.of( + new CreatedFromCondition(pb), + new CreatedToCondition(pb) + )); + return sbscr; + } } diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxyOrderCurrency.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxyOrderCurrency.java new file mode 100644 index 000000000..99736f047 --- /dev/null +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxyOrderCurrency.java @@ -0,0 +1,18 @@ +package ru.spcex.clearing.historyimdg.index; + +import java.time.Instant; +import ru.spcex.clearing.historyimdg.index.field.SearchWithCreated; + +public class SearchProxyOrderCurrency extends SearchProxy implements SearchWithCreated { + private Instant created; + + @Override + public Instant getCreated() { + return created; + } + + @Override + public void setCreated(Instant created) { + this.created = created; + } +} diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/OrderCurrencyHistoryMapStore.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/OrderCurrencyHistoryMapStore.java new file mode 100644 index 000000000..4e4f97cbf --- /dev/null +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/OrderCurrencyHistoryMapStore.java @@ -0,0 +1,30 @@ +package ru.spcex.clearing.historyimdg.mapstores; + +import java.util.ArrayList; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.misc.OrderCurrency; +import ru.spcex.clearing.imdg.businessobject.OrderCurrencyMapStore; + +@Component +public class OrderCurrencyHistoryMapStore extends OrderCurrencyMapStore { + public OrderCurrencyHistoryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + protected boolean isLoadable(Long id) { + return true; + } + + @Override + protected boolean isLoadable(OrderCurrency obj) { + return true; + } + + @Override + public Iterable loadAllKeys() { + log.debug("OrderCurrency loadAllKeys is called"); + return new ArrayList<>(); + } +} diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchOrderCurrencyMapStore.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchOrderCurrencyMapStore.java new file mode 100644 index 000000000..7d8994bf8 --- /dev/null +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchOrderCurrencyMapStore.java @@ -0,0 +1,48 @@ +package ru.spcex.clearing.historyimdg.mapstores; + +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.spcex.clearing.historyimdg.index.SearchProxyOrderCurrency; +import ru.spcex.clearing.imdg.IMDGDistributedNames; + +@Component +public class SearchOrderCurrencyMapStore extends AbstractSliceMapLoader { + public SearchOrderCurrencyMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + protected String getTableName() { + return "order_currency"; + } + + @Override + protected String fieldOfDay() { + return "CREATED_AT"; + } + + @Override + public Collection load(Collection keys) { + Map> paramMap = Collections.singletonMap("ids", keys); + return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, + (rs, rowNum) -> { + SearchProxyOrderCurrency proxyOrder = new SearchProxyOrderCurrency(); + proxyOrder.setId(rs.getObject("id", Long.class)); + proxyOrder.setCreated(getInstantFromTimestamp(rs, "CREATED_AT")); + return proxyOrder; + }); + } + + @Override + public String getMapName() { + return IMDGDistributedNames.Map_SearchOrderCurrency; + } + + @Override + public String[] getIndexingField() { + return new String[]{"created"}; + } +} diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java index 8dafb21fe..47a6d108d 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java @@ -250,6 +250,7 @@ public final class IMDGDistributedNames { public static final String Map_SearchExecutionRegister = "Map_SearchExecutionRegister"; public static final String Map_SearchSession = "Map_SearchSession"; public static final String Map_SearchSessionHistory = "Map_SearchSessionHistory"; + public static final String Map_SearchOrderCurrency = "Map_SearchOrderCurrency"; public static final String MAP_SEQUENCE_NAME = "MAP_SEQUENCE_NAME"; private IMDGDistributedNames() {