Added AccountBalanceMapStore, refactoring AccountBalance

This commit is contained in:
psemenkov 2022-09-29 13:59:08 +03:00
parent 26c1fd84c7
commit 245e4d03b6
4 changed files with 280 additions and 40 deletions

View file

@ -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;
}
}

View file

@ -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);

View file

@ -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<AccountBalance> {
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;
}
}

View file

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