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"),