From 41cf940f42439277c06929ff5917c8a829dd3773 Mon Sep 17 00:00:00 2001 From: akulikov Date: Thu, 20 Jun 2024 20:40:37 +0300 Subject: [PATCH] report-service fixes --- .../builders/bean/KSRepCashNettoReport.java | 13 +++++ .../ks/KSRepCashNettoReportBuilder.java | 55 ++++++++++++++----- .../clearing/reports/config/ReportConst.java | 8 +++ .../ks/KS_REP_CASH_NETTO_expected.csv | 4 +- 4 files changed, 63 insertions(+), 17 deletions(-) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/ReportConst.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashNettoReport.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashNettoReport.java index 5feee9809..05981229a 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashNettoReport.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bean/KSRepCashNettoReport.java @@ -63,6 +63,19 @@ public class KSRepCashNettoReport { @CsvDate(value = "dd.MM.yyyy") private LocalDate trExecDate; + + public KSRepCashNettoReport cloneWithoutValues() { + KSRepCashNettoReport result = new KSRepCashNettoReport(); + result.setFirmId(firmId); + result.setSessionId(sessionId); + result.setSessionDate(sessionDate); + result.setAccount(account); + result.setTkr(tkr); + result.setDate(date); + result.setLotCurrency(lotCurrency); + return result; + } + public String getFirmId() { return firmId; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepCashNettoReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepCashNettoReportBuilder.java index b76ee09ed..a3c265717 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepCashNettoReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepCashNettoReportBuilder.java @@ -21,11 +21,13 @@ import ru.spcex.clearing.reports.builders.CSVReportBuilder; import ru.spcex.clearing.reports.builders.PairRegistryId; import ru.spcex.clearing.reports.builders.SessionIdParam; import ru.spcex.clearing.reports.builders.bean.KSRepCashNettoReport; +import ru.spcex.clearing.reports.config.ReportConst; import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.RegistryDesignation; import ru.spcex.platform.enumeration.RegistryTradingParams; import ru.spcex.platform.enumeration.ReportBuilderType; import ru.spcex.platform.enumeration.ReportKeys; +import ru.spcex.platform.enumeration.Section; import ru.spcex.platform.enumeration.SessionType; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -151,7 +153,9 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder sessionTypeForValue = Set.of( SessionType.IPOT, SessionType.TRDT, SessionType.LIQU, SessionType.IPOB, - SessionType.IPO0 + SessionType.IPO0, + SessionType.UNIT ); Set sessionTypeForOblReqValue = Set.of( SessionType.FINL, SessionType.MEDM, - SessionType.XDEP + SessionType.XDEP, + SessionType.UNIT ); for (Registry cmtRegistry : cmtRegistries) { if (cmtRegistry.getBalance() != null) { SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, cmtRegistry.getSessionType()); - if (sessionType == null) continue; + Section section = IEnumKey.getEnumByKey(Section.class, cmtRegistry.getSection()); + if (sessionType == null || section == null) continue; if (sessionTypeForValue.contains(sessionType)) { cmtBalance = cmtBalance.add(cmtRegistry.getBalance()); - withValue = true; + if (sessionType == SessionType.UNIT && section == Section.CURR) forUnitSession = true; + else withValue = true; } if (sessionTypeForOblReqValue.contains(sessionType)) { reqValue = reqValue.add(cmtRegistry.getBalance()); - withOblReqValue = true; + if (sessionType == SessionType.UNIT && section == Section.CURR) forUnitSession = true; + else withOblReqValue = true; } } } for (Registry lmtRegistry : lmtRegistries) { if (lmtRegistry.getBalance() != null) { SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, lmtRegistry.getSessionType()); + Section section = IEnumKey.getEnumByKey(Section.class, lmtRegistry.getSection()); if (sessionType == null) continue; if (sessionTypeForValue.contains(sessionType)) { lmtBalance = lmtBalance.add(lmtRegistry.getBalance()); - withValue = true; + if (section == Section.CURR) forUnitSession = true; + else withValue = true; } if (sessionTypeForOblReqValue.contains(sessionType)) { oblValue = oblValue.add(lmtRegistry.getBalance()); - withOblReqValue = true; + if (section == Section.CURR) forUnitSession = true; + else withOblReqValue = true; } } } @@ -246,13 +261,23 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder