From 24eb6f944622a9af703e46473b1731b31aa98284 Mon Sep 17 00:00:00 2001 From: akulikov Date: Tue, 1 Aug 2023 16:06:47 +0300 Subject: [PATCH 1/5] http://jira.mfd.msk:8088/browse/CLS-358 some fixes --- .../reports/reports/CSVReportBuilder.java | 7 ++- .../reports/reports/PairRegistryId.java | 44 +++++++++--------- .../reports/bean/ExecutedDealReport.java | 6 +-- .../bean/KSCommissionTradesReport.java | 36 ++++++++++----- .../bean/KSRepCashRegisterSumsReport.java | 20 +++++++-- .../bean/KSRepCashRegistersReport.java | 28 ++++++++---- .../KSRepDepoRegisterQuantitiesReport.java | 22 ++++++--- .../bean/KSRepDepoRegistersReport.java | 30 +++++++++---- .../reports/bean/KSRepTradesReport.java | 6 +-- .../ExecutedDealReportBuilder_INFTYPE_4.java | 2 +- .../bp/UnfulfilledDealReportBuilder.java | 2 +- .../ks/KSCommissionTradesReportBuilder.java | 5 ++- .../ks/KSRepCashNettoReportBuilder.java | 41 ++++++++--------- .../KSRepCashRegisterSumsReportBuilder.java | 1 + .../ks/KSRepCashRegistersReportBuilder.java | 1 + .../ks/KSRepDepoNettoReportBuilder.java | 45 +++++++++---------- ...epDepoRegisterQuantitiesReportBuilder.java | 1 + .../ks/KSRepDepoRegistersReportBuilder.java | 18 ++++---- .../reports/ks/KSRepTradesReportBuilder.java | 14 +++++- .../reports/services/ReportService.java | 21 ++++++++- .../services/ReportServiceTest_BP.java | 8 ++-- .../services/ReportServiceTest_KS.java | 16 ++++++- .../bp/KS_BR_PFX64_INFTYPE_1_expected.csv | 2 +- .../bp/KS_BR_PFX64_INFTYPE_2_expected.csv | 2 +- .../bp/KS_BR_PFX64_INFTYPE_3_expected.csv | 2 +- .../bp/KS_BR_PFX64_INFTYPE_4_expected.csv | 2 +- .../bp/KS_BR_PFX65_DEALS_expected.csv | 2 + .../bp/unfulfilled_deal_report_expected.csv | 2 - .../ks/KS_COMMISSION_TRADES_expected.csv | 4 +- .../ks/KS_REP_CASH_REGISTERS_expected.csv | 4 +- .../ks/KS_REP_CASH_REGISTER_SUMS_expected.csv | 4 +- .../ks/KS_REP_DEPO_REGISTERS_expected.csv | 4 +- ..._REP_DEPO_REGISTER_QUANTITIES_expected.csv | 4 +- .../ks/KS_REP_TRADES_expected.csv | 4 +- .../platform/enumeration/ReportKeys.java | 1 - 35 files changed, 255 insertions(+), 156 deletions(-) create mode 100644 clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX65_DEALS_expected.csv delete mode 100644 clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/unfulfilled_deal_report_expected.csv diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java index 34b6b3c30..00dc1279f 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java @@ -161,12 +161,15 @@ public abstract class CSVReportBuilder { protected CsvConverter determineConverter(Field field, Class elementType, String locale, String writeLocale, Class customConverter) throws CsvBadConverterException { CsvConverter csvConverter = super.determineConverter(field, elementType, locale, writeLocale, customConverter); if (csvConverter instanceof ConverterNumber && field.getType() == BigDecimal.class) { + CsvNumber csvNumberAnnotation = field.getAnnotation(CsvNumber.class); + String formatValue = csvNumberAnnotation.value(); + String writeFormat = csvNumberAnnotation.writeFormat(); csvConverter = new ConverterNumber(BigDecimal.class, Locale.getDefault().toString(), Locale.getDefault().toString(), Locale.getDefault(), - "#0.00", - "#0.00"); + formatValue, + writeFormat); } return csvConverter; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/PairRegistryId.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/PairRegistryId.java index 6db22f3fa..3e490d324 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/PairRegistryId.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/PairRegistryId.java @@ -2,48 +2,50 @@ package ru.spcex.clearing.reports.reports; import ru.clearing.classes.statics.data.registry.Registry; -import java.time.LocalDate; import java.util.Objects; public class PairRegistryId { - private Long groupId; - private LocalDate settlementDate; + private String account; + private Long sessionId; public PairRegistryId() { } public PairRegistryId(Registry registry) { - this.groupId = registry.getGroupId(); - this.settlementDate = registry.getSettlementDate(); + this.account = registry.getAccount(); + this.sessionId = registry.getSessionId(); } - public Long getGroupId() { - return groupId; + public String getAccount() { + return account; } - public void setGroupId(Long groupId) { - this.groupId = groupId; + public void setAccount(String account) { + this.account = account; } - public LocalDate getSettlementDate() { - return settlementDate; + public Long getSessionId() { + return sessionId; } - public void setSettlementDate(LocalDate settlementDate) { - this.settlementDate = settlementDate; - } - - @Override - public int hashCode() { - return Objects.hash(groupId, settlementDate); + public void setSessionId(Long sessionId) { + this.sessionId = sessionId; } @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - PairRegistryId that = (PairRegistryId) o; - return Objects.equals(groupId, that.groupId) && Objects.equals(settlementDate, that.settlementDate); + if (!(o instanceof PairRegistryId that)) return false; + + if (!Objects.equals(account, that.account)) return false; + return Objects.equals(sessionId, that.sessionId); + } + + @Override + public int hashCode() { + int result = account != null ? account.hashCode() : 0; + result = 31 * result + (sessionId != null ? sessionId.hashCode() : 0); + return result; } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/ExecutedDealReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/ExecutedDealReport.java index dd5c37a0f..0207e366f 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/ExecutedDealReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/ExecutedDealReport.java @@ -25,7 +25,7 @@ public class ExecutedDealReport { @CsvBindByName(column = "TRADETIME") @CsvBindByPosition(position = 3) - @CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss") + @CsvDate(value = "HH:mm:ss") private Instant tradeTime; @CsvBindByName(column = "SETTLEDATE") @@ -39,12 +39,12 @@ public class ExecutedDealReport { @CsvBindByName(column = "PRICE") @CsvBindByPosition(position = 6) - @CsvNumber(value = "#0.00", writeFormat = "#0.00") + @CsvNumber(value = "#0.000000", writeFormat = "#0.000000") private BigDecimal price; @CsvBindByName(column = "QUANTITY") @CsvBindByPosition(position = 7) - @CsvNumber(value = "#0.00", writeFormat = "#0.00") + @CsvNumber(value = "#0", writeFormat = "#0") private BigDecimal quantity; @CsvBindByName(column = "VALUE") 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 d0930c81c..365b75ad8 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 @@ -25,9 +25,9 @@ public class KSCommissionTradesReport { @CsvBindByPosition(position = 3) private String agreementNumber; - @CsvBindByName(column = "AGREEMENT_NUMBER_PREFIX") + @CsvBindByName(column = "AGREEMENT_NUMBER_POSTFIX") @CsvBindByPosition(position = 4) - private String agreementNumberPrefix; + private String agreementNumberPostfix; @CsvBindByName(column = "AGREEMENT_DATE") @CsvBindByPosition(position = 5) @@ -39,10 +39,14 @@ public class KSCommissionTradesReport { @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal sum; - @CsvBindByName(column = "SUM_DATE") + @CsvBindByName(column = "REPAYM_DATE") @CsvBindByPosition(position = 7) @CsvDate(value = "dd.MM.yyyy") - private LocalDate sumDate; + private LocalDate repaymDate; + + @CsvBindByName(column = "EXEC_STATUS") + @CsvBindByPosition(position = 8) + private String execStatus; public String getFirmId() { @@ -77,12 +81,12 @@ public class KSCommissionTradesReport { this.agreementNumber = agreementNumber; } - public String getAgreementNumberPrefix() { - return agreementNumberPrefix; + public String getAgreementNumberPostfix() { + return agreementNumberPostfix; } - public void setAgreementNumberPrefix(String agreementNumberPrefix) { - this.agreementNumberPrefix = agreementNumberPrefix; + public void setAgreementNumberPostfix(String agreementNumberPrefix) { + this.agreementNumberPostfix = agreementNumberPrefix; } public LocalDate getAgreementDate() { @@ -101,11 +105,19 @@ public class KSCommissionTradesReport { this.sum = sum; } - public LocalDate getSumDate() { - return sumDate; + public LocalDate getRepaymDate() { + return repaymDate; } - public void setSumDate(LocalDate sumDate) { - this.sumDate = sumDate; + public void setRepaymDate(LocalDate repaymDate) { + this.repaymDate = repaymDate; + } + + public String getExecStatus() { + return execStatus; + } + + public void setExecStatus(String execStatus) { + this.execStatus = execStatus; } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashRegisterSumsReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashRegisterSumsReport.java index 2a2e54da2..08549bcfa 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashRegisterSumsReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashRegisterSumsReport.java @@ -18,22 +18,26 @@ public class KSRepCashRegisterSumsReport { @CsvBindByPosition(position = 1) private String account; - @CsvBindByName(column = "REGISTER_CODE") + @CsvBindByName(column = "TKR") @CsvBindByPosition(position = 2) + private String tkr; + + @CsvBindByName(column = "REGISTER_CODE") + @CsvBindByPosition(position = 3) private String registerCode; @CsvBindByName(column = "ADD_SUM") - @CsvBindByPosition(position = 3) + @CsvBindByPosition(position = 4) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal addSum; @CsvBindByName(column = "ADD_TIME") - @CsvBindByPosition(position = 4) + @CsvBindByPosition(position = 5) @CsvDate(value = "HH:mm:ss") private LocalTime addTime; @CsvBindByName(column = "ADD_DATE") - @CsvBindByPosition(position = 5) + @CsvBindByPosition(position = 6) @CsvDate(value = "dd.MM.yyyy") private LocalDate addDate; @@ -85,4 +89,12 @@ public class KSRepCashRegisterSumsReport { public void setAddDate(LocalDate addDate) { this.addDate = addDate; } + + public String getTkr() { + return tkr; + } + + public void setTkr(String tkr) { + this.tkr = tkr; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashRegistersReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashRegistersReport.java index 0e41180fd..12f061cef 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashRegistersReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepCashRegistersReport.java @@ -17,41 +17,45 @@ public class KSRepCashRegistersReport { @CsvBindByPosition(position = 1) private String account; - @CsvBindByName(column = "DATE") + @CsvBindByName(column = "TKR") @CsvBindByPosition(position = 2) + private String tkr; + + @CsvBindByName(column = "DATE") + @CsvBindByPosition(position = 3) @CsvDate(value = "dd.MM.yyyy") private LocalDate date; @CsvBindByName(column = "REGISTER_CODE") - @CsvBindByPosition(position = 3) + @CsvBindByPosition(position = 4) private String registerCode; @CsvBindByName(column = "REGISTER_NAME") - @CsvBindByPosition(position = 4) + @CsvBindByPosition(position = 5) private String registerName; @CsvBindByName(column = "OPEN_BALANCE") - @CsvBindByPosition(position = 5) + @CsvBindByPosition(position = 6) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal openBalance; @CsvBindByName(column = "CHANGE_BALANCE") - @CsvBindByPosition(position = 6) + @CsvBindByPosition(position = 7) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal changeBalance; @CsvBindByName(column = "ADD_WITHDRAW") - @CsvBindByPosition(position = 7) + @CsvBindByPosition(position = 8) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal addWithdraw; @CsvBindByName(column = "CLOSE_BALANCE") - @CsvBindByPosition(position = 8) + @CsvBindByPosition(position = 9) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal closeBalance; @CsvBindByName(column = "REMARKS") - @CsvBindByPosition(position = 9) + @CsvBindByPosition(position = 10) private String remarks; @@ -134,4 +138,12 @@ public class KSRepCashRegistersReport { public void setRemarks(String remarks) { this.remarks = remarks; } + + public String getTkr() { + return tkr; + } + + public void setTkr(String tkr) { + this.tkr = tkr; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoRegisterQuantitiesReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoRegisterQuantitiesReport.java index 941fd4aed..e347c558e 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoRegisterQuantitiesReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoRegisterQuantitiesReport.java @@ -18,26 +18,30 @@ public class KSRepDepoRegisterQuantitiesReport { @CsvBindByPosition(position = 1) private String account; - @CsvBindByName(column = "SECURITYID") + @CsvBindByName(column = "TKR") @CsvBindByPosition(position = 2) + private String tkr; + + @CsvBindByName(column = "SECURITYID") + @CsvBindByPosition(position = 3) private String securityId; @CsvBindByName(column = "REGISTER_CODE") - @CsvBindByPosition(position = 3) + @CsvBindByPosition(position = 4) private String registerCode; @CsvBindByName(column = "ADD_QUANTITY") - @CsvBindByPosition(position = 4) + @CsvBindByPosition(position = 5) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal addQuantity; @CsvBindByName(column = "ADD_TIME") - @CsvBindByPosition(position = 5) + @CsvBindByPosition(position = 6) @CsvDate(value = "HH:mm:ss") private LocalTime addTime; @CsvBindByName(column = "ADD_DATE") - @CsvBindByPosition(position = 6) + @CsvBindByPosition(position = 7) @CsvDate(value = "dd.MM.yyyy") private LocalDate addDate; @@ -97,4 +101,12 @@ public class KSRepDepoRegisterQuantitiesReport { public void setAddDate(LocalDate addDate) { this.addDate = addDate; } + + public String getTkr() { + return tkr; + } + + public void setTkr(String tkr) { + this.tkr = tkr; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoRegistersReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoRegistersReport.java index 55da5f3d4..11d499bc0 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoRegistersReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepDepoRegistersReport.java @@ -17,45 +17,49 @@ public class KSRepDepoRegistersReport { @CsvBindByPosition(position = 1) private String account; - @CsvBindByName(column = "DATE") + @CsvBindByName(column = "TKR") @CsvBindByPosition(position = 2) + private String tkr; + + @CsvBindByName(column = "DATE") + @CsvBindByPosition(position = 3) @CsvDate(value = "dd.MM.yyyy") private LocalDate date; @CsvBindByName(column = "SECURITYID") - @CsvBindByPosition(position = 3) + @CsvBindByPosition(position = 4) private String securityId; @CsvBindByName(column = "REGISTER_CODE") - @CsvBindByPosition(position = 4) + @CsvBindByPosition(position = 5) private String registerCode; @CsvBindByName(column = "REGISTER_NAME") - @CsvBindByPosition(position = 5) + @CsvBindByPosition(position = 6) private String registerName; @CsvBindByName(column = "OPEN_QUANTITY") - @CsvBindByPosition(position = 6) + @CsvBindByPosition(position = 7) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal openQuantity; @CsvBindByName(column = "CHANGE_QUANTITY") - @CsvBindByPosition(position = 7) + @CsvBindByPosition(position = 8) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal changeQuantity; @CsvBindByName(column = "ADD_WITHDRAW_DEPO") - @CsvBindByPosition(position = 8) + @CsvBindByPosition(position = 9) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal addWithdrawDepo; @CsvBindByName(column = "CLOSE_QUANTITY") - @CsvBindByPosition(position = 9) + @CsvBindByPosition(position = 10) @CsvNumber(value = "#0.00", writeFormat = "#0.00") private BigDecimal closeQuantity; @CsvBindByName(column = "REMARKS") - @CsvBindByPosition(position = 10) + @CsvBindByPosition(position = 11) private String remarks; @@ -146,4 +150,12 @@ public class KSRepDepoRegistersReport { public void setRemarks(String remarks) { this.remarks = remarks; } + + public String getTkr() { + return tkr; + } + + public void setTkr(String tkr) { + this.tkr = tkr; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepTradesReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepTradesReport.java index 7048f208a..895d217b2 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepTradesReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bean/KSRepTradesReport.java @@ -29,7 +29,7 @@ public class KSRepTradesReport { @CsvBindByName(column = "TKR") @CsvBindByPosition(position = 4) - private Long tkr; + private String tkr; @CsvBindByName(column = "CASH_LIABILITY") @CsvBindByPosition(position = 5) @@ -91,11 +91,11 @@ public class KSRepTradesReport { this.firmId = firmId; } - public Long getTkr() { + public String getTkr() { return tkr; } - public void setTkr(Long tkr) { + public void setTkr(String tkr) { this.tkr = tkr; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java index e5f58fee1..af8392d1f 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java @@ -34,7 +34,7 @@ public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuild return executionFondImdg.getCollectionObjectsByPredicate( pb.and( pb.equals("coverageStatus", Allowed.DENIED.getKey()), - pb.equals("settlementDate", LocalDate.now()) + pb.lessEqual("settlementDate", LocalDate.now()) ) ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java index 754c4e56d..7c2a7c498 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java @@ -48,7 +48,7 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder registries = registryImdg.getCollectionObjectsByPredicate(finalPredicate); Map> registryMap = registries.stream().collect(Collectors.groupingBy(PairRegistryId::new)); @@ -82,10 +81,10 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder groupedRegistry = entry.getValue(); try { - if (groupedRegistry.size() != 2) { - log.warn("Invalid OM_T and TM_T registries for GroupId = {} and SettlementDate = {}. Registries with id = [{}] was skipped", - pairRegistryId.getGroupId(), - pairRegistryId.getSettlementDate(), + if (groupedRegistry.size() > 2 || groupedRegistry.isEmpty()) { + log.warn("Invalid OM_T and TM_T registries for account = {} and session_id = {}. Registries with id = [{}] was skipped", + pairRegistryId.getAccount(), + pairRegistryId.getSessionId(), groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", ")) ); continue; @@ -93,33 +92,29 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder registries = registryImdg.getCollectionObjectsByPredicate(finalPredicate); @@ -79,10 +78,10 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder groupedRegistry = entry.getValue(); try { - if (groupedRegistry.size() != 2) { - log.warn("Invalid OS_T and TS_T registries for GroupId = {} and SettlementDate = {}. Registries with id = [{}] was skipped", - pairRegistryId.getGroupId(), - pairRegistryId.getSettlementDate(), + if (groupedRegistry.size() > 2 || groupedRegistry.isEmpty()) { + log.warn("Invalid OS_T and TS_T registries for account = {} and sessionId = {}. Registries with id = [{}] was skipped", + pairRegistryId.getAccount(), + pairRegistryId.getSessionId(), groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", ")) ); continue; @@ -90,36 +89,32 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder registryImdg; private final Imdg marketImdg; private final Imdg companyImdg; + private final Imdg tradingClearingRegistryImdg; private List rows = null; @@ -44,6 +46,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder outFiles = createReportsForTask(sessionIds, reportBuildersForGRET.values()); - sendReportsToGateway(sessionIds, outFiles, null); + Map outFilesWithReportType_PFX64 = new HashMap<>(); + Map outFilesWithReportType_PFX65 = new HashMap<>(); + for (Map.Entry entry : outFiles.entrySet()) { + File reportFile = entry.getKey(); + ReportInfo reportInfo = entry.getValue(); + ReportKeys reportKey = IEnumKey.getEnumByKey(ReportKeys.class, reportInfo.reportKey()); + if (reportKey == ReportKeys.KS_BR_PFX65_DEALS) { + outFilesWithReportType_PFX65.put(reportFile, reportInfo); + } else if ( + reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_1 || + reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_2 || + reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_3 || + reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_4 + ) { + outFilesWithReportType_PFX64.put(reportFile, reportInfo); + } + } + sendReportsToGateway(sessionIds, outFilesWithReportType_PFX64, ReportType.PFX64.getKey()); + sendReportsToGateway(sessionIds, outFilesWithReportType_PFX65, ReportType.PFX65.getKey()); sendFilesToSftp(outFiles.keySet()); return null; } diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java index 67f44f43a..301c66786 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java @@ -209,7 +209,7 @@ public class ReportServiceTest_BP { File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_1"))[0]; File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_1_expected.csv").getFile()); - compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "TRADETIME", "SETTLEDATE")); + compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "SETTLEDATE")); for (File file : outFolder.listFiles()) { if (!outFile.getName().equalsIgnoreCase(file.getName())) { @@ -261,7 +261,7 @@ public class ReportServiceTest_BP { File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_2"))[0]; File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_2_expected.csv").getFile()); - compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "TRADETIME", "SETTLEDATE")); + compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "SETTLEDATE")); for (File file : outFolder.listFiles()) { if (!outFile.getName().equalsIgnoreCase(file.getName())) { @@ -310,7 +310,7 @@ public class ReportServiceTest_BP { File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_3"))[0]; File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_3_expected.csv").getFile()); - compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "TRADETIME", "SETTLEDATE")); + compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE", "SETTLEDATE")); for (File file : outFolder.listFiles()) { if (!outFile.getName().equalsIgnoreCase(file.getName())) { @@ -409,7 +409,7 @@ public class ReportServiceTest_BP { TestUtils.waitingSendAndCheckRecord(0L, producer); File outFile = outFolder.listFiles()[0]; - File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/unfulfilled_deal_report_expected.csv").getFile()); + File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/bp/KS_BR_PFX65_DEALS_expected.csv").getFile()); compareCSVFiles(expectedFile, outFile, Arrays.asList("TRADEDATE")); testExecutionFond.setSessionId(oldExecutionFondSessionId); 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 a8d7170ce..331ed5a2a 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 @@ -23,6 +23,7 @@ import ru.clearing.classes.statics.data.misc.Market; import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.profile.ProfileDocument; import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.clearing.classes.statics.data.statement.Statement; import ru.clearing.platform.dictionary.RegistryCodeDictionary; import ru.spcex.clearing.imdg.IMDGDistributedNames; @@ -85,6 +86,7 @@ public class ReportServiceTest_KS { private Imdg companySymbolsImdg; private Imdg profileDocumentImdg; private Imdg equitySecurityImdg; + private Imdg tradingClearingRegistryImdg; private Long COMPANY_ID; @Autowired @@ -129,6 +131,7 @@ public class ReportServiceTest_KS { registry.setRegistryUnit(RegistryUnit.T.getKey()); registry.setUpdated(Instant.now()); registry.setTradingCode("TRADING_CODE"); + registry.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY"); registry.setAccount("ACCOUNT"); registry.setAccountType(AccountType.Clrn.getKey()); registry.setOpenBalance(BigDecimal.valueOf(77.777777777)); @@ -170,6 +173,7 @@ public class ReportServiceTest_KS { registry_1.setAccount("ACCOUNT"); registry_1.setAccountType(AccountType.Clrn.getKey()); registry_1.setRegistryCode(RegistryUnit.T.getKey()); + registry_1.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY"); registryImdg.insert(registry_1); Statement statement_1 = new Statement(); @@ -222,6 +226,7 @@ public class ReportServiceTest_KS { registry.setUpdated(Instant.now()); registry.setTradingCode("TRADING_CODE"); registry.setAccount("ACCOUNT"); + registry.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY"); registry.setAccountType(AccountType.Depo.getKey()); registry.setOpenBalance(BigDecimal.valueOf(77.777777777)); registry.setSettledCredit(BigDecimal.valueOf(88.88888888)); @@ -260,6 +265,7 @@ public class ReportServiceTest_KS { Registry registry_1 = new Registry(); registry_1.setCompanyId(COMPANY_ID); registry_1.setAccount("ACCOUNT"); + registry_1.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY"); registry_1.setAccountType(AccountType.Depo.getKey()); registry_1.setRegistryCode(RegistryUnit.T.getKey()); registryImdg.insert(registry_1); @@ -307,6 +313,10 @@ public class ReportServiceTest_KS { ReportRequest reportRequest = new ReportRequest(); reportRequest.setReportId(ReportBuilderType.KS_REP_TRADES.getKey()); + TradingClearingRegistry tradingClearingRegistry = new TradingClearingRegistry(); + tradingClearingRegistry.setCode("TKR"); + Long tkrId = tradingClearingRegistryImdg.insert(tradingClearingRegistry); + 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); @@ -319,7 +329,7 @@ public class ReportServiceTest_KS { executionFond.setCompanyId(COMPANY_ID); executionFond.setTradingDate(LocalDate.now()); executionFond.setSessionId(sessionId_1); - executionFond.setTradingClearingRegistryId(666L); + executionFond.setTradingClearingRegistryId(tkrId); executionFond.setSettlementAmount(BigDecimal.valueOf(8888.888888)); executionFond.setQuantity(BigDecimal.valueOf(123.456789)); executionFond.setExchangeExecutionId(222L); @@ -347,7 +357,7 @@ public class ReportServiceTest_KS { executionDeposit.setCompanyId(COMPANY_ID); executionDeposit.setTradingDate(LocalDate.now()); executionDeposit.setSessionId(sessionId_2); - executionDeposit.setTradingClearingRegistryId(666L); + executionDeposit.setTradingClearingRegistryId(tkrId); executionDeposit.setFirstLegAmount(BigDecimal.valueOf(8888.888888)); executionDeposit.setExchangeExecutionId(222L); executionDeposit.setExchangeExecutionTime(Instant.ofEpochMilli(LocalDateTime.of(2022, 1, 1, 1, 1, 1).toEpochSecond(ZoneOffset.UTC))); @@ -373,6 +383,7 @@ public class ReportServiceTest_KS { sessionImdg.delete(session_1); sessionImdg.delete(session_2); registryImdg.delete(registry); + tradingClearingRegistryImdg.delete(tradingClearingRegistry); } @Test @@ -723,6 +734,7 @@ public class ReportServiceTest_KS { marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class); statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class); + tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); } private void clearTestDir() throws IOException { diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_1_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_1_expected.csv index 8ef89c127..b2b458849 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_1_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_1_expected.csv @@ -1,2 +1,2 @@ "SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE" -"test-security-symbol-1","777","27.06.2023","25.08.1994T01:22:57","07.07.2023","test-settle-code","1000.00","7777.00","7777777.00" +"test-security-symbol-1","777","22.07.2023","01:22:57","01.08.2023","test-settle-code","1000.000000","7777","7777777.00" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_2_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_2_expected.csv index 3d74020e4..c51a63ea9 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_2_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_2_expected.csv @@ -1,2 +1,2 @@ "SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE" -"test-security-symbol-1","777","07.07.2023","25.08.1994T01:22:57","07.07.2023","test-settle-code","1000.00","7777.00","7777777.00" +"test-security-symbol-1","777","01.08.2023","01:22:57","01.08.2023","test-settle-code","1000.000000","7777","7777777.00" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_3_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_3_expected.csv index 38dc7cba3..9715c0c71 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_3_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_3_expected.csv @@ -1,2 +1,2 @@ "SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE" -"test-security-symbol-1","777","17.07.2023","25.08.1994T01:22:57","17.07.2023","test-settle-code","1000.00","7777.00","7777777.00" +"test-security-symbol-1","777","11.08.2023","01:22:57","11.08.2023","test-settle-code","1000.000000","7777","7777777.00" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_4_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_4_expected.csv index 5a47755cb..4cd564691 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_4_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX64_INFTYPE_4_expected.csv @@ -1,2 +1,2 @@ "SECURITYID","TRADENO","TRADEDATE","TRADETIME","SETTLEDATE","SETTLECODE","PRICE","QUANTITY","VALUE" -"test-security-symbol-1","777","17.07.2023","25.08.1994T01:22:57","07.07.2023","test-settle-code","1000.00","7777.00","7777777.00" +"test-security-symbol-1","777","11.08.2023","01:22:57","01.08.2023","test-settle-code","1000.000000","7777","7777777.00" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX65_DEALS_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX65_DEALS_expected.csv new file mode 100644 index 000000000..8ccb6ed54 --- /dev/null +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/KS_BR_PFX65_DEALS_expected.csv @@ -0,0 +1,2 @@ +"SECURITYID","TRADENO","TRADEDATE","SETTLECODE" +"3007","777","22.07.2023","test-class-code" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/unfulfilled_deal_report_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/unfulfilled_deal_report_expected.csv deleted file mode 100644 index b3881299a..000000000 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/bp/unfulfilled_deal_report_expected.csv +++ /dev/null @@ -1,2 +0,0 @@ -SECURITYID,TRADENO,TRADEDATE,SETTLECODE -"3007","777","20.06.2023","test-class-code" 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 282c608e3..c9cd18bf9 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_PREFIX","AGREEMENT_DATE","SUM","SUM_DATE" -"CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","SECURITY_SYMBOL/010191/CLEARING_CODE777","","01.01.1991","77.78","18.07.2023" +"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_CODE777","","01.01.1991","77.78","01.08.2023","OK" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTERS_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTERS_expected.csv index fcb22f6a3..09b2d6f72 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTERS_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTERS_expected.csv @@ -1,2 +1,2 @@ -"FIRMID","ACCOUNT","DATE","REGISTER_CODE","REGISTER_NAME","OPEN_BALANCE","CHANGE_BALANCE","ADD_WITHDRAW","CLOSE_BALANCE","REMARKS" -"TRADING_CODE","ACCOUNT","07.07.2023","AM_T","AM_T_NAME","77.78","66.67","66.67","11.11","" +"FIRMID","ACCOUNT","TKR","DATE","REGISTER_CODE","REGISTER_NAME","OPEN_BALANCE","CHANGE_BALANCE","ADD_WITHDRAW","CLOSE_BALANCE","REMARKS" +"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","AM_T","AM_T_NAME","77.78","66.67","66.67","11.11","" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTER_SUMS_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTER_SUMS_expected.csv index e8f3dac99..8583637ba 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTER_SUMS_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTER_SUMS_expected.csv @@ -1,2 +1,2 @@ -"FIRMID","ACCOUNT","REGISTER_CODE","ADD_SUM","ADD_TIME","ADD_DATE" -"1","ACCOUNT","T","7777.78","17:00:50","17.07.2023" +"FIRMID","ACCOUNT","TKR","REGISTER_CODE","ADD_SUM","ADD_TIME","ADD_DATE" +"1","ACCOUNT","TRADING_CLEARING_REGISTRY","T","7777.78","15:49:30","01.08.2023" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTERS_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTERS_expected.csv index 994182274..fb7793060 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTERS_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTERS_expected.csv @@ -1,2 +1,2 @@ -"FIRMID","ACCOUNT","DATE","SECURITYID","REGISTER_CODE","REGISTER_NAME","OPEN_QUANTITY","CHANGE_QUANTITY","ADD_WITHDRAW_DEPO","CLOSE_QUANTITY","REMARKS" -"TRADING_CODE","ACCOUNT","07.07.2023","","AS_T","AS_T_NAME","77.78","66.67","66.67","11.11","" +"FIRMID","ACCOUNT","TKR","DATE","SECURITYID","REGISTER_CODE","REGISTER_NAME","OPEN_QUANTITY","CHANGE_QUANTITY","ADD_WITHDRAW_DEPO","CLOSE_QUANTITY","REMARKS" +"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","","AS_T","AS_T_NAME","77.78","66.67","66.67","11.11","" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTER_QUANTITIES_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTER_QUANTITIES_expected.csv index 6f948818a..16fc7bd5a 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTER_QUANTITIES_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTER_QUANTITIES_expected.csv @@ -1,2 +1,2 @@ -"FIRMID","ACCOUNT","SECURITYID","REGISTER_CODE","ADD_QUANTITY","ADD_TIME","ADD_DATE" -"1","ACCOUNT","value","T","7777.78","18:39:59","17.07.2023" +"FIRMID","ACCOUNT","TKR","SECURITYID","REGISTER_CODE","ADD_QUANTITY","ADD_TIME","ADD_DATE" +"1","ACCOUNT","TRADING_CLEARING_REGISTRY","value","T","7777.78","15:52:33","01.08.2023" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_TRADES_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_TRADES_expected.csv index 8a743f386..eab1a94da 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_TRADES_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_TRADES_expected.csv @@ -1,3 +1,3 @@ "SESSION_ID","SESSION_DATE","TR_ID","FIRM_ID","TKR","CASH_LIABILITY","DEPO_LIABILITY","TRADE_NUM","CLASS_CODE","TRADE_DATE","STATUS" -"3","20.01.1970T04:09:07","6","TRADING_CODE","666","8888.89","","222","","19.01.1970T23:49:58","3" -"2","20.01.1970T12:54:43","4","TRADING_CODE","666","8888.89","123.46","222","","19.01.1970T23:49:58","1" +"4","20.01.1970T04:09:07","8","TRADING_CODE","TKR","8888.89","","222","","19.01.1970T23:49:58","3" +"3","20.01.1970T12:54:43","5","TRADING_CODE","TKR","8888.89","123.46","222","","19.01.1970T23:49:58","1" diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportKeys.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportKeys.java index cf82ced35..93d2bdd0c 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportKeys.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportKeys.java @@ -7,7 +7,6 @@ public enum ReportKeys implements IEnumKey { KS_BR_PFX64_INFTYPE_2("KS_BR_PFX64_INFTYPE_2"), KS_BR_PFX64_INFTYPE_3("KS_BR_PFX64_INFTYPE_3"), KS_BR_PFX64_INFTYPE_4("KS_BR_PFX64_INFTYPE_4"), - UNFULFILLED_DEAL_REPORT("UNFULFILLED_DEAL_REPORT"), KS_BR_PFX65_DEALS("KS_BR_PFX65_DEALS"), KS_REP_CASH_REGISTERS("KS_REP_CASH_REGISTERS"), KS_REP_CASH_REGISTER_SUMS("KS_REP_CASH_REGISTER_SUMS"), From 94af268598336e45d80c36ba289fd0a3d77f3a33 Mon Sep 17 00:00:00 2001 From: akulikov Date: Wed, 2 Aug 2023 13:34:45 +0300 Subject: [PATCH 2/5] http://jira.mfd.msk:8088/browse/CLS-358?focusedCommentId=55653&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-55653 --- .../reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java | 2 +- .../spcex/clearing/reports/services/ReportServiceTest_KS.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java index af8392d1f..e5f58fee1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java @@ -34,7 +34,7 @@ public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuild return executionFondImdg.getCollectionObjectsByPredicate( pb.and( pb.equals("coverageStatus", Allowed.DENIED.getKey()), - pb.lessEqual("settlementDate", LocalDate.now()) + pb.equals("settlementDate", LocalDate.now()) ) ); } 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 331ed5a2a..61e5f8933 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 @@ -664,7 +664,7 @@ public class ReportServiceTest_KS { File outFile = outFolder.listFiles()[0]; File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv").getFile()); - compareCSVFiles(expectedFile, outFile, Arrays.asList("SUM_DATE")); + compareCSVFiles(expectedFile, outFile, Arrays.asList("REPAYM_DATE")); registryImdg.delete(registry); registryImdg.delete(omtRegistry); From 4522aec93f071cd730ea7254d2f19940da9be5b5 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Thu, 3 Aug 2023 11:16:41 +0300 Subject: [PATCH 3/5] =?UTF-8?q?dbf-importer=20SDf06Table=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0=D1=82=20inn,=20bic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/data/tables/SDf06Table.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06Table.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06Table.java index b5cd585c2..e16ca8cdb 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06Table.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06Table.java @@ -21,22 +21,32 @@ public class SDf06Table extends AbstractTable { public SDf06 getEntity(Object[] entity) { SDf06 result = new SDf06(); result.setAccount((String) entity[0]); - if (entity[1] instanceof BigDecimal) { - result.setSum((BigDecimal) entity[1]); - } else if (entity[1] instanceof String) { - result.setSum(new BigDecimal((String) entity[1])); - } + result.setSum(anyNumberToBigDecimal(entity[1])); result.setMarket((String) entity[2]); result.setType((String) entity[3]); result.setDeal((String) entity[4]); result.setClientN((String) entity[5]); - result.setInn((BigDecimal) entity[6]); - result.setBic((BigDecimal) entity[7]); + result.setInn(anyNumberToBigDecimal(entity[6])); + result.setBic(anyNumberToBigDecimal(entity[7])); result.setSpec((String) entity[8]); - result.setNumber((BigDecimal) entity[9]); + result.setNumber(anyNumberToBigDecimal(entity[9])); result.setFileName(filename); result.setGenerationTime(Instant.now()); result.setGenerationId(fileId); return result; } + + BigDecimal anyNumberToBigDecimal(Object value) { + if (value == null) return null; + if (value instanceof BigDecimal) { + return (BigDecimal) value; + } + if (value instanceof String) { + return BigDecimal.valueOf(Long.parseLong((String)value)); + } + if (value instanceof Number) { + return BigDecimal.valueOf(((Number)value).longValue()); + } + throw new IllegalArgumentException("Can not convert to BigDecimal " + value.getClass().getName() + " " + value); + } } \ No newline at end of file From 9208483045dc4dac244c6d7b825af98802b5593d Mon Sep 17 00:00:00 2001 From: psemenkov Date: Thu, 3 Aug 2023 12:11:48 +0300 Subject: [PATCH 4/5] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-462=20?= =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=B2=D0=B5=D0=BB=20=D0=B2=D1=8B=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=B7=D0=BA=D1=83=20=D0=BF=D0=BE=D0=BB=D1=8F=2035A=20?= =?UTF-8?q?=D0=BA=20=D0=B2=D0=B8=D0=B4=D1=83=20":35A:SHS10000,"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../swt/exporter/services/exportimpl/DF12Exporter.java | 3 ++- .../ru/spcex/clearing/swt/exporter/util/SWTHeaderData.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java index 0b4314f9f..924744fde 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java @@ -63,7 +63,8 @@ public class DF12Exporter extends AbstractExporterService { lastHeader20 = record.getOutDocument(); } stringBuilder.append(":23:").append(record.getDirection()).append(lineSeparator); - stringBuilder.append(":35A:SHS").append(record.getQuantity()).append(lineSeparator); + String quantity = record.getQuantity() == null ? "" : record.getQuantity().split("\\.")[0] + ","; + stringBuilder.append(":35A:SHS").append(quantity).append(lineSeparator); stringBuilder.append(":35B:ISIN ").append(record.getSecurityCode()).append(lineSeparator); stringBuilder.append(":82D:").append(record.getDepoCodeSender()).append(lineSeparator); stringBuilder.append(":87C:").append(record.getDepoCodeAdressee()).append(lineSeparator); diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/util/SWTHeaderData.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/util/SWTHeaderData.java index f3591cd29..6a40376a0 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/util/SWTHeaderData.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/util/SWTHeaderData.java @@ -156,7 +156,8 @@ public class SWTHeaderData { stringBuilder.append(":23:").append(valFor23Tag).append('\n'); } if (valFor35ATag != null) { - stringBuilder.append(":35A:SHS").append(valFor35ATag).append('\n'); + String val = valFor35ATag.split("\\.")[0] + ","; + stringBuilder.append(":35A:SHS").append(val).append('\n'); } if (valFor35BTag != null) { stringBuilder.append(":35B:ISIN ").append(valFor35BTag).append('\n'); From 7d51561c71fb2c5b4b259a7249a93343bc57a3c3 Mon Sep 17 00:00:00 2001 From: psemenkov Date: Thu, 3 Aug 2023 17:42:47 +0300 Subject: [PATCH 5/5] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-317=20?= =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=B2=D0=B5=D0=BB=20=D0=BA=D0=BE=D0=BD=D1=86?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0?= =?UTF-8?q?=20=D0=94=D0=A4-12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../swt/exporter/services/AbstractExporterService.java | 10 +++++++--- .../swt/exporter/services/exportimpl/DF12Exporter.java | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java index 53e962ffe..a222ff418 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java @@ -13,10 +13,14 @@ import ru.spcex.platform.enumeration.SwtTable; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -import java.io.*; +import java.io.ByteArrayOutputStream; +import java.io.OutputStream; +import java.io.PrintWriter; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.Collection; +import java.util.Objects; +import java.util.Optional; import static ru.spcex.clearing.platform.messaging.domain.Consts.JOURNAL_SERVICE; @@ -135,8 +139,8 @@ public abstract class AbstractExporterService { protected void makeSWTData(SWTHeaderData header, Collection records, OutputStream outStream) { try (PrintWriter out = new PrintWriter(outStream)) { out.print(header.buildString()); - int counter = 1; // нумерация начинается с 1 int totalSize = records.size(); + int counter = totalSize == 0 ? 0 : 1; // нумерация начинается с 1 for (T row : records) { ConvertionContext context = new ConvertionContext(mapClass, counter, totalSize); String data = convertRecord(row, context); diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java index 924744fde..784a7c49d 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java @@ -97,7 +97,7 @@ public class DF12Exporter extends AbstractExporterService { @Override protected void writeFooter(PrintWriter out, Collection records, int counter) { - String footerCheckSum = counter + lineSeparator + records.size() + lineSeparator; - out.print(footerCheckSum); +// String footerCheckSum = counter + lineSeparator + records.size() + lineSeparator; +// out.print(footerCheckSum); } }