From d1082874cb47d8e44232752e0059948bac3cd514 Mon Sep 17 00:00:00 2001 From: akulikov Date: Wed, 23 Aug 2023 17:40:39 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-497 --- .../bean/KSCommissionTradesReport.java | 38 ++++++++++++------- .../ks/KSCommissionTradesReportBuilder.java | 26 +++++++++++-- .../services/ReportServiceTest_KS.java | 13 ++++++- .../ks/KS_COMMISSION_TRADES_expected.csv | 4 +- 4 files changed, 60 insertions(+), 21 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSCommissionTradesReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSCommissionTradesReport.java index 365b75ad8..d0b1baf87 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSCommissionTradesReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSCommissionTradesReport.java @@ -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; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java index 53ea7cef5..93f1d1469 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java @@ -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 registryImdg; private final Imdg companyImdg; private final Imdg companySymbolsImdg; + private final Imdg sTradesImdg; private List rows = null; @@ -36,6 +38,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder 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()); diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java index d98ba8124..03ca2e9ab 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java @@ -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 profileDocumentImdg; private Imdg equitySecurityImdg; private Imdg tradingClearingRegistryImdg; + private Imdg 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 { diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv index c0ab9cd30..d4ac2f633 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv @@ -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"