This commit is contained in:
parent
cd488b19d8
commit
0dd5cec12e
6 changed files with 150 additions and 11 deletions
|
|
@ -7,6 +7,7 @@ import com.opencsv.bean.CsvNumber;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public class KSCommissionTradesReport {
|
||||
@CsvBindByName(column = "FIRM_ID")
|
||||
|
|
@ -73,6 +74,19 @@ public class KSCommissionTradesReport {
|
|||
@CsvBindByPosition(position = 14)
|
||||
private Long sessionId;
|
||||
|
||||
@CsvBindByName(column = "SESSION_DATE")
|
||||
@CsvBindByPosition(position = 15)
|
||||
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
|
||||
private LocalDateTime sessionDate;
|
||||
|
||||
@CsvBindByName(column = "TKR_INITIATOR")
|
||||
@CsvBindByPosition(position = 16)
|
||||
private String tkrInitiator;
|
||||
|
||||
@CsvBindByName(column = "ACCOUNT_INITIATOR")
|
||||
@CsvBindByPosition(position = 17)
|
||||
private String accountInitiator;
|
||||
|
||||
|
||||
public String getFirmId() {
|
||||
return firmId;
|
||||
|
|
@ -193,4 +207,28 @@ public class KSCommissionTradesReport {
|
|||
public void setSessionId(Long sessionId) {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
|
||||
public LocalDateTime getSessionDate() {
|
||||
return sessionDate;
|
||||
}
|
||||
|
||||
public void setSessionDate(LocalDateTime sessionDate) {
|
||||
this.sessionDate = sessionDate;
|
||||
}
|
||||
|
||||
public String getTkrInitiator() {
|
||||
return tkrInitiator;
|
||||
}
|
||||
|
||||
public void setTkrInitiator(String tkrInitiator) {
|
||||
this.tkrInitiator = tkrInitiator;
|
||||
}
|
||||
|
||||
public String getAccountInitiator() {
|
||||
return accountInitiator;
|
||||
}
|
||||
|
||||
public void setAccountInitiator(String accountInitiator) {
|
||||
this.accountInitiator = accountInitiator;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import org.springframework.stereotype.Component;
|
|||
import ru.clearing.classes.statics.data.account.Account;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
||||
|
|
@ -18,6 +19,7 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
|||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
|
@ -32,6 +34,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<ExecutionDeposit> executionDepositImdg;
|
||||
private final Imdg<Account> accountImdg;
|
||||
private final Imdg<Session> sessionImdg;
|
||||
|
||||
private List<KSCommissionTradesReport> rows = null;
|
||||
|
||||
|
|
@ -40,6 +43,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class);
|
||||
accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
||||
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -173,6 +177,34 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
account = accountFromImdg.getAccount();
|
||||
}
|
||||
|
||||
Session session = sessionImdg.getSingleObjectByID(registry.getSessionId());
|
||||
LocalDateTime sessionDate = null;
|
||||
if (session != null) sessionDate = LocalDateTime.ofInstant(session.getCreated(), getReportZoneId());
|
||||
|
||||
String tkrInitiator = null;
|
||||
String accountInitiator = null;
|
||||
ImdgPredicate tmtPredicate = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.TM_T).buildPredicate(pb);
|
||||
Registry tmtRegistry = registryImdg.getFirstObjectByPredicate(
|
||||
pb.and(
|
||||
pb.equals("counterPartyId", registry.getCompanyId()),
|
||||
pb.equals("groupId", registry.getGroupId()),
|
||||
tmtPredicate
|
||||
)
|
||||
);
|
||||
if (tmtRegistry != null) {
|
||||
tkrInitiator = tmtRegistry.getTradingClearingRegistry();
|
||||
accountType = IEnumKey.getEnumByKey(AccountType.class, tmtRegistry.getAccountType());
|
||||
if (accountType == AccountType.Clrn) {
|
||||
accountInitiator = tmtRegistry.getAccount();
|
||||
} else if (accountType == AccountType.Info) {
|
||||
Account accountFromImdg = accountImdg.getFirstObjectByFieldValues(Map.of(
|
||||
"accountType", AccountType.Anlt.getKey(),
|
||||
"companyId", 1L
|
||||
));
|
||||
accountInitiator = accountFromImdg.getAccount();
|
||||
}
|
||||
}
|
||||
|
||||
KSCommissionTradesReport ksCommissionTradesReport = new KSCommissionTradesReport();
|
||||
ksCommissionTradesReport.setFirmId(firmId);
|
||||
ksCommissionTradesReport.setFirmIdInitiator(firmIdInitiator);
|
||||
|
|
@ -192,6 +224,9 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
ksCommissionTradesReport.setTkr(registry.getTradingClearingRegistry());
|
||||
ksCommissionTradesReport.setAccount(account);
|
||||
ksCommissionTradesReport.setSessionId(registry.getSessionId());
|
||||
ksCommissionTradesReport.setSessionDate(sessionDate);
|
||||
ksCommissionTradesReport.setTkrInitiator(tkrInitiator);
|
||||
ksCommissionTradesReport.setAccountInitiator(accountInitiator);
|
||||
|
||||
rows.add(ksCommissionTradesReport);
|
||||
} catch (Throwable e) {
|
||||
|
|
|
|||
|
|
@ -22,10 +22,7 @@ import java.math.BigDecimal;
|
|||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
@Component
|
||||
public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegistersReport> {
|
||||
|
|
@ -153,9 +150,28 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
|
|||
pb.equals("registryStatus", RegistryStatus.CLRD.getKey())
|
||||
)
|
||||
);
|
||||
BigDecimal cmtBalanceSum = cmtRegistries.stream().map(Registry::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
Set<String> contracts = new HashSet<>();
|
||||
BigDecimal cmtBalanceSum = BigDecimal.ZERO;
|
||||
for (Registry cmtRegistry : cmtRegistries) {
|
||||
BigDecimal balance = cmtRegistry.getBalance();
|
||||
cmtBalanceSum = cmtBalanceSum.add(balance);
|
||||
contracts.add(cmtRegistry.getContract());
|
||||
}
|
||||
ImdgPredicate dmxPredicate = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.DM_X).buildPredicate(pb);
|
||||
Collection<Registry> dmxRegistries = registryImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
dmxPredicate,
|
||||
pb.in("sessionId", sessionIds),
|
||||
pb.in("contract", contracts.toArray(new String[0])),
|
||||
pb.equals("tradingCode", registry.getTradingCode()),
|
||||
pb.equals("companyId", registry.getCompanyId()),
|
||||
pb.equals("account", registry.getAccount()),
|
||||
pb.equals("registryStatus", RegistryStatus.OK.getKey())
|
||||
)
|
||||
);
|
||||
BigDecimal dmxBalanceSum = dmxRegistries.stream().map(Registry::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal lmtBalanceSum = lmtRegistries.stream().map(Registry::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
ksRepCashRegistersReport.setChangeBalance(cmtBalanceSum.subtract(lmtBalanceSum));
|
||||
ksRepCashRegistersReport.setChangeBalance(cmtBalanceSum.subtract(lmtBalanceSum).subtract(dmxBalanceSum));
|
||||
|
||||
|
||||
registryPredicate = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.DM_I).buildPredicate(pb);
|
||||
|
|
|
|||
|
|
@ -192,6 +192,7 @@ public class ReportServiceTest_KS {
|
|||
cmtRegistry_1.setAccount("ACCOUNT");
|
||||
cmtRegistry_1.setRegistryStatus(RegistryStatus.CLRD.getKey());
|
||||
cmtRegistry_1.setBalance(BigDecimal.valueOf(111L));
|
||||
cmtRegistry_1.setContract("CONTRACT_1");
|
||||
registryImdg.insert(cmtRegistry_1);
|
||||
|
||||
Registry cmtRegistry_2 = new Registry();
|
||||
|
|
@ -205,6 +206,7 @@ public class ReportServiceTest_KS {
|
|||
cmtRegistry_2.setAccount("ACCOUNT");
|
||||
cmtRegistry_2.setRegistryStatus(RegistryStatus.CLRD.getKey());
|
||||
cmtRegistry_2.setBalance(BigDecimal.valueOf(111L));
|
||||
cmtRegistry_2.setContract("CONTRACT_2");
|
||||
registryImdg.insert(cmtRegistry_2);
|
||||
|
||||
Registry cmtRegistry_3 = new Registry();
|
||||
|
|
@ -259,6 +261,34 @@ public class ReportServiceTest_KS {
|
|||
lmtRegistry_3.setBalance(BigDecimal.valueOf(11L));
|
||||
registryImdg.insert(lmtRegistry_3);
|
||||
|
||||
Registry dmxRegistry_1 = new Registry();
|
||||
dmxRegistry_1.setRegistryCode("DM_X");
|
||||
dmxRegistry_1.setRegistryDesignation(RegistryDesignation.D.getKey());
|
||||
dmxRegistry_1.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
|
||||
dmxRegistry_1.setRegistryUnit(RegistryUnit.X.getKey());
|
||||
dmxRegistry_1.setSessionId(SESSION_ID_FOR_DAY);
|
||||
dmxRegistry_1.setTradingCode("TRADING_CODE");
|
||||
dmxRegistry_1.setCompanyId(COMPANY_ID);
|
||||
dmxRegistry_1.setAccount("ACCOUNT");
|
||||
dmxRegistry_1.setContract("CONTRACT_1");
|
||||
dmxRegistry_1.setRegistryStatus(RegistryStatus.OK.getKey());
|
||||
dmxRegistry_1.setBalance(BigDecimal.valueOf(11L));
|
||||
registryImdg.insert(dmxRegistry_1);
|
||||
|
||||
Registry dmxRegistry_2 = new Registry();
|
||||
dmxRegistry_2.setRegistryCode("DM_X");
|
||||
dmxRegistry_2.setRegistryDesignation(RegistryDesignation.D.getKey());
|
||||
dmxRegistry_2.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
|
||||
dmxRegistry_2.setRegistryUnit(RegistryUnit.X.getKey());
|
||||
dmxRegistry_2.setSessionId(SESSION_ID_FOR_DAY);
|
||||
dmxRegistry_2.setTradingCode("TRADING_CODE");
|
||||
dmxRegistry_2.setCompanyId(COMPANY_ID);
|
||||
dmxRegistry_2.setAccount("ACCOUNT");
|
||||
dmxRegistry_2.setContract("CONTRACT_2");
|
||||
dmxRegistry_2.setRegistryStatus(RegistryStatus.OK.getKey());
|
||||
dmxRegistry_2.setBalance(BigDecimal.valueOf(11L));
|
||||
registryImdg.insert(dmxRegistry_2);
|
||||
|
||||
|
||||
Registry addWithdrawRegistry_1 = new Registry();
|
||||
addWithdrawRegistry_1.setCompanyId(COMPANY_ID);
|
||||
|
|
@ -325,6 +355,8 @@ public class ReportServiceTest_KS {
|
|||
registryImdg.delete(lmtRegistry_1);
|
||||
registryImdg.delete(lmtRegistry_2);
|
||||
registryImdg.delete(lmtRegistry_3);
|
||||
registryImdg.delete(dmxRegistry_1);
|
||||
registryImdg.delete(dmxRegistry_2);
|
||||
sessionImdg.delete(sessionForDay);
|
||||
accountImdg.delete(account);
|
||||
}
|
||||
|
|
@ -1031,6 +1063,10 @@ public class ReportServiceTest_KS {
|
|||
companySymbols.setCompanySymbolValue("COMPANY_SYMBOL_VALUE");
|
||||
companySymbolsImdg.insert(companySymbols);
|
||||
|
||||
Session session = new Session();
|
||||
session.setCreated(LocalDateTime.of(2000, 1, 1, 0, 0).toInstant(ZoneOffset.UTC));
|
||||
Long sessionId = sessionImdg.insert(session);
|
||||
|
||||
Registry registry = new Registry();
|
||||
registry.setRegistryStatus(RegistryStatus.CLRD.getKey());
|
||||
registry.setCompanyId(COMPANY_ID);
|
||||
|
|
@ -1053,7 +1089,7 @@ public class ReportServiceTest_KS {
|
|||
registry.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY");
|
||||
registry.setAccountType(AccountType.Clrn.getKey());
|
||||
registry.setAccount("ACCOUNT");
|
||||
registry.setSessionId(1L);
|
||||
registry.setSessionId(sessionId);
|
||||
registryImdg.insert(registry);
|
||||
|
||||
Registry omtRegistry = new Registry();
|
||||
|
|
@ -1065,6 +1101,18 @@ public class ReportServiceTest_KS {
|
|||
omtRegistry.setGroupId(23071812300L);
|
||||
registryImdg.insert(omtRegistry);
|
||||
|
||||
Registry tmtRegistry = new Registry();
|
||||
tmtRegistry.setRegistryCode("TM_T");
|
||||
tmtRegistry.setAccount("TMT_ACCOUNT");
|
||||
tmtRegistry.setAccountType(AccountType.Clrn.getKey());
|
||||
tmtRegistry.setRegistryDesignation(RegistryDesignation.T.getKey());
|
||||
tmtRegistry.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
|
||||
tmtRegistry.setRegistryUnit(RegistryUnit.T.getKey());
|
||||
tmtRegistry.setCounterPartyId(COMPANY_ID);
|
||||
tmtRegistry.setTradingClearingRegistry("TKR_TMT");
|
||||
tmtRegistry.setGroupId(23071812300L);
|
||||
registryImdg.insert(tmtRegistry);
|
||||
|
||||
ExecutionDeposit executionDeposit = new ExecutionDeposit();
|
||||
executionDeposit.setExchangeExecutionId(registry.getGroupId());
|
||||
executionDeposit.setMarket("market");
|
||||
|
|
@ -1086,6 +1134,8 @@ public class ReportServiceTest_KS {
|
|||
|
||||
registryImdg.delete(registry);
|
||||
registryImdg.delete(omtRegistry);
|
||||
registryImdg.delete(tmtRegistry);
|
||||
sessionImdg.delete(session);
|
||||
companySymbolsImdg.delete(companySymbols);
|
||||
executionDepositImdg.delete(executionDeposit);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
"FIRM_ID","FIRM_ID_INITIATOR","SECCODE","CLASS_CODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","AGREEMENT_SETTLEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS","TR_ID","TKR","ACCOUNT","SESSION_ID"
|
||||
"CLEARING_CODE","TRADING_CODE","CONT~RACT","market","CONT","CONT~RACT","01.01.1991","14.11.2023","-77.78","24.11.2023","Исполнен","23071812300","TRADING_CLEARING_REGISTRY","ACCOUNT","1"
|
||||
"FIRM_ID","FIRM_ID_INITIATOR","SECCODE","CLASS_CODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","AGREEMENT_SETTLEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS","TR_ID","TKR","ACCOUNT","SESSION_ID","SESSION_DATE","TKR_INITIATOR","ACCOUNT_INITIATOR"
|
||||
"CLEARING_CODE","TRADING_CODE","CONT~RACT","market","CONT","CONT~RACT","01.01.1991","28.11.2023","-77.78","08.12.2023","Исполнен","23071812300","TRADING_CLEARING_REGISTRY","ACCOUNT","3","01.01.2000T03:00:00","TKR_TMT","TMT_ACCOUNT"
|
||||
|
|
|
|||
|
|
|
@ -1,3 +1,3 @@
|
|||
"FIRMID","ACCOUNT","TKR","DATE","REGISTER_CODE","REGISTER_NAME","OPEN_BALANCE","CHANGE_BALANCE","ADD_WITHDRAW","CLOSE_BALANCE","REMARKS","TRADE_NUM"
|
||||
"TRADING_CODE","ACCOUNT_FROM_ACCOUNT","TRADING_CLEARING_REGISTRY","01.11.2023","AM_T","AM_T_NAME","77.78","300.00","111.00","488.78","",""
|
||||
"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.11.2023","AM_T","AM_T_NAME","77.78","300.00","111.00","488.78","",""
|
||||
"TRADING_CODE","ACCOUNT_FROM_ACCOUNT","TRADING_CLEARING_REGISTRY","01.11.2023","AM_T","AM_T_NAME","77.78",278.00,"111.00","466.78","",""
|
||||
"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.11.2023","AM_T","AM_T_NAME","77.78",278.00,"111.00",466.78,"",""
|
||||
|
|
|
|||
|
Loading…
Add table
Reference in a new issue