diff --git a/clearing-parent/imdg-util/pom.xml b/clearing-parent/imdg-util/pom.xml
new file mode 100644
index 000000000..184b5b734
--- /dev/null
+++ b/clearing-parent/imdg-util/pom.xml
@@ -0,0 +1,20 @@
+
+
+
+ clearing-parent
+ ru.spcex.clearing
+ SPCEX-1.0.0.0
+
+ 4.0.0
+
+ imdg-util
+ Клиентские утилиты для подключения к IMDG хранилищу
+
+
+ 17
+ 17
+
+
+
\ No newline at end of file
diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/utils/IMDGDistributedNames.java b/clearing-parent/imdg-util/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java
similarity index 94%
rename from clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/utils/IMDGDistributedNames.java
rename to clearing-parent/imdg-util/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java
index 42da77c3b..8bd146b94 100644
--- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/utils/IMDGDistributedNames.java
+++ b/clearing-parent/imdg-util/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java
@@ -1,6 +1,8 @@
-package ru.spcex.clearing.imdg.utils;
+package ru.spcex.clearing.imdg;
-//fixme перенести в новый модуль IMDGDistributedNames
+/**
+ * Список имён распределённых объектов
+ */
public final class IMDGDistributedNames {
private IMDGDistributedNames() {
}
diff --git a/clearing-parent/imdg/pom.xml b/clearing-parent/imdg/pom.xml
index b3bd2cfea..ea64f5b00 100644
--- a/clearing-parent/imdg/pom.xml
+++ b/clearing-parent/imdg/pom.xml
@@ -42,6 +42,13 @@
compile
+
+ ru.spcex.clearing
+ imdg-util
+ SPCEX-1.0.0.0
+ compile
+
+
diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java
index 37f6b2c53..e92d9c962 100644
--- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java
+++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java
@@ -6,17 +6,15 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Configuration;
import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.clearing.imdg.businessevent.CompanyUpdateMapStore;
import ru.spcex.clearing.imdg.businessobject.CompanyMapStore;
import ru.spcex.clearing.imdg.dictionary.*;
-import ru.spcex.clearing.imdg.object.CompanyRoleSetMapStore;
import ru.spcex.clearing.imdg.object.CompanySymbolsMapStore;
import ru.spcex.clearing.imdg.object.ContactMapStore;
import ru.spcex.clearing.imdg.object.ProfileDocumentMapStore;
-import ru.spcex.clearing.imdg.utils.IMDGDistributedNames;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanyRoleSetMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanyRoleSetMapStore.java
index a5cddd8a2..e6dc11297 100644
--- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanyRoleSetMapStore.java
+++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanyRoleSetMapStore.java
@@ -3,14 +3,11 @@ package ru.spcex.clearing.imdg.object;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.classes.StaticData.Company.CompanyRoleSet;
-import ru.spcex.clearing.imdg.base.ObjectBaseMapStore;
import ru.spcex.clearing.imdg.base.TemplateMapStore;
-import ru.spcex.clearing.imdg.utils.DbUtilsHelper;
-import ru.spcex.clearing.imdg.utils.IMDGDistributedNames;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.*;
@Component
public class CompanyRoleSetMapStore extends TemplateMapStore {
diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/KeyRateMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/KeyRateMapStore.java
new file mode 100644
index 000000000..9cfe9c445
--- /dev/null
+++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/KeyRateMapStore.java
@@ -0,0 +1,66 @@
+package ru.spcex.clearing.imdg.object;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+import ru.clearing.classes.StaticData.Misc.KeyRate;
+import ru.spcex.clearing.imdg.base.TemplateMapStore;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
+import ru.spcex.clearing.imdg.utils.TimeUtil;
+
+import java.math.BigDecimal;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+@Component
+public class KeyRateMapStore extends TemplateMapStore {
+
+ public KeyRateMapStore(JdbcTemplate jdbcTemplate) {
+ super(jdbcTemplate);
+ }
+
+ @Override
+ public String getTableName() {
+ return "KEY_RATE";
+ }
+
+ @Override
+ public String getMapName() {
+ return IMDGDistributedNames.Map_KeyRate;
+ }
+
+ @Override
+ public String[] getIndexingField() {
+ return new String[]{"startDate", "endDate"};
+ }
+
+ @Override
+ public String[] getFields() {
+ return new String[]{"id", "rate", "start_date", "end_date", "document", "workflow_status"};
+ }
+
+ @Override
+ protected KeyRate objectReader(ResultSet resultSet) throws SQLException {
+ KeyRate keyRate = new KeyRate();
+ keyRate.setId(resultSet.getObject("ID", Long.class));
+ keyRate.setRate(resultSet.getObject("RATE", BigDecimal.class));
+ keyRate.setStartDate(getInstantFromTimestamp(resultSet,"START_DATE"));
+ keyRate.setEndDate(getInstantFromTimestamp(resultSet, "END_DATE"));
+ keyRate.setDocument(resultSet.getObject("DOCUMENT", String.class));
+ keyRate.setWorkflowStatus(resultSet.getObject("WORKFLOW_STATUS", String.class));
+ return keyRate;
+ }
+
+ @Override
+ protected Object[] objectToField(KeyRate partnerList) {
+ Object[] args = new Object[]{
+ partnerList.getId(),
+ partnerList.getRate(),
+ TimeUtil.fromInstant(partnerList.getStartDate()),
+ TimeUtil.fromInstant(partnerList.getEndDate()),
+ partnerList.getDocument(),
+ partnerList.getWorkflowStatus()
+ };
+ return args;
+ }
+
+}
diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/MoneyMarketSecurityMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/MoneyMarketSecurityMapStore.java
new file mode 100644
index 000000000..113780189
--- /dev/null
+++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/MoneyMarketSecurityMapStore.java
@@ -0,0 +1,74 @@
+package ru.spcex.clearing.imdg.object;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+import ru.clearing.classes.StaticData.Misc.MoneyMarketSecurity;
+import ru.spcex.clearing.imdg.base.TemplateMapStore;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
+import ru.spcex.clearing.imdg.utils.TimeUtil;
+
+import java.math.BigDecimal;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+@Component
+public class MoneyMarketSecurityMapStore extends TemplateMapStore {
+
+ public MoneyMarketSecurityMapStore(JdbcTemplate jdbcTemplate) {
+ super(jdbcTemplate);
+ }
+
+ @Override
+ public String getTableName() {
+ return "MONEY_MARKET_SECURITY";
+ }
+
+ @Override
+ public String getMapName() {
+ return IMDGDistributedNames.Map_MoneyMarketSecurity;
+ }
+
+ @Override
+ public String[] getIndexingField() {
+ return new String[]{"securityId"};
+ }
+
+ @Override
+ public String[] getFields() {
+ return new String[]{"ID", "SECURITY_ID", "DESCRIPTION", "START_DATE", "END_DATE", "NOMINAL_VALUE", "NOMINAL_CURRENCY", "INSTRUMENT_TYPE", "FULL_NAME", "SECURITY_SYMBOL"};
+ }
+
+ @Override
+ protected MoneyMarketSecurity objectReader(ResultSet resultSet) throws SQLException {
+ MoneyMarketSecurity object = new MoneyMarketSecurity();
+ object.setId(resultSet.getObject("ID", Long.class));
+ object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
+ object.setDescription(resultSet.getObject("DESCRIPTION", String.class));
+ object.setStartDate(getInstantFromTimestamp(resultSet, "START_DATE"));
+ object.setEndDate(getInstantFromTimestamp(resultSet, "END_DATE"));
+ object.setNominalValue(resultSet.getObject("NOMINAL_VALUE", BigDecimal.class));
+ object.setNominalCurrency(resultSet.getObject("NOMINAL_CURRENCY", Long.class));
+ object.setInstrumentType(resultSet.getObject("INSTRUMENT_TYPE", String.class));
+ object.setFullName(resultSet.getObject("FULL_NAME", String.class));
+ object.setSecuritySymbol(resultSet.getObject("SECURITY_SYMBOL", String.class));
+ return object;
+ }
+
+ @Override
+ protected Object[] objectToField(MoneyMarketSecurity moneyMarketSecurity) {
+ Object[] args = new Object[]{
+ moneyMarketSecurity.getId(),
+ moneyMarketSecurity.getSecurityId(),
+ moneyMarketSecurity.getDescription(),
+ TimeUtil.fromInstant(moneyMarketSecurity.getStartDate()),
+ TimeUtil.fromInstant(moneyMarketSecurity.getEndDate()),
+ moneyMarketSecurity.getNominalValue(),
+ moneyMarketSecurity.getNominalCurrency(),
+ moneyMarketSecurity.getInstrumentType(),
+ moneyMarketSecurity.getFullName(),
+ moneyMarketSecurity.getSecuritySymbol()
+ };
+ return args;
+ }
+
+}
diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractHazelcastLifecycleSupport.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractHazelcastLifecycleSupport.java
index fcd08aade..868c4de0c 100644
--- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractHazelcastLifecycleSupport.java
+++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractHazelcastLifecycleSupport.java
@@ -14,7 +14,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import ru.clearing.classes.objects.BusinessObject;
import ru.spcex.clearing.imdg.base.DictionaryMapStore;
import ru.spcex.clearing.imdg.base.SimpleObjectMapStore;
-import ru.spcex.clearing.imdg.utils.IMDGDistributedNames;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.imdg.iml.hazelcast.util.HazelcastHelper;
import java.util.ArrayList;
diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractUpdateMapService.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractUpdateMapService.java
index c80a0716a..24a5bc55b 100644
--- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractUpdateMapService.java
+++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractUpdateMapService.java
@@ -9,7 +9,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import ru.clearing.classes.objects.BusinessEvent;
-import ru.spcex.clearing.imdg.utils.IMDGDistributedNames;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
import java.time.Instant;
diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/UpdateMapService.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/UpdateMapService.java
index 11ff3a661..1f652cdf2 100644
--- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/UpdateMapService.java
+++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/UpdateMapService.java
@@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.clearing.classes.StaticData.Company.Company;
import ru.clearing.classes.StaticData.Company.CompanyUpdate;
-import ru.spcex.clearing.imdg.utils.IMDGDistributedNames;
+import ru.spcex.clearing.imdg.IMDGDistributedNames;
@Service
public class UpdateMapService extends AbstractUpdateMapService {
diff --git a/clearing-parent/pom.xml b/clearing-parent/pom.xml
index 3c0360f3e..f1430a80d 100644
--- a/clearing-parent/pom.xml
+++ b/clearing-parent/pom.xml
@@ -20,6 +20,7 @@
classes
backend-api
imdg
+ imdg-util
db-scripts
dbf-importer
dbf-exporter