From b10c22b888bdf0e4fae01f7ae9f80bd0f64ecea1 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Tue, 27 Sep 2022 14:03:31 +0300 Subject: [PATCH 01/14] changing inherited class from ObjectBaseMapStore to TemplateMapStore for CompanySymbolsMapStore --- .../imdg/object/CompanySymbolsMapStore.java | 63 +++++++++---------- 1 file changed, 28 insertions(+), 35 deletions(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java index c8e3735e1..42661abef 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java @@ -3,17 +3,34 @@ package ru.spcex.clearing.imdg.object; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.CompanySymbols; -import ru.spcex.clearing.imdg.base.ObjectBaseMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.TemplateMapStore; -import java.util.*; +import java.sql.ResultSet; +import java.sql.SQLException; @Component -public class CompanySymbolsMapStore extends ObjectBaseMapStore { +public class CompanySymbolsMapStore extends TemplateMapStore { public CompanySymbolsMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_CompanySymbols; + } + + @Override + protected CompanySymbols objectReader(ResultSet resultSet) throws SQLException { + CompanySymbols object = new CompanySymbols(); + object.setId(resultSet.getObject("id", Long.class)); + object.setCompanyId(resultSet.getObject("companyid", Long.class)); + object.setCompanySymbol(resultSet.getObject("companysymbol", String.class)); + object.setCompanySymbolValue(resultSet.getObject("companysymbolvalue", String.class)); + return object; + } + @Override public String getTableName() { return "COMPANY_SYMBOLS"; @@ -26,38 +43,14 @@ public class CompanySymbolsMapStore extends ObjectBaseMapStore { }; } - protected final String insertStatement = makeInsertSql(getTableName(), getFields(), "id"); - @Override - public Collection load(Collection keys) { - Map> paramMap = Collections.singletonMap("ids", keys); - return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, - (resultSet, i) -> { - CompanySymbols companySymbols = new CompanySymbols(); - companySymbols.setId(resultSet.getObject("id", Long.class)); - companySymbols.setCompanyId(resultSet.getObject("companyid", Long.class)); - companySymbols.setCompanySymbol(resultSet.getObject("companysymbol", String.class)); - companySymbols.setCompanySymbolValue(resultSet.getObject("companysymbolvalue", String.class)); - return companySymbols; - }); + protected Object[] objectToField(CompanySymbols resultSet) { + Object[] args = new Object[]{ + resultSet.getId(), + resultSet.getCompanyId(), + resultSet.getCompanySymbol(), + resultSet.getCompanySymbolValue() + }; + return args; } - - @Override - public void store(Map map) { - List batchArgs = new ArrayList<>(); - - for (Map.Entry entry : map.entrySet()) { - CompanySymbols companySymbols = entry.getValue(); - - Object[] args = new Object[]{ - companySymbols.getId(), - companySymbols.getCompanyId(), - companySymbols.getCompanySymbol(), - companySymbols.getCompanySymbolValue() - }; - batchArgs.add(args); - } - batchInsertUpdate(insertStatement, batchArgs); - } - } From 2acc0fa4025fcca6d7723c18602ccd9e834c2c3b Mon Sep 17 00:00:00 2001 From: psemenkov Date: Tue, 27 Sep 2022 15:57:00 +0300 Subject: [PATCH 02/14] changing inherited class from ObjectBaseMapStore to TemplateMapStore for ContactMapStore and ProfileDocumentMapStore. refactor CompanySymbolsMapStore --- .../imdg/object/CompanySymbolsMapStore.java | 20 ++-- .../clearing/imdg/object/ContactMapStore.java | 57 +++++------- .../imdg/object/ProfileDocumentMapStore.java | 93 +++++++++---------- 3 files changed, 78 insertions(+), 92 deletions(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java index 42661abef..74dadc2a6 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/CompanySymbolsMapStore.java @@ -21,16 +21,6 @@ public class CompanySymbolsMapStore extends TemplateMapStore { return IMDGDistributedNames.Map_CompanySymbols; } - @Override - protected CompanySymbols objectReader(ResultSet resultSet) throws SQLException { - CompanySymbols object = new CompanySymbols(); - object.setId(resultSet.getObject("id", Long.class)); - object.setCompanyId(resultSet.getObject("companyid", Long.class)); - object.setCompanySymbol(resultSet.getObject("companysymbol", String.class)); - object.setCompanySymbolValue(resultSet.getObject("companysymbolvalue", String.class)); - return object; - } - @Override public String getTableName() { return "COMPANY_SYMBOLS"; @@ -43,6 +33,16 @@ public class CompanySymbolsMapStore extends TemplateMapStore { }; } + @Override + protected CompanySymbols objectReader(ResultSet resultSet) throws SQLException { + CompanySymbols object = new CompanySymbols(); + object.setId(resultSet.getObject("id", Long.class)); + object.setCompanyId(resultSet.getObject("companyid", Long.class)); + object.setCompanySymbol(resultSet.getObject("companysymbol", String.class)); + object.setCompanySymbolValue(resultSet.getObject("companysymbolvalue", String.class)); + return object; + } + @Override protected Object[] objectToField(CompanySymbols resultSet) { Object[] args = new Object[]{ diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/ContactMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/ContactMapStore.java index 5bf6ca2c0..53d225f2c 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/ContactMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/ContactMapStore.java @@ -3,17 +3,24 @@ package ru.spcex.clearing.imdg.object; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.profile.Contact; -import ru.spcex.clearing.imdg.base.ObjectBaseMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.TemplateMapStore; -import java.util.*; +import java.sql.ResultSet; +import java.sql.SQLException; @Component -public class ContactMapStore extends ObjectBaseMapStore { +public class ContactMapStore extends TemplateMapStore { public ContactMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_Contact; + } + @Override public String getTableName() { return "CONTACT"; @@ -26,38 +33,24 @@ public class ContactMapStore extends ObjectBaseMapStore { }; } - protected final String insertStatement = makeInsertSql(getTableName(), getFields(), "id"); - @Override - public Collection load(Collection keys) { - Map> paramMap = Collections.singletonMap("ids", keys); - return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, - (resultSet, i) -> { - Contact contact = new Contact(); - contact.setId(resultSet.getObject("id", Long.class)); - contact.setCompanyId(resultSet.getObject("company_id", Long.class)); - contact.setContactType(resultSet.getObject("contact_type", String.class)); - contact.setContactValue(resultSet.getObject("contact_value", String.class)); - return contact; - }); + protected Contact objectReader(ResultSet resultSet) throws SQLException { + Contact object = new Contact(); + object.setId(resultSet.getObject("id", Long.class)); + object.setCompanyId(resultSet.getObject("company_id", Long.class)); + object.setContactType(resultSet.getObject("contact_type", String.class)); + object.setContactValue(resultSet.getObject("contact_value", String.class)); + return object; } @Override - public void store(Map map) { - List batchArgs = new ArrayList<>(); - - for (Map.Entry entry : map.entrySet()) { - Contact contact = entry.getValue(); - - Object[] args = new Object[]{ - contact.getId(), - contact.getCompanyId(), - contact.getContactType(), - contact.getContactValue() - }; - batchArgs.add(args); - } - batchInsertUpdate(insertStatement, batchArgs); + protected Object[] objectToField(Contact resultSet) { + Object[] args = new Object[]{ + resultSet.getId(), + resultSet.getCompanyId(), + resultSet.getContactType(), + resultSet.getContactValue() + }; + return args; } - } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/ProfileDocumentMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/ProfileDocumentMapStore.java index bd5260861..b6bd80323 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/ProfileDocumentMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/ProfileDocumentMapStore.java @@ -3,18 +3,25 @@ package ru.spcex.clearing.imdg.object; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.profile.ProfileDocument; -import ru.spcex.clearing.imdg.base.ObjectBaseMapStore; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.TemplateMapStore; import ru.spcex.platform.utils.time.TimeUtil; -import java.util.*; +import java.sql.ResultSet; +import java.sql.SQLException; @Component -public class ProfileDocumentMapStore extends ObjectBaseMapStore { +public class ProfileDocumentMapStore extends TemplateMapStore { public ProfileDocumentMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } + @Override + public String getMapName() { + return IMDGDistributedNames.Map_ProfileDocument; + } + @Override public String getTableName() { return "PROFILE_DOCUMENT"; @@ -28,56 +35,42 @@ public class ProfileDocumentMapStore extends ObjectBaseMapStore }; } - protected final String insertStatement = makeInsertSql(getTableName(), getFields(), "id"); - @Override - public Collection load(Collection keys) { - Map> paramMap = Collections.singletonMap("ids", keys); - return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, - (resultSet, i) -> { - ProfileDocument profileDocument = new ProfileDocument(); - profileDocument.setId(resultSet.getObject("id", Long.class)); - profileDocument.setCompanyId(resultSet.getObject("company_id", Long.class)); - profileDocument.setDocumentType(resultSet.getObject("document_type", String.class)); - profileDocument.setIssueDate(getInstantFromTimestamp(resultSet,"issue_date")); - profileDocument.setIssuePlace(resultSet.getObject("issue_place", String.class)); - profileDocument.setIssuer(resultSet.getObject("issuer", String.class)); - profileDocument.setIssuerCode(resultSet.getObject("issuer_code", String.class)); - profileDocument.setName(resultSet.getObject("name", String.class)); - profileDocument.setNumber(resultSet.getObject("number", String.class)); - profileDocument.setPlace(resultSet.getObject("place", String.class)); - profileDocument.setValidFromDate(getInstantFromTimestamp(resultSet,"valid_from_date")); - profileDocument.setValidToDate(getInstantFromTimestamp(resultSet,"valid_to_date")); - profileDocument.setLink(resultSet.getObject("LINK", String.class)); - return profileDocument; - }); + protected ProfileDocument objectReader(ResultSet resultSet) throws SQLException { + ProfileDocument object = new ProfileDocument(); + object.setId(resultSet.getObject("id", Long.class)); + object.setCompanyId(resultSet.getObject("company_id", Long.class)); + object.setDocumentType(resultSet.getObject("document_type", String.class)); + object.setIssueDate(getInstantFromTimestamp(resultSet, "issue_date")); + object.setIssuePlace(resultSet.getObject("issue_place", String.class)); + object.setIssuer(resultSet.getObject("issuer", String.class)); + object.setIssuerCode(resultSet.getObject("issuer_code", String.class)); + object.setName(resultSet.getObject("name", String.class)); + object.setNumber(resultSet.getObject("number", String.class)); + object.setPlace(resultSet.getObject("place", String.class)); + object.setValidFromDate(getInstantFromTimestamp(resultSet, "valid_from_date")); + object.setValidToDate(getInstantFromTimestamp(resultSet, "valid_to_date")); + object.setLink(resultSet.getObject("LINK", String.class)); + return object; } @Override - public void store(Map map) { - List batchArgs = new ArrayList<>(); - - for (Map.Entry entry : map.entrySet()) { - ProfileDocument profileDocument = entry.getValue(); - - Object[] args = new Object[]{ - profileDocument.getId(), - profileDocument.getCompanyId(), - profileDocument.getDocumentType(), - TimeUtil.toDateFromInstant(profileDocument.getIssueDate()), - profileDocument.getIssuePlace(), - profileDocument.getIssuer(), - profileDocument.getIssuerCode(), - profileDocument.getName(), - profileDocument.getNumber(), - profileDocument.getPlace(), - TimeUtil.toDateFromInstant(profileDocument.getValidFromDate()), - TimeUtil.toDateFromInstant(profileDocument.getValidToDate()), - profileDocument.getLink() - }; - batchArgs.add(args); - } - batchInsertUpdate(insertStatement, batchArgs); + protected Object[] objectToField(ProfileDocument resultSet) { + Object[] args = new Object[]{ + resultSet.getId(), + resultSet.getCompanyId(), + resultSet.getDocumentType(), + TimeUtil.toDateFromInstant(resultSet.getIssueDate()), + resultSet.getIssuePlace(), + resultSet.getIssuer(), + resultSet.getIssuerCode(), + resultSet.getName(), + resultSet.getNumber(), + resultSet.getPlace(), + TimeUtil.toDateFromInstant(resultSet.getValidFromDate()), + TimeUtil.toDateFromInstant(resultSet.getValidToDate()), + resultSet.getLink() + }; + return args; } - } From 43027789d4d317bc621642539e2f94002808ae0a Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 28 Sep 2022 13:09:48 +0300 Subject: [PATCH 03/14] get bean --- .../main/java/ru/spcex/clearing/imdg/IMDGApplication.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java index 917737e04..8cf053af0 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java @@ -1,8 +1,10 @@ package ru.spcex.clearing.imdg; +import com.hazelcast.core.HazelcastInstance; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.context.ConfigurableApplicationContext; @SpringBootApplication public class IMDGApplication { @@ -10,7 +12,9 @@ public class IMDGApplication { public static void main(String[] args) { try { SpringApplicationBuilder builder = new SpringApplicationBuilder(IMDGApplication.class); - builder.run(args); + ConfigurableApplicationContext configurableApplicationContext = builder.run(args); + HazelcastInstance hazelcastInstance = configurableApplicationContext.getBean(HazelcastInstance.class); + hazelcastInstance.getMap(""); } catch (Throwable e) { LoggerFactory.getLogger(IMDGApplication.class).error("STORAGE start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage()); System.exit(-1); From 802ade769a90cebd0c28d68c085c88eadd10d2d5 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 28 Sep 2022 13:14:38 +0300 Subject: [PATCH 04/14] get all maps from hazelcast config --- .../main/java/ru/spcex/clearing/imdg/IMDGApplication.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java index 8cf053af0..b80d8ce63 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.imdg; +import com.hazelcast.config.MapStoreConfig; import com.hazelcast.core.HazelcastInstance; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -15,6 +16,11 @@ public class IMDGApplication { ConfigurableApplicationContext configurableApplicationContext = builder.run(args); HazelcastInstance hazelcastInstance = configurableApplicationContext.getBean(HazelcastInstance.class); hazelcastInstance.getMap(""); + for (String mapName : hazelcastInstance.getConfig().getMapConfigs().keySet()) { + MapStoreConfig mapStoreConfig = hazelcastInstance.getConfig().getMapConfig(mapName).getMapStoreConfig(); + Object mapStore = mapStoreConfig.getImplementation(); + } + } catch (Throwable e) { LoggerFactory.getLogger(IMDGApplication.class).error("STORAGE start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage()); System.exit(-1); From 7a2fbe5b790808d42d3d26c4c5676965adad3ffd Mon Sep 17 00:00:00 2001 From: psemenkov Date: Wed, 28 Sep 2022 13:11:09 +0300 Subject: [PATCH 05/14] AccountBalance added --- .../statics/data/account/AccountBalance.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java new file mode 100644 index 000000000..06803e7c7 --- /dev/null +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java @@ -0,0 +1,44 @@ +package ru.clearing.classes.statics.data.account; + +import ru.clearing.classes.ConstSerializable; +import ru.clearing.classes.objects.BusinessObject; + +import java.time.Instant; + +/** + * Счета + *

+ * DB table: ACCOUNT + **/ +public class AccountBalance extends BusinessObject { + private static final long serialVersionUID = ConstSerializable.serialVersionUID; + + private String account; + private String accountType; + private Long relationId; + private String status; + private String processingSign; + + private Long company_id; //bigint, + private Instant created_at; //timestamp, + private Instant updated_at; //timestamp, + private Long account_id; //bigint, + private Long account_type; //bigint, + // private Long account; //bigint, + private String open_balance_amount; //numeric(72, 18), + private String start_balance_amount; //numeric(72, 18), + private String close_balance_amount; //numeric(72, 18), + private String trade_balance_amount; //numeric(72, 18), + private String free_balance_amount; //numeric(72, 18), + private String change_balance_amount; //numeric(72, 18), + private String credit_amount; //numeric(72, 18), + private String debit_amount; //numeric(72, 18), + private String balance_amount; //numeric(72, 18), + private String balance_account_type; //char(4), + private Instant clearing_date; //date, + private String currency_code; //char(4), + private String trading_code; //varchar(255), + private String short_name; //varchar(255), + private String full_name; //varchar(255) + +} \ No newline at end of file From b7ae9b69bc259a1cc08a7d4d1ebe4a97c24dac44 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Wed, 28 Sep 2022 18:02:14 +0300 Subject: [PATCH 06/14] Added a search function by the name of the table to which you need to add a MapStore --- .../spcex/clearing/imdg/IMDGApplication.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java index b80d8ce63..6b0c77f97 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java @@ -6,6 +6,17 @@ import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.ConfigurableApplicationContext; +import ru.spcex.clearing.imdg.base.BusinessObjectMapStore; +import ru.spcex.clearing.imdg.base.DictionaryMapStore; +import ru.spcex.clearing.imdg.base.TemplateEventMapStore; +import ru.spcex.clearing.imdg.base.TemplateMapStore; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.List; @SpringBootApplication public class IMDGApplication { @@ -14,12 +25,35 @@ public class IMDGApplication { try { SpringApplicationBuilder builder = new SpringApplicationBuilder(IMDGApplication.class); ConfigurableApplicationContext configurableApplicationContext = builder.run(args); + + List nameTables = new ArrayList<>(); + Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://10.200.200.133:5432/postgres", "clearing", "Aa111111"); + DatabaseMetaData md = jdbcConnection.getMetaData(); + ResultSet rs = md.getTables(null, "clearing", "%", new String[]{"TABLE"}); + while (rs.next()) { + nameTables.add(rs.getString(3)); + } + HazelcastInstance hazelcastInstance = configurableApplicationContext.getBean(HazelcastInstance.class); hazelcastInstance.getMap(""); for (String mapName : hazelcastInstance.getConfig().getMapConfigs().keySet()) { MapStoreConfig mapStoreConfig = hazelcastInstance.getConfig().getMapConfig(mapName).getMapStoreConfig(); Object mapStore = mapStoreConfig.getImplementation(); + String tableName = mapStore == null ? "Не получилось сопоставить mapStore: is null" : "Не получилось сопоставить: " + mapStore.getClass() + " с таблицей"; + if (mapStore instanceof TemplateMapStore) { + tableName = ((TemplateMapStore) mapStore).getTableName(); + } else if (mapStore instanceof DictionaryMapStore) { + tableName = ((DictionaryMapStore) mapStore).getTableName(); + } else if (mapStore instanceof TemplateEventMapStore) { + tableName = ((TemplateEventMapStore) mapStore).getTableName(); + } else if (mapStore instanceof BusinessObjectMapStore) { + tableName = ((BusinessObjectMapStore) mapStore).getTableName(); + } else if (mapName.equals("default")) { + continue; + } + nameTables.remove(tableName.toLowerCase()); } + nameTables.forEach(System.out::println); } catch (Throwable e) { LoggerFactory.getLogger(IMDGApplication.class).error("STORAGE start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage()); From 870779d55d2a060b75a904a970af7a423bd424e0 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Wed, 28 Sep 2022 18:14:30 +0300 Subject: [PATCH 07/14] Added comment --- .../src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java index 6b0c77f97..874a7ee63 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java @@ -26,6 +26,7 @@ public class IMDGApplication { SpringApplicationBuilder builder = new SpringApplicationBuilder(IMDGApplication.class); ConfigurableApplicationContext configurableApplicationContext = builder.run(args); + //Поиск таблиц которым нужно добавить mapStore и вывод результата в консоль List nameTables = new ArrayList<>(); Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://10.200.200.133:5432/postgres", "clearing", "Aa111111"); DatabaseMetaData md = jdbcConnection.getMetaData(); @@ -33,7 +34,7 @@ public class IMDGApplication { while (rs.next()) { nameTables.add(rs.getString(3)); } - + HazelcastInstance hazelcastInstance = configurableApplicationContext.getBean(HazelcastInstance.class); hazelcastInstance.getMap(""); for (String mapName : hazelcastInstance.getConfig().getMapConfigs().keySet()) { @@ -53,6 +54,7 @@ public class IMDGApplication { } nameTables.remove(tableName.toLowerCase()); } + //вывод результата поиска nameTables.forEach(System.out::println); } catch (Throwable e) { From 26c1fd84c7be8d681bde9a15282cff229c08764a Mon Sep 17 00:00:00 2001 From: psemenkov Date: Wed, 28 Sep 2022 18:23:13 +0300 Subject: [PATCH 08/14] Refactoring output --- .../src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java index 874a7ee63..069ab865f 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java @@ -51,6 +51,8 @@ public class IMDGApplication { tableName = ((BusinessObjectMapStore) mapStore).getTableName(); } else if (mapName.equals("default")) { continue; + } else { + System.out.println(tableName); } nameTables.remove(tableName.toLowerCase()); } From 245e4d03b60549638d52495e8f5fb7d3ef55d8fe Mon Sep 17 00:00:00 2001 From: psemenkov Date: Thu, 29 Sep 2022 13:59:08 +0300 Subject: [PATCH 09/14] Added AccountBalanceMapStore, refactoring AccountBalance --- .../statics/data/account/AccountBalance.java | 197 +++++++++++++++--- .../spcex/clearing/imdg/IMDGApplication.java | 9 +- .../AccountBalanceMapStore.java | 99 +++++++++ .../clearing/imdg/IMDGDistributedNames.java | 15 +- 4 files changed, 280 insertions(+), 40 deletions(-) create mode 100644 clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountBalanceMapStore.java diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java index 06803e7c7..a652975ea 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java @@ -3,7 +3,8 @@ package ru.clearing.classes.statics.data.account; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -import java.time.Instant; +import java.math.BigDecimal; +import java.time.LocalDate; /** * Счета @@ -12,33 +13,175 @@ import java.time.Instant; **/ public class AccountBalance extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; - + private Long companyId; + private Long accountId; + private Long accountType; private String account; - private String accountType; - private Long relationId; - private String status; - private String processingSign; + private BigDecimal openBalanceAmount; + private BigDecimal startBalanceAmount; + private BigDecimal closeBalanceAmount; + private BigDecimal tradeBalanceAmount; + private BigDecimal freeBalanceAmount; + private BigDecimal changeBalanceAmount; + private BigDecimal creditAmount; + private BigDecimal debitAmount; + private BigDecimal balanceAmount; + private String balanceAccountType; + private LocalDate clearingDate; + private String currencyCode; + private String tradingCode; + private String shortName; + private String fullName; - private Long company_id; //bigint, - private Instant created_at; //timestamp, - private Instant updated_at; //timestamp, - private Long account_id; //bigint, - private Long account_type; //bigint, - // private Long account; //bigint, - private String open_balance_amount; //numeric(72, 18), - private String start_balance_amount; //numeric(72, 18), - private String close_balance_amount; //numeric(72, 18), - private String trade_balance_amount; //numeric(72, 18), - private String free_balance_amount; //numeric(72, 18), - private String change_balance_amount; //numeric(72, 18), - private String credit_amount; //numeric(72, 18), - private String debit_amount; //numeric(72, 18), - private String balance_amount; //numeric(72, 18), - private String balance_account_type; //char(4), - private Instant clearing_date; //date, - private String currency_code; //char(4), - private String trading_code; //varchar(255), - private String short_name; //varchar(255), - private String full_name; //varchar(255) + public Long getCompanyId() { + return companyId; + } + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } + + public Long getAccountType() { + return accountType; + } + + public void setAccountType(Long accountType) { + this.accountType = accountType; + } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public BigDecimal getOpenBalanceAmount() { + return openBalanceAmount; + } + + public void setOpenBalanceAmount(BigDecimal openBalanceAmount) { + this.openBalanceAmount = openBalanceAmount; + } + + public BigDecimal getStartBalanceAmount() { + return startBalanceAmount; + } + + public void setStartBalanceAmount(BigDecimal startBalanceAmount) { + this.startBalanceAmount = startBalanceAmount; + } + + public BigDecimal getCloseBalanceAmount() { + return closeBalanceAmount; + } + + public void setCloseBalanceAmount(BigDecimal closeBalanceAmount) { + this.closeBalanceAmount = closeBalanceAmount; + } + + public BigDecimal getTradeBalanceAmount() { + return tradeBalanceAmount; + } + + public void setTradeBalanceAmount(BigDecimal tradeBalanceAmount) { + this.tradeBalanceAmount = tradeBalanceAmount; + } + + public BigDecimal getFreeBalanceAmount() { + return freeBalanceAmount; + } + + public void setFreeBalanceAmount(BigDecimal freeBalanceAmount) { + this.freeBalanceAmount = freeBalanceAmount; + } + + public BigDecimal getChangeBalanceAmount() { + return changeBalanceAmount; + } + + public void setChangeBalanceAmount(BigDecimal changeBalanceAmount) { + this.changeBalanceAmount = changeBalanceAmount; + } + + public BigDecimal getCreditAmount() { + return creditAmount; + } + + public void setCreditAmount(BigDecimal creditAmount) { + this.creditAmount = creditAmount; + } + + public BigDecimal getDebitAmount() { + return debitAmount; + } + + public void setDebitAmount(BigDecimal debitAmount) { + this.debitAmount = debitAmount; + } + + public BigDecimal getBalanceAmount() { + return balanceAmount; + } + + public void setBalanceAmount(BigDecimal balanceAmount) { + this.balanceAmount = balanceAmount; + } + + public String getBalanceAccountType() { + return balanceAccountType; + } + + public void setBalanceAccountType(String balanceAccountType) { + this.balanceAccountType = balanceAccountType; + } + + public LocalDate getClearingDate() { + return clearingDate; + } + + public void setClearingDate(LocalDate clearingDate) { + this.clearingDate = clearingDate; + } + + public String getCurrencyCode() { + return currencyCode; + } + + public void setCurrencyCode(String currencyCode) { + this.currencyCode = currencyCode; + } + + public String getTradingCode() { + return tradingCode; + } + + public void setTradingCode(String tradingCode) { + this.tradingCode = tradingCode; + } + + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } } \ No newline at end of file diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java index 069ab865f..cb7c276d5 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java @@ -40,7 +40,7 @@ public class IMDGApplication { for (String mapName : hazelcastInstance.getConfig().getMapConfigs().keySet()) { MapStoreConfig mapStoreConfig = hazelcastInstance.getConfig().getMapConfig(mapName).getMapStoreConfig(); Object mapStore = mapStoreConfig.getImplementation(); - String tableName = mapStore == null ? "Не получилось сопоставить mapStore: is null" : "Не получилось сопоставить: " + mapStore.getClass() + " с таблицей"; + String tableName; if (mapStore instanceof TemplateMapStore) { tableName = ((TemplateMapStore) mapStore).getTableName(); } else if (mapStore instanceof DictionaryMapStore) { @@ -52,13 +52,14 @@ public class IMDGApplication { } else if (mapName.equals("default")) { continue; } else { - System.out.println(tableName); + System.out.println(mapStore == null ? "Не получилось сопоставить mapStore: is null" : "Не получилось сопоставить: " + mapStore.getClass() + " с таблицей"); + continue; } nameTables.remove(tableName.toLowerCase()); } - //вывод результата поиска + System.out.println("** Результата поиска таблиц которым нужно добавить mapStore **"); nameTables.forEach(System.out::println); - + System.out.println("**************************************************************"); } catch (Throwable e) { LoggerFactory.getLogger(IMDGApplication.class).error("STORAGE start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage()); System.exit(-1); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountBalanceMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountBalanceMapStore.java new file mode 100644 index 000000000..ce5fedc49 --- /dev/null +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/AccountBalanceMapStore.java @@ -0,0 +1,99 @@ +package ru.spcex.clearing.imdg.businessobject; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.account.AccountBalance; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.TemplateMapStore; +import ru.spcex.platform.utils.time.TimeUtil; + +import java.math.BigDecimal; +import java.sql.ResultSet; +import java.sql.SQLException; + +@Component +public class AccountBalanceMapStore extends TemplateMapStore { + + public AccountBalanceMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getMapName() { + return IMDGDistributedNames.Map_AccountBalance; + } + + @Override + public String getTableName() { + return "ACCOUNT_BALANCE"; + } + + @Override + public String[] getFields() { + return new String[]{ + "ID", "COMPANY_ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT_ID", "ACCOUNT_TYPE", + "ACCOUNT", "OPEN_BALANCE_AMOUNT", "START_BALANCE_AMOUNT", "CLOSE_BALANCE_AMOUNT", + "TRADE_BALANCE_AMOUNT", "FREE_BALANCE_AMOUNT", "CHANGE_BALANCE_AMOUNT", + "CREDIT_AMOUNT", "DEBIT_AMOUNT", "BALANCE_AMOUNT", "BALANCE_ACCOUNT_TYPE", + "CLEARING_DATE", "CURRENCY_CODE", "TRADING_CODE", "SHORT_NAME", "FULL_NAME" + }; + } + + @Override + public AccountBalance objectReader(ResultSet resultSet) throws SQLException { + AccountBalance object = new AccountBalance(); + object.setId(resultSet.getObject("ID", Long.class)); + object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); + object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); + object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); + object.setAccountId(resultSet.getObject("ACCOUNT_ID", Long.class)); + object.setAccountType(resultSet.getObject("ACCOUNT_TYPE", Long.class)); + object.setAccount(resultSet.getObject("ACCOUNT", String.class)); + object.setOpenBalanceAmount(resultSet.getObject("OPEN_BALANCE_AMOUNT", BigDecimal.class)); + object.setStartBalanceAmount(resultSet.getObject("START_BALANCE_AMOUNT", BigDecimal.class)); + object.setCloseBalanceAmount(resultSet.getObject("CLOSE_BALANCE_AMOUNT", BigDecimal.class)); + object.setTradeBalanceAmount(resultSet.getObject("TRADE_BALANCE_AMOUNT", BigDecimal.class)); + object.setFreeBalanceAmount(resultSet.getObject("FREE_BALANCE_AMOU", BigDecimal.class)); + object.setChangeBalanceAmount(resultSet.getObject("CHANGE_BALANCE_AMOUNT", BigDecimal.class)); + object.setCreditAmount(resultSet.getObject("CREDIT_AMOUNT", BigDecimal.class)); + object.setDebitAmount(resultSet.getObject("DEBIT_AMOUNT", BigDecimal.class)); + object.setBalanceAmount(resultSet.getObject("BALANCE_AMOUNT", BigDecimal.class)); + object.setBalanceAccountType(resultSet.getObject("BALANCE_ACCOUNT_TYPE", String.class)); + object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); + object.setCurrencyCode(resultSet.getObject("CURRENCY_CODE", String.class)); + object.setTradingCode(resultSet.getObject("TRADING_CODE", String.class)); + object.setShortName(resultSet.getObject("SHORT_NAME", String.class)); + object.setFullName(resultSet.getObject("FULL_NAME", String.class)); + return object; + } + + @Override + public Object[] objectToField(AccountBalance object) { + Object[] args = new Object[]{ + object.getId(), + object.getCompanyId(), + TimeUtil.toDateFromInstant(object.getCreated()), + TimeUtil.toDateFromInstant(object.getUpdated()), + object.getAccountId(), + object.getAccountType(), + object.getAccount(), + object.getOpenBalanceAmount(), + object.getStartBalanceAmount(), + object.getCloseBalanceAmount(), + object.getTradeBalanceAmount(), + object.getFreeBalanceAmount(), + object.getChangeBalanceAmount(), + object.getCreditAmount(), + object.getDebitAmount(), + object.getBalanceAmount(), + object.getBalanceAccountType(), + TimeUtil.toDateFromLocalDate(object.getClearingDate()), + object.getCurrencyCode(), + object.getTradingCode(), + object.getShortName(), + object.getFullName() + }; + return args; + } + +} \ No newline at end of file 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 e8ae9a342..78db13e26 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 @@ -4,9 +4,6 @@ package ru.spcex.clearing.imdg; * Список имён распределённых объектов */ public final class IMDGDistributedNames { - private IMDGDistributedNames() { - } - public static final String Map_Company = "Map_Company"; public static final String Map_CompanyHistory = "Map_CompanyHistory"; public static final String Map_CompanyRoleSet = "Map_CompanyRoleSet"; @@ -15,6 +12,7 @@ public final class IMDGDistributedNames { public static final String Map_Contact = "Map_Contact"; public static final String Map_ProfileDocument = "Map_ProfileDocument"; public static final String Map_Account = "Map_Account"; + public static final String Map_AccountBalance = "Map_AccountBalance"; public static final String Map_AccountHistory = "Map_AccountHistory"; public static final String Map_Relation = "Map_Relation"; public static final String Map_ClearingAccount = "Map_ClearingAccount"; @@ -43,7 +41,6 @@ public final class IMDGDistributedNames { public static final String Map_Timetable = "Map_Timetable"; public static final String Map_InDocumentJournal = "Map_InDocumentJournal"; public static final String Map_OutDocumentJournal = "Map_OutDocumentJournal"; - public static final String Map_SDf01 = "Map_SDf01"; public static final String Map_SDf02 = "Map_SDf02"; public static final String Map_SDf03 = "Map_SDf03"; @@ -58,10 +55,9 @@ public final class IMDGDistributedNames { public static final String Map_SDf09 = "Map_SDf09"; public static final String Map_SDf12 = "Map_SDf12"; public static final String Map_SDf18 = "Map_SDf18"; - -// public static final String Map_InterestStatusDictionary = "Map_InterestStatusDictionary"; future + // public static final String Map_InterestStatusDictionary = "Map_InterestStatusDictionary"; future public static final String Map_AllowedDictionary = "Map_AllowedDictionary"; -// public static final String Map_ClearingMemberCategoryDictionary = "Map_ClearingMemberCategoryDictionary"; future + // public static final String Map_ClearingMemberCategoryDictionary = "Map_ClearingMemberCategoryDictionary"; future public static final String Map_CompanyRoleDictionary = "Map_CompanyRoleDictionary"; public static final String Map_CompanySymbolDictionary = "Map_CompanySymbolDictionary"; public static final String Map_ContactTypeDictionary = "Map_ContactTypeDictionary"; @@ -103,9 +99,10 @@ public final class IMDGDistributedNames { public static final String Map_UserSettings = "Map_UserSettings"; public static final String Map_UserRoleSession = "Map_UserRoleSession"; public static final String Map_AccountStatusDictionary = "Map_AccountStatusDictionary"; - public static final String Map_KeyRate = "Map_KeyRate"; public static final String Map_MoneyMarketSecurity = "Map_MoneyMarketSecurity"; - public static final String MAP_SEQUENCE_NAME = "MAP_SEQUENCE_NAME"; // todo вынести idGenerator отдельно и завернуть в метод, чтобы не напрямую обращаться. + + private IMDGDistributedNames() { + } } From 93d8f1b856a2f54214fab66c68738991645f38cd Mon Sep 17 00:00:00 2001 From: psemenkov Date: Thu, 29 Sep 2022 16:13:36 +0300 Subject: [PATCH 10/14] Added AccountBalanceHistoryMapStore and AccountBalanceHistory --- .../data/account/AccountBalanceHistory.java | 28 +++++++ .../AccountBalanceHistoryMapStore.java | 73 +++++++++++++++++++ .../clearing/imdg/IMDGDistributedNames.java | 1 + 3 files changed, 102 insertions(+) create mode 100644 clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalanceHistory.java create mode 100644 clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountBalanceHistoryMapStore.java diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalanceHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalanceHistory.java new file mode 100644 index 000000000..3fd8f9d11 --- /dev/null +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalanceHistory.java @@ -0,0 +1,28 @@ +package ru.clearing.classes.statics.data.account; + +import ru.clearing.classes.ConstSerializable; +import ru.clearing.classes.objects.BusinessEvent; + +import java.io.Serial; + +/** + * Изменение состояния объекта Счета + *

+ * DB table: ACCOUNT_BALANCE_HISTORY + **/ +public class AccountBalanceHistory extends BusinessEvent { + @Serial + private static final long serialVersionUID = ConstSerializable.serialVersionUID; + + private AccountBalance object; + + @Override + public AccountBalance getObject() { + return object; + } + + @Override + public void setObject(AccountBalance object) { + this.object = object; + } +} diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountBalanceHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountBalanceHistoryMapStore.java new file mode 100644 index 000000000..9e081556d --- /dev/null +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/AccountBalanceHistoryMapStore.java @@ -0,0 +1,73 @@ +package ru.spcex.clearing.imdg.businessevent; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.account.AccountBalance; +import ru.clearing.classes.statics.data.account.AccountBalanceHistory; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.imdg.base.TemplateEventMapStore; +import ru.spcex.platform.utils.time.TimeUtil; + +@Component +public class AccountBalanceHistoryMapStore extends TemplateEventMapStore { + + public AccountBalanceHistoryMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + public String getMapName() { + return IMDGDistributedNames.Map_AccountBalanceHistory; + } + + @Override + public String getTableName() { + return "ACCOUNT_BALANCE_HISTORY"; + } + + @Override + public String[] getFields() { + return new String[]{"ID", "EVENT_TIME", "EVENT_USER_ID", + "ACCOUNT_BALANCE_ID", "COMPANY_ID", "CREATED_AT", "UPDATED_AT", "ACCOUNT_ID", "ACCOUNT_TYPE", + "ACCOUNT", "OPEN_BALANCE_AMOUNT", "START_BALANCE_AMOUNT", "CLOSE_BALANCE_AMOUNT", + "TRADE_BALANCE_AMOUNT", "FREE_BALANCE_AMOUNT", "CHANGE_BALANCE_AMOUNT", + "CREDIT_AMOUNT", "DEBIT_AMOUNT", "BALANCE_AMOUNT", "BALANCE_ACCOUNT_TYPE", + "CLEARING_DATE", "CURRENCY_CODE", "TRADING_CODE", "SHORT_NAME", "FULL_NAME" + }; + } + + @Override + public Object[] objectToField(AccountBalanceHistory updateLog) { + AccountBalance object = updateLog.getObject(); + Object[] args = new Object[]{ + updateLog.getId(), + updateLog.getEventTime(), + updateLog.getUserId(), + + object.getId(), + object.getCompanyId(), + TimeUtil.toDateFromInstant(object.getCreated()), + TimeUtil.toDateFromInstant(object.getUpdated()), + object.getAccountId(), + object.getAccountType(), + object.getAccount(), + object.getOpenBalanceAmount(), + object.getStartBalanceAmount(), + object.getCloseBalanceAmount(), + object.getTradeBalanceAmount(), + object.getFreeBalanceAmount(), + object.getChangeBalanceAmount(), + object.getCreditAmount(), + object.getDebitAmount(), + object.getBalanceAmount(), + object.getBalanceAccountType(), + TimeUtil.toDateFromLocalDate(object.getClearingDate()), + object.getCurrencyCode(), + object.getTradingCode(), + object.getShortName(), + object.getFullName() + }; + return args; + } + +} 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 78db13e26..26e7c9295 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 @@ -14,6 +14,7 @@ public final class IMDGDistributedNames { public static final String Map_Account = "Map_Account"; public static final String Map_AccountBalance = "Map_AccountBalance"; public static final String Map_AccountHistory = "Map_AccountHistory"; + public static final String Map_AccountBalanceHistory = "Map_AccountBalanceHistory"; public static final String Map_Relation = "Map_Relation"; public static final String Map_ClearingAccount = "Map_ClearingAccount"; public static final String Map_ClearingAccountHistory = "Map_ClearingAccountHistory"; From da0e319e952472f664182ab957cb6747ec057060 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Fri, 30 Sep 2022 13:47:26 +0300 Subject: [PATCH 11/14] Refactoring CompanyInfo and dependent classes --- .../entity/company/CompanyBackendGetAll.java | 1 - .../entity/company/CompanyBackendInfoGetAll.java | 1 - .../classes/statics/data/account/AccountBalance.java | 2 +- .../classes/statics/data/profile/CompanyInfo.java | 9 --------- .../imdg/businessevent/CompanyHistoryMapStore.java | 9 ++++----- .../imdg/businessobject/CompanyMapStore.java | 12 +++++------- 6 files changed, 10 insertions(+), 24 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendGetAll.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendGetAll.java index c657efe39..d7f4fab4f 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendGetAll.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendGetAll.java @@ -55,7 +55,6 @@ public class CompanyBackendGetAll extends BasicSpcexResponse { CompanyInfo profile = company.getProfile(); companyInfoFields.setId(profile.getId()); companyInfoFields.setCompanyId(profile.getCompanyId()); - companyInfoFields.setClearingMemberCategory(profile.getClearingMemberCategory()); companyInfoFields.setCorporationSoleType(profile.getCorporationSoleType()); companyInfoFields.setCountryCode(profile.getCountryCode()); companyInfoFields.setDescription(profile.getDescription()); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendInfoGetAll.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendInfoGetAll.java index ddb1692a7..effd0af08 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendInfoGetAll.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendInfoGetAll.java @@ -43,7 +43,6 @@ public class CompanyBackendInfoGetAll extends BasicSpcexResponse { var singleItem = new CompanyBackendInfoGetFields(); singleItem.setId(companyInfo.getId()); singleItem.setCompanyId(companyInfo.getCompanyId()); - singleItem.setClearingMemberCategory(companyInfo.getClearingMemberCategory()); singleItem.setCorporationSoleType(companyInfo.getCorporationSoleType()); singleItem.setCountryCode(companyInfo.getCountryCode()); singleItem.setDescription(companyInfo.getDescription()); diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java index a652975ea..ad7611ace 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/account/AccountBalance.java @@ -9,7 +9,7 @@ import java.time.LocalDate; /** * Счета *

- * DB table: ACCOUNT + * DB table: ACCOUNT_BALANCE **/ public class AccountBalance extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java index 824450757..175c17b69 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java @@ -10,7 +10,6 @@ public class CompanyInfo extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private Long companyId; // Company.CompanyInfo.companyId = CompanyInfo.id - private String clearingMemberCategory; // ref CHAR(4), private String corporationSoleType; // ref CHAR(4), private String countryCode; //ref CHAR(4), private String description; @@ -34,14 +33,6 @@ public class CompanyInfo extends SpcexObjectBase { this.companyId = companyId; } - public String getClearingMemberCategory() { - return clearingMemberCategory; - } - - public void setClearingMemberCategory(String clearingMemberCategory) { - this.clearingMemberCategory = clearingMemberCategory; - } - public String getCorporationSoleType() { return corporationSoleType; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/CompanyHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/CompanyHistoryMapStore.java index aa0ff5f3c..ce029e5a9 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/CompanyHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/CompanyHistoryMapStore.java @@ -29,16 +29,16 @@ public class CompanyHistoryMapStore extends BusinessEventMapStore companyInfoToSQLArgs(@NonNull CompanyInfo companyInfo, CompanyHistory rootUpdate) { @@ -97,7 +97,6 @@ public class CompanyHistoryMapStore extends BusinessEventMapStore { @Override public String[] getFields() { return new String[]{ - "id", "created_at", "updated_at", "trading_code", "clearing_code", "registration_code", "workflow_status", "short_name", "full_name" + "id", "created_at", "updated_at", "trading_code", "clearing_code", "registration_code", "workflow_status", "short_name", "full_name" }; } public String[] getFieldsForCompanyInfo() { return new String[]{ - "id", "company_id", "clearing_member_category", "corporation_sole_type", "country_code", "description", + "id", "company_id", "corporation_sole_type", "country_code", "description", "professional_sign", "legal_kind", "organization_type", "residence", "short_name", "full_name", - "short_name_eng", "full_name_eng", "trading_code", "clearing_code", "registration_code" + "short_name_eng", "full_name_eng", "trading_code", "clearing_code", "registration_code" }; } @@ -102,7 +102,6 @@ public class CompanyMapStore extends BusinessObjectMapStore { CompanyInfo companyInfo = new CompanyInfo(); companyInfo.setId(rs.getObject("Id", Long.class)); companyInfo.setCompanyId(rs.getObject("CompanyId", Long.class)); - companyInfo.setClearingMemberCategory(rs.getString("ClearingMemberCategory")); companyInfo.setCorporationSoleType(rs.getString("CorporationSoleType")); companyInfo.setCountryCode(rs.getString("CountryCode")); companyInfo.setDescription(rs.getString("Description")); @@ -133,14 +132,13 @@ public class CompanyMapStore extends BusinessObjectMapStore { * Перечисление значений полей CompanyInfo. * См. insertCompanyInfoStatement * - * @param companyInfo должен быть заполнен id, company_id = company.id + * @param companyInfo должен быть заполнен id, company_id = company.id * @return */ protected List companyInfoToSQLArgs(@NonNull CompanyInfo companyInfo) { List companyInfoArgs = new ArrayList<>(Arrays.asList( companyInfo.getId(), companyInfo.getCompanyId(), - companyInfo.getClearingMemberCategory(), companyInfo.getCorporationSoleType(), companyInfo.getCountryCode(), companyInfo.getDescription(), @@ -155,7 +153,7 @@ public class CompanyMapStore extends BusinessObjectMapStore { companyInfo.getTradingCode(), companyInfo.getClearingCode(), companyInfo.getRegistrationCode() - )); + )); return companyInfoArgs; } } From 177607167ad47009b8afb7e91f2bcc183f5314ea Mon Sep 17 00:00:00 2001 From: psemenkov Date: Fri, 30 Sep 2022 17:25:01 +0300 Subject: [PATCH 12/14] Refactoring CompanyInfo and dependent classes --- .../classes/statics/data/company/Company.java | 2 +- .../statics/data/misc/AdmittedDeal.java | 30 +++++++++++++++++++ .../imdg/base/BusinessObjectMapStore.java | 4 +-- .../imdg/businessobject/CompanyMapStore.java | 30 +++++++++---------- 4 files changed, 48 insertions(+), 18 deletions(-) create mode 100644 clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/AdmittedDeal.java diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/company/Company.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/company/Company.java index 4e82c1bb6..9bbc2ee44 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/company/Company.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/company/Company.java @@ -1,8 +1,8 @@ package ru.clearing.classes.statics.data.company; import ru.clearing.classes.ConstSerializable; -import ru.clearing.classes.statics.data.profile.CompanyInfo; import ru.clearing.classes.objects.BusinessObject; +import ru.clearing.classes.statics.data.profile.CompanyInfo; import java.io.Serial; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/AdmittedDeal.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/AdmittedDeal.java new file mode 100644 index 000000000..b83f356d8 --- /dev/null +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/AdmittedDeal.java @@ -0,0 +1,30 @@ +package ru.clearing.classes.statics.data.misc; + +import ru.clearing.classes.ConstSerializable; +import ru.clearing.classes.objects.BusinessObject; + +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalTime; + +/** + * Счета + *

+ * DB table: ADMITTED_DEAL + **/ +public class AdmittedDeal extends BusinessObject { + private static final long serialVersionUID = ConstSerializable.serialVersionUID; + + private String companyFullName; + private Instant executionDepositRegisterTradingDate; + private String exchangeExecutionId; + private LocalTime exchangeExecutionTime; + private Long securityShortName; + private String sellerFullName; + private String sellerClearingCode; + private String sellerAccount; + private String buyerFullName; + private String buyerClearingCode; + private String buyerAccount; + private BigDecimal executionDepositRegisterAmount; +} \ No newline at end of file diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/BusinessObjectMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/BusinessObjectMapStore.java index 3a7c7e706..32b4b047a 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/BusinessObjectMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/BusinessObjectMapStore.java @@ -27,8 +27,8 @@ public abstract class BusinessObjectMapStore extends O } protected void fillBusinessObjectFields(BusinessObject businessObject, ResultSet rs, String idName) throws SQLException { - businessObject.setUpdated(getInstantFromTimestamp(rs, "updated")); - businessObject.setCreated(getInstantFromTimestamp(rs, "created")); + businessObject.setUpdated(getInstantFromTimestamp(rs, "updated_at")); + businessObject.setCreated(getInstantFromTimestamp(rs, "created_at")); businessObject.setId(getLong(rs, idName)); } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/CompanyMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/CompanyMapStore.java index ee93d4b49..c16c1a2d0 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/CompanyMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/CompanyMapStore.java @@ -14,6 +14,9 @@ import java.util.*; @Component public class CompanyMapStore extends BusinessObjectMapStore { + protected final String insertStatement = makeInsertSql(getTableName(), getFields(), "id"); + protected final String insertCompanyInfoStatement = makeInsertSql("COMPANY_INFO", getFieldsForCompanyInfo(), "id"); + public CompanyMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } @@ -38,9 +41,6 @@ public class CompanyMapStore extends BusinessObjectMapStore { }; } - protected final String insertStatement = makeInsertSql(getTableName(), getFields(), "id"); - protected final String insertCompanyInfoStatement = makeInsertSql("COMPANY_INFO", getFieldsForCompanyInfo(), "id"); - @Override public Collection load(Collection keys) { Map> paramMap = Collections.singletonMap("ids", keys); @@ -101,18 +101,18 @@ public class CompanyMapStore extends BusinessObjectMapStore { (rs, rowNum) -> { CompanyInfo companyInfo = new CompanyInfo(); companyInfo.setId(rs.getObject("Id", Long.class)); - companyInfo.setCompanyId(rs.getObject("CompanyId", Long.class)); - companyInfo.setCorporationSoleType(rs.getString("CorporationSoleType")); - companyInfo.setCountryCode(rs.getString("CountryCode")); - companyInfo.setDescription(rs.getString("Description")); - companyInfo.setProfessionalSign(rs.getString("ProfessionalSign")); - companyInfo.setLegalKind(rs.getString("LegalKind")); - companyInfo.setOrganizationType(rs.getString("OrganizationType")); - companyInfo.setResidence(rs.getString("Residence")); - companyInfo.setShortName(rs.getString("ShortName")); - companyInfo.setFullName(rs.getString("FullName")); - companyInfo.setShortNameEng(rs.getString("ShortNameEng")); - companyInfo.setFullNameEng(rs.getString("FullNameEng")); + companyInfo.setCompanyId(rs.getObject("COMPANY_ID", Long.class)); + companyInfo.setCorporationSoleType(rs.getString("CORPORATION_SOLE_TYPE")); + companyInfo.setCountryCode(rs.getString("COUNTRY_CODE")); + companyInfo.setDescription(rs.getString("DESCRIPTION")); + companyInfo.setProfessionalSign(rs.getString("PROFESSIONAL_SIGN")); + companyInfo.setLegalKind(rs.getString("LEGAL_KIND")); + companyInfo.setOrganizationType(rs.getString("ORGANIZATION_TYPE")); + companyInfo.setResidence(rs.getString("RESIDENCE")); + companyInfo.setShortName(rs.getString("SHORT_NAME")); + companyInfo.setFullName(rs.getString("FULL_NAME")); + companyInfo.setShortNameEng(rs.getString("SHORT_NAME_ENG")); + companyInfo.setFullNameEng(rs.getString("FULL_NAME_ENG")); companyInfo.setTradingCode(rs.getObject("TRADING_CODE", String.class)); companyInfo.setClearingCode(rs.getObject("CLEARING_CODE", String.class)); companyInfo.setRegistrationCode(rs.getObject("REGISTRATION_CODE", String.class)); From 4d50b53d5bfc1f744c2e93e0e7e4ee8b6a6ab20b Mon Sep 17 00:00:00 2001 From: psemenkov Date: Mon, 3 Oct 2022 13:17:14 +0300 Subject: [PATCH 13/14] fixing bug with MapIndexConfig for CompanyMapStore --- .../main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a4aedfc07..bcd1f09d9 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 @@ -217,7 +217,7 @@ public class PoolMapConfigs { public MapConfig map_Company() { return makeDefaultMapConfig(IMDGDistributedNames.Map_Company, companyMapStore) - .addMapIndexConfig(makeMapIndexConfig("companyId")); + .addMapIndexConfig(makeMapIndexConfig("Id")); } // @Autowired From b34f22439b853b2ae0bbd98b3199de24a815ec78 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Fri, 30 Sep 2022 13:51:25 +0300 Subject: [PATCH 14/14] some refactoring --- .../java/ru/spcex/clearing/imdg/IMDGApplication.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java index cb7c276d5..18f22bce6 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/IMDGApplication.java @@ -22,10 +22,13 @@ import java.util.List; public class IMDGApplication { public static void main(String[] args) { - try { - SpringApplicationBuilder builder = new SpringApplicationBuilder(IMDGApplication.class); - ConfigurableApplicationContext configurableApplicationContext = builder.run(args); + SpringApplicationBuilder builder = new SpringApplicationBuilder(IMDGApplication.class); + ConfigurableApplicationContext configurableApplicationContext = builder.run(args); + tmpLogUncompletedMapStores(configurableApplicationContext); + } + public static void tmpLogUncompletedMapStores(ConfigurableApplicationContext configurableApplicationContext) { + try { //Поиск таблиц которым нужно добавить mapStore и вывод результата в консоль List nameTables = new ArrayList<>(); Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://10.200.200.133:5432/postgres", "clearing", "Aa111111"); @@ -60,7 +63,8 @@ public class IMDGApplication { System.out.println("** Результата поиска таблиц которым нужно добавить mapStore **"); nameTables.forEach(System.out::println); System.out.println("**************************************************************"); - } catch (Throwable e) { + } catch ( + Throwable e) { LoggerFactory.getLogger(IMDGApplication.class).error("STORAGE start failed: {} -> {}", e.getClass().getSimpleName(), e.getMessage()); System.exit(-1); }