akulikov 2023-09-25 12:04:39 +03:00
parent be311962cb
commit f595f0f251
9 changed files with 40 additions and 19 deletions

View file

@ -24,7 +24,6 @@ public class ReportBuildersConfig {
KSRepDepoRegistersReportBuilder ksRepDepoRegistersReportBuilder,
KSRepDepoRegisterQuantitiesReportBuilder ksRepDepoRegisterQuantitiesReportBuilder,
KSRepTradesReportBuilder ksRepTradesReportBuilder,
KSRepFirmDetailsReportBuilder ksRepFirmDetailsReportBuilder,
KSSessionListReportBuilder ksSessionListReportBuilder,
KSCommissionTradesReportBuilder ksCommissionTradesReportBuilder
) {
@ -34,7 +33,6 @@ public class ReportBuildersConfig {
resultMap.put(ReportBuilderType.KS_REP_DEPO_REGISTERS, List.of(ksRepDepoRegistersReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_DEPO_REGISTER_QUANTITIES, List.of(ksRepDepoRegisterQuantitiesReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_TRADES, List.of(ksRepTradesReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_FIRM_DETAILS, List.of(ksRepFirmDetailsReportBuilder));
resultMap.put(ReportBuilderType.KS_SESSION_LIST, List.of(ksSessionListReportBuilder));
resultMap.put(ReportBuilderType.KS_COMMISSION_TRADES, List.of(ksCommissionTradesReportBuilder));
return resultMap;
@ -72,7 +70,6 @@ public class ReportBuildersConfig {
KSRepDepoRegistersReportBuilder ksRepDepoRegistersReportBuilder,
KSRepDepoRegisterQuantitiesReportBuilder ksRepDepoRegisterQuantitiesReportBuilder,
KSRepTradesReportBuilder ksRepTradesReportBuilder,
KSRepFirmDetailsReportBuilder ksRepFirmDetailsReportBuilder,
KSRepCashNettoReportBuilder ksRepCashNettoReportBuilder,
KSRepDepoNettoReportBuilder ksRepDepoNettoReportBuilder,
KSSessionListReportBuilder ksSessionListReportBuilder,
@ -84,7 +81,6 @@ public class ReportBuildersConfig {
resultMap.put(ReportBuilderType.KS_REP_DEPO_REGISTERS, List.of(ksRepDepoRegistersReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_DEPO_REGISTER_QUANTITIES, List.of(ksRepDepoRegisterQuantitiesReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_TRADES, List.of(ksRepTradesReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_FIRM_DETAILS, List.of(ksRepFirmDetailsReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_CASH_NETTO, List.of(ksRepCashNettoReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_DEPO_NETTO, List.of(ksRepDepoNettoReportBuilder));
resultMap.put(ReportBuilderType.KS_SESSION_LIST, List.of(ksSessionListReportBuilder));
@ -99,7 +95,6 @@ public class ReportBuildersConfig {
KSRepDepoRegistersReportBuilder ksRepDepoRegistersReportBuilder,
KSRepDepoRegisterQuantitiesReportBuilder ksRepDepoRegisterQuantitiesReportBuilder,
KSRepTradesReportBuilder ksRepTradesReportBuilder,
KSRepFirmDetailsReportBuilder ksRepFirmDetailsReportBuilder,
KSRepCashNettoReportBuilder ksRepCashNettoReportBuilder,
KSRepDepoNettoReportBuilder ksRepDepoNettoReportBuilder,
KSSessionListReportBuilder ksSessionListReportBuilder,
@ -111,7 +106,6 @@ public class ReportBuildersConfig {
resultMap.put(ReportBuilderType.KS_REP_DEPO_REGISTERS, List.of(ksRepDepoRegistersReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_DEPO_REGISTER_QUANTITIES, List.of(ksRepDepoRegisterQuantitiesReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_TRADES, List.of(ksRepTradesReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_FIRM_DETAILS, List.of(ksRepFirmDetailsReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_CASH_NETTO, List.of(ksRepCashNettoReportBuilder));
resultMap.put(ReportBuilderType.KS_REP_DEPO_NETTO, List.of(ksRepDepoNettoReportBuilder));
resultMap.put(ReportBuilderType.KS_SESSION_LIST, List.of(ksSessionListReportBuilder));

View file

@ -6,6 +6,7 @@ import com.opencsv.bean.CsvDate;
import java.time.LocalDate;
@Deprecated
public class KSRepFirmDetailsReport {
@CsvBindByName(column = "FIRMID")
@CsvBindByPosition(position = 0)

View file

@ -93,6 +93,12 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyPa
searchTCRAsInfo = true;
} else {
Account account = accountImdg.getSingleObjectByID(statement.getAccountId());
if (account == null) {
log.warn("Unexpected state: for statement (id = {}) not found account for accountId = {}. Statement was skipped",
statement.getId(),
statement.getAccountId());
continue;
}
searchTCRAsInfo = AccountType.Info.equalsByKey(account.getAccountType());
if (!searchTCRAsInfo && !AccountType.Clrn.equalsByKey(account.getAccountType())) {
log.warn("Unexpected account[{}] type {}", account.getId(), account.getAccountType());
@ -156,7 +162,7 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyPa
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
log.debug("For statement id = {}, company with id = {} not active",
statement.getId(), company.getId());
//continue;
continue;
}

View file

@ -17,6 +17,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
@Deprecated
@Component
public class KSRepFirmDetailsReportBuilder extends CSVReportBuilder<EmptyParams, KSRepFirmDetailsReport> {
private final Imdg<Company> companyImdg;

View file

@ -130,9 +130,12 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
if (execution instanceof ExecutionDeposit executionDeposit) {
BigDecimal firstLegAmount = executionDeposit.getFirstLegAmount() != null ? executionDeposit.getFirstLegAmount() : BigDecimal.ZERO;
if (Arrays.asList(Side.BUY.getKey(), "B","BUY").contains(executionDeposit.getSide())) {
String sideStr = executionDeposit.getSide();
Side side = IEnumKey.getEnumByKey(Side.class, sideStr);
MoneyFlowSide mfSide = IEnumKey.getEnumByKey(MoneyFlowSide.class, sideStr);
if (side == Side.BUY || mfSide == MoneyFlowSide.BUY) {
ksRepTradesReport.setCashLiability(firstLegAmount);
} else if (Arrays.asList(Side.SELL.getKey(), "S","SELL").contains((executionDeposit.getSide()))) {
} else if (side == Side.SELL || mfSide == MoneyFlowSide.SELL) {
firstLegAmount = firstLegAmount.negate();
ksRepTradesReport.setCashLiability(firstLegAmount);
} else {

View file

@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
@ -77,6 +78,7 @@ public class ReportServiceTest_KS {
private static int reportRequestWithSessionIdListCnt = 0;
private static int reportRequestWithPeriodCnt = 0;
private Imdg<Statement> statementImdg;
private Imdg<Account> accountImdg;
private Imdg<Registry> registryImdg;
private Imdg<Market> marketImdg;
private Imdg<Company> companyImdg;
@ -178,22 +180,30 @@ public class ReportServiceTest_KS {
registry_1.setRegistryDesignation("A");
registry_1.setRegistryInstrumentType("M");
registry_1.setRegistryUnit("T");
registry_1.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY");
registry_1.setTradingClearingRegistry("0008CAT00001");
registryImdg.insert(registry_1);
TradingClearingRegistry tkr = new TradingClearingRegistry();
tkr.setMoneyAccountId(777L);
tkr.setCode("0008CAT00001");
tkr.setCompanyId(COMPANY_ID);
tradingClearingRegistryImdg.insert(tkr);
Account account = new Account();
account.setAccountType(AccountType.Info.getKey());
account.setAccount("ACCOUNT");
Long accountId = accountImdg.insert(account);
Statement statement_1 = new Statement();
statement_1.setAddresseeId(COMPANY_ID);
statement_1.setAccount("ACCOUNT");
statement_1.setAccountId(777L);
statement_1.setAccountId(accountId);
statement_1.setInOutDirection(InOutDirection.in.getKey());
statement_1.setInOutSDfType(InOutSDfType.type57.getKey());
statement_1.setOperationStatus(OperationStatus.Executed.getKey());
statement_1.setAmount(BigDecimal.valueOf(7777.777777777));
statement_1.setCreated(Instant.now());
statement_1.setComment("Зачислить на ТКР 0008CAT00001");
statementImdg.insert(statement_1);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
@ -213,6 +223,7 @@ public class ReportServiceTest_KS {
registryImdg.delete(registry_1);
statementImdg.delete(statement_1);
tradingClearingRegistryImdg.delete(tkr);
accountImdg.delete(account);
}
@Test
@ -344,6 +355,7 @@ public class ReportServiceTest_KS {
executionFond.setMarket("3333");
executionFond.setCompanyId(COMPANY_ID);
executionFond.setTradingDate(LocalDate.now());
executionFond.setSide(MoneyFlowSide.SELL.getKey());
executionFond.setSessionId(sessionId_1);
executionFond.setTradingClearingRegistryId(tkrId);
executionFond.setSettlementAmount(BigDecimal.valueOf(8888.888888));
@ -372,6 +384,7 @@ public class ReportServiceTest_KS {
executionDeposit.setMarket("3333");
executionDeposit.setCompanyId(COMPANY_ID);
executionDeposit.setTradingDate(LocalDate.now());
executionDeposit.setSide(Side.BUY.getKey());
executionDeposit.setSessionId(sessionId_2);
executionDeposit.setTradingClearingRegistryId(tkrId);
executionDeposit.setFirstLegAmount(BigDecimal.valueOf(8888.888888));
@ -528,7 +541,7 @@ public class ReportServiceTest_KS {
sessionImdg.delete(session);
}
@Test
@Deprecated
@Order(8)
public void createReportTest_KSRepFirmDetailsReport() throws IOException, CsvValidationException {
clearTestDir();
@ -645,11 +658,11 @@ public class ReportServiceTest_KS {
companySymbolsImdg.insert(companySymbols);
Registry registry = new Registry();
registry.setRegistryStatus(RegistryStatus.OK.getKey());
registry.setRegistryStatus(RegistryStatus.CLRD.getKey());
registry.setCompanyId(COMPANY_ID);
registry.setRegistryCode("DM_T");
registry.setRegistryDesignation(RegistryDesignation.D.getKey());
registry.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
registry.setRegistryCode("TS_T");
registry.setRegistryDesignation(RegistryDesignation.T.getKey());
registry.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
registry.setRegistryUnit(RegistryUnit.T.getKey());
registry.setBalance(BigDecimal.valueOf(77.777777777));
registry.setSecuritySymbol("SECURITY_SYMBOL");
@ -660,6 +673,8 @@ public class ReportServiceTest_KS {
registry.setContract("CONT~RACT");
registry.setClearingCode("CLEARING_CODE");
registry.setGroupId(23071812300L);
registry.setSessionType(SessionType.XDEP.getKey());
registry.setValueDate(LocalDate.now().minusDays(10));
registryImdg.insert(registry);
Registry omtRegistry = new Registry();
@ -761,6 +776,7 @@ public class ReportServiceTest_KS {
equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
}
private void clearTestDir() throws IOException {

View file

@ -1,2 +1,2 @@
"FIRM_ID","FIRM_ID_INITIATOR","SECCODE","CLASS_CODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS"
"CLEARING_CODE","TRADING_CODE","SECURITY_SYMBOL","market","CONT","CONT~RACT","01.01.1991","77.78","05.09.2023","Исполнено"
"CLEARING_CODE","TRADING_CODE","CONT~RACT","market","CONT","CONT~RACT","01.01.1991","77.78","05.09.2023","Исполнено"

1 FIRM_ID FIRM_ID_INITIATOR SECCODE CLASS_CODE AGREEMENT_NUMBER AGREEMENT_NUMBER_POSTFIX AGREEMENT_DATE SUM REPAYM_DATE EXEC_STATUS
2 CLEARING_CODE TRADING_CODE SECURITY_SYMBOL CONT~RACT market CONT CONT~RACT 01.01.1991 77.78 05.09.2023 Исполнено

View file

@ -1,2 +1,2 @@
"FIRMID","ACCOUNT","TKR","REGISTER_CODE","ADD_SUM","ADD_TIME","ADD_DATE","TRADE_NUM"
"1","ACCOUNT","TRADING_CLEARING_REGISTRY","AM_T","7777.78","15:49:30","01.08.2023",""
"1","","0008CAT00001","AM_T","7777.78","15:49:30","01.08.2023",""

1 FIRMID ACCOUNT TKR REGISTER_CODE ADD_SUM ADD_TIME ADD_DATE TRADE_NUM
2 1 ACCOUNT TRADING_CLEARING_REGISTRY 0008CAT00001 AM_T 7777.78 15:49:30 01.08.2023

View file

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

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