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() { + } }