akulikov 2023-08-23 17:40:39 +03:00
parent f253caf3d2
commit d1082874cb
4 changed files with 60 additions and 21 deletions

View file

@ -9,43 +9,47 @@ import java.math.BigDecimal;
import java.time.LocalDate;
public class KSCommissionTradesReport {
@CsvBindByName(column = "FIRMID")
@CsvBindByName(column = "FIRM_ID")
@CsvBindByPosition(position = 0)
private String firmId;
@CsvBindByName(column = "FIRM_INITIATOR")
@CsvBindByName(column = "FIRM_ID_INITIATOR")
@CsvBindByPosition(position = 1)
private String firmInitiator;
private String firmIdInitiator;
@CsvBindByName(column = "SECCODE")
@CsvBindByPosition(position = 2)
private String secCode;
@CsvBindByName(column = "AGREEMENT_NUMBER")
@CsvBindByName(column = "CLASS_CODE")
@CsvBindByPosition(position = 3)
private String classCode;
@CsvBindByName(column = "AGREEMENT_NUMBER")
@CsvBindByPosition(position = 4)
private String agreementNumber;
@CsvBindByName(column = "AGREEMENT_NUMBER_POSTFIX")
@CsvBindByPosition(position = 4)
@CsvBindByPosition(position = 5)
private String agreementNumberPostfix;
@CsvBindByName(column = "AGREEMENT_DATE")
@CsvBindByPosition(position = 5)
@CsvBindByPosition(position = 6)
@CsvDate(value = "dd.MM.yyyy")
private LocalDate agreementDate;
@CsvBindByName(column = "SUM")
@CsvBindByPosition(position = 6)
@CsvBindByPosition(position = 7)
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
private BigDecimal sum;
@CsvBindByName(column = "REPAYM_DATE")
@CsvBindByPosition(position = 7)
@CsvBindByPosition(position = 8)
@CsvDate(value = "dd.MM.yyyy")
private LocalDate repaymDate;
@CsvBindByName(column = "EXEC_STATUS")
@CsvBindByPosition(position = 8)
@CsvBindByPosition(position = 9)
private String execStatus;
@ -57,12 +61,12 @@ public class KSCommissionTradesReport {
this.firmId = firmId;
}
public String getFirmInitiator() {
return firmInitiator;
public String getFirmIdInitiator() {
return firmIdInitiator;
}
public void setFirmInitiator(String firmInitiator) {
this.firmInitiator = firmInitiator;
public void setFirmIdInitiator(String firmIdInitiator) {
this.firmIdInitiator = firmIdInitiator;
}
public String getSecCode() {
@ -120,4 +124,12 @@ public class KSCommissionTradesReport {
public void setExecStatus(String execStatus) {
this.execStatus = execStatus;
}
public String getClassCode() {
return classCode;
}
public void setClassCode(String classCode) {
this.classCode = classCode;
}
}

View file

@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.reports.ks;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.misc.STrades;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
@ -29,6 +30,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
private final Imdg<Registry> registryImdg;
private final Imdg<Company> companyImdg;
private final Imdg<CompanySymbols> companySymbolsImdg;
private final Imdg<STrades> sTradesImdg;
private List<KSCommissionTradesReport> rows = null;
@ -36,6 +38,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
}
@Override
@ -122,8 +125,8 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
continue;
}
String extracted = extractPartAgreementNumber(String.valueOf(omtRegistry.getGroupId()));
if (extracted == null) {
String tradeNum = extractPartAgreementNumber(String.valueOf(omtRegistry.getGroupId()));
if (tradeNum == null) {
log.warn("Can't extract ExchangeExecutionId from GroupId (groupId = {} for OM_T registry id = {}). " +
"Registry id = {} skipped",
omtRegistry.getGroupId(),
@ -135,13 +138,28 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder<EmptyParam
registry.getSecuritySymbol(),
dateFormatter_ddMMyy.format(registry.getClearingDate()),
registry.getClearingCode(),
extracted
tradeNum
);
pb = sTradesImdg.predicateBuilder();
Collection<STrades> sTradesList = sTradesImdg.getCollectionObjectsByPredicate(
pb.and(
pb.equals("tradeNum", tradeNum),
pb.notNull("classCode")
)
);
if (sTradesList.isEmpty()) {
log.warn("Not found STrades for registry (id = {}), tradeNum: {}. Registry skipped", registry.getId(), tradeNum);
continue;
}
if (sTradesList.size() > 1) log.warn("sTrades[tradeNum = {}].size > 1, use first", tradeNum);
STrades sTrades = sTradesList.iterator().next();
KSCommissionTradesReport ksCommissionTradesReport = new KSCommissionTradesReport();
ksCommissionTradesReport.setFirmId(registry.getClearingCode());
ksCommissionTradesReport.setFirmInitiator(companySymbols.getCompanySymbolValue());
ksCommissionTradesReport.setFirmIdInitiator(companySymbols.getCompanySymbolValue());
ksCommissionTradesReport.setSecCode(registry.getSecuritySymbol());
ksCommissionTradesReport.setClassCode(sTrades.getClassCode());
ksCommissionTradesReport.setAgreementNumber(agreementNumber);
ksCommissionTradesReport.setAgreementNumberPostfix("");
ksCommissionTradesReport.setAgreementDate(registry.getClearingDate());

View file

@ -20,6 +20,7 @@ import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
import ru.clearing.classes.statics.data.misc.Market;
import ru.clearing.classes.statics.data.misc.STrades;
import ru.clearing.classes.statics.data.misc.Session;
import ru.clearing.classes.statics.data.profile.ProfileDocument;
import ru.clearing.classes.statics.data.registry.Registry;
@ -87,6 +88,7 @@ public class ReportServiceTest_KS {
private Imdg<ProfileDocument> profileDocumentImdg;
private Imdg<EquitySecurity> equitySecurityImdg;
private Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
private Imdg<STrades> sTradesImdg;
private Long COMPANY_ID;
@Autowired
@ -655,9 +657,14 @@ public class ReportServiceTest_KS {
omtRegistry.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
omtRegistry.setRegistryUnit(RegistryUnit.T.getKey());
omtRegistry.setContract("CONTRACT");
omtRegistry.setGroupId(23071877700L);
omtRegistry.setGroupId(23071812300L);
registryImdg.insert(omtRegistry);
STrades sTrades = new STrades();
sTrades.setTradeNum(123L);
sTrades.setClassCode("CLASS_CODE");
sTradesImdg.insert(sTrades);
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
@ -674,7 +681,8 @@ public class ReportServiceTest_KS {
registryImdg.delete(registry);
registryImdg.delete(omtRegistry);
companySymbolsImdg.insert(companySymbols);
companySymbolsImdg.delete(companySymbols);
sTradesImdg.delete(sTrades);
}
@ -741,6 +749,7 @@ public class ReportServiceTest_KS {
statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
}
private void clearTestDir() throws IOException {

View file

@ -1,2 +1,2 @@
"FIRMID","FIRM_INITIATOR","SECCODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS"
"CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","SECURITY_SYMBOL/010191/CLEARING_CODE/777","","01.01.1991","77.78","01.08.2023","OK"
"FIRM_ID","FIRM_ID_INITIATOR","SECCODE","CLASS_CODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS"
"CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","CLASS_CODE","SECURITY_SYMBOL/010191/CLEARING_CODE/123","","01.01.1991","77.78","23.08.2023","OK"

1 FIRMID FIRM_ID FIRM_INITIATOR FIRM_ID_INITIATOR SECCODE CLASS_CODE AGREEMENT_NUMBER AGREEMENT_NUMBER_POSTFIX AGREEMENT_DATE SUM REPAYM_DATE EXEC_STATUS
2 CLEARING_CODE CLEARING_CODE COMPANY_SYMBOL_VALUE COMPANY_SYMBOL_VALUE SECURITY_SYMBOL CLASS_CODE SECURITY_SYMBOL/010191/CLEARING_CODE/777 SECURITY_SYMBOL/010191/CLEARING_CODE/123 01.01.1991 77.78 01.08.2023 23.08.2023 OK