This commit is contained in:
akulikov 2023-11-20 12:02:16 +03:00
parent 632bdf9e09
commit 085b0cf4ce
3 changed files with 40 additions and 11 deletions

View file

@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.builders.ks;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.account.AccountSymbols;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.execution.ExecutionCommon;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
@ -37,6 +38,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
private final Imdg<Company> companyImdg;
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
private final Imdg<Account> accountImdg;
private final Imdg<AccountSymbols> accountSymbolsImdg;
private List<KSRepTradesReport> rows = null;
@ -48,6 +50,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
accountSymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.class);
}
@Override
@ -168,12 +171,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
}
ksRepTradesReport.setAccount(account);
String depoAccount = "";
if (tkr.getDepoAccountId() != null) {
Account depoAccountFromImdg = accountImdg.getSingleObjectByID(tkr.getDepoAccountId());
if (depoAccountFromImdg != null) depoAccount = depoAccountFromImdg.getAccount();
}
ksRepTradesReport.setDepoAccount(depoAccount);
if (execution.getCompanyId() != null) {
Company company = companyImdg.getSingleObjectByID(execution.getCompanyId());
@ -192,6 +190,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
continue;
}
String depoAccount = "";
String agreementNumber = "";
if (execution instanceof ExecutionDeposit executionDeposit) {
agreementNumber = executionDeposit.getContract();
@ -212,6 +211,18 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
ksRepTradesReport.setDepoLiability(BigDecimal.ZERO);
} else if (execution instanceof ExecutionFond executionFond) {
if (tkr.getDepoAccountId() != null) {
AccountSymbols accountSymbols = accountSymbolsImdg.getFirstObjectByFieldValues(Map.of(
"accountId", tkr.getDepoAccountId()
));
if (accountSymbols != null) {
depoAccount = accountSymbols.getAccountSymbolValue();
} else {
Account depoAccountFromImdg = accountImdg.getSingleObjectByID(tkr.getDepoAccountId());
if (depoAccountFromImdg != null) depoAccount = depoAccountFromImdg.getAccount();
}
}
Company company = null;
BigDecimal settlementAmount = executionFond.getSettlementAmount() != null ? executionFond.getSettlementAmount() : BigDecimal.ZERO;
if (Arrays.asList(Side.BUY.getKey(), "B","BUY").contains(executionFond.getSide())) {
@ -249,6 +260,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
quantity = quantity.negate();
ksRepTradesReport.setDepoLiability(quantity);
}
ksRepTradesReport.setDepoAccount(depoAccount);
ksRepTradesReport.setAgreementNumber(agreementNumber);
ksRepTradesReport.setTradeNum(execution.getExchangeExecutionId());

View file

@ -586,8 +586,23 @@ public class ReportServiceTest_KS {
TradingClearingRegistry tradingClearingRegistry = new TradingClearingRegistry();
tradingClearingRegistry.setCode("TKR");
tradingClearingRegistry.setDepoAccountId(777L);
Long tkrId = tradingClearingRegistryImdg.insert(tradingClearingRegistry);
Account account = new Account();
account.setAccount("ACCOUNT");
Long accountId = accountImdg.insert(account);
TradingClearingRegistry tradingClearingRegistry_1 = new TradingClearingRegistry();
tradingClearingRegistry_1.setCode("TKR");
tradingClearingRegistry_1.setDepoAccountId(accountId);
Long tkrId_1 = tradingClearingRegistryImdg.insert(tradingClearingRegistry_1);
AccountSymbols accountSymbols = new AccountSymbols();
accountSymbols.setAccountId(777L);
accountSymbols.setAccountSymbolValue("ACC_SYMBOL_VALUE");
accountSymbolsImdg.insert(accountSymbols);
Session session_1 = new Session();
session_1.setCreated(Instant.ofEpochMilli(LocalDateTime.of(2023, 6, 30, 0, 0, 0).toEpochSecond(ZoneOffset.UTC)));
Long sessionId_1 = sessionImdg.insert(session_1);
@ -604,7 +619,7 @@ public class ReportServiceTest_KS {
executionFond_2.setTradingDate(LocalDate.now());
executionFond_2.setSide(MoneyFlowSide.BUY.getKey());
executionFond_2.setSessionId(sessionId_1);
executionFond_2.setTradingClearingRegistryId(tkrId);
executionFond_2.setTradingClearingRegistryId(tkrId_1);
executionFond_2.setSettlementAmount(BigDecimal.valueOf(8888.888888));
executionFond_2.setQuantity(BigDecimal.valueOf(123.456789));
executionFond_2.setExchangeExecutionId(222L);
@ -707,6 +722,8 @@ public class ReportServiceTest_KS {
registryImdg.delete(registry);
registryImdg.delete(registry_2);
tradingClearingRegistryImdg.delete(tradingClearingRegistry);
accountSymbolsImdg.delete(accountSymbols);
accountImdg.delete(account);
}
@Test

View file

@ -1,5 +1,5 @@
"SESSION_ID","SESSION_DATE","TR_ID","AGREEMENT_NUMBER","FIRM_ID","TKR","ACCOUNT","DEPO_ACCOUNT","CASH_LIABILITY","DEPO_LIABILITY","TRADE_NUM","CLASS_CODE","TRADE_DATE","STATUS"
"4","20.01.1970T07:09:07","222","CONTRACT","TRADING_CODE","TKR","","","8888.89","0","222","3333","20.01.1970T02:49:58","2"
"3","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","","-8888.89","123","222","3333","20.01.1970T02:49:58","1"
"3","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","","-8888.89","123","222","3333","20.01.1970T02:49:58","2"
"3","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","","8888.89","-123","222","3333","20.01.1970T02:49:58","2"
"7","20.01.1970T07:09:07","222","CONTRACT","TRADING_CODE","TKR","","","8888.89","0","222","3333","20.01.1970T02:49:58","2"
"6","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","ACCOUNT","-8888.89","123","222","3333","20.01.1970T02:49:58","1"
"6","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","ACC_SYMBOL_VALUE","8888.89","-123","222","3333","20.01.1970T02:49:58","2"
"6","20.01.1970T15:54:43","222","","TRADING_CODE","TKR","","ACC_SYMBOL_VALUE","-8888.89","123","222","3333","20.01.1970T02:49:58","2"

1 SESSION_ID SESSION_DATE TR_ID AGREEMENT_NUMBER FIRM_ID TKR ACCOUNT DEPO_ACCOUNT CASH_LIABILITY DEPO_LIABILITY TRADE_NUM CLASS_CODE TRADE_DATE STATUS
2 4 7 20.01.1970T07:09:07 222 CONTRACT TRADING_CODE TKR 8888.89 0 222 3333 20.01.1970T02:49:58 2
3 3 6 20.01.1970T15:54:43 222 TRADING_CODE TKR ACCOUNT -8888.89 123 222 3333 20.01.1970T02:49:58 1
4 3 6 20.01.1970T15:54:43 222 TRADING_CODE TKR ACC_SYMBOL_VALUE -8888.89 8888.89 123 -123 222 3333 20.01.1970T02:49:58 2
5 3 6 20.01.1970T15:54:43 222 TRADING_CODE TKR ACC_SYMBOL_VALUE 8888.89 -8888.89 -123 123 222 3333 20.01.1970T02:49:58 2