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 6d191825f..d57f54604 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 @@ -1,6 +1,7 @@ package ru.spcex.clearing.reports.builders.ks; import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.registry.Registry; import ru.spcex.clearing.imdg.IMDGDistributedNames; @@ -14,6 +15,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; +import ru.spcex.platform.utils.enumeration.IEnumKey; import java.math.BigDecimal; import java.time.LocalDate; @@ -28,12 +30,14 @@ import java.util.stream.Collectors; public class KSRepCashNettoReportBuilder extends CSVReportBuilder { private final Imdg registryImdg; private final Imdg sessionImdg; + private final Imdg accountImdg; private List rows = null; public KSRepCashNettoReportBuilder(ImdgProvider imdgProvider) { registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); + accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); } @Override @@ -158,7 +162,19 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder { private final Imdg companyImdg; private final Imdg registryImdg; + private final Imdg accountImdg; private List rows = null; public KSRepCashRegisterSumsReportBuilder(ImdgProvider imdgProvider) { registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); } @Override @@ -105,8 +110,19 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder companyImdg; private final Imdg registryCodeDictionaryImdg; private final Imdg sessionImdg; + private final Imdg accountImdg; private List rows = null; @@ -40,6 +43,7 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder expectedLines = new ArrayList<>(); do { - String[] expectedLines = expectedCSVReader.readNext(); - String[] actualLines = actualCSVReader.readNext(); - if (expectedLines == null || actualLines == null) { - if (expectedLines == null && actualLines == null) { + String[] expectedLine = expectedCSVReader.readNext(); + if (expectedLine == null) break; + expectedLines.add(expectedLine); + } while (true); + + List actualLines = new ArrayList<>(); + do { + String[] actualLine = actualCSVReader.readNext(); + if (actualLine == null) break; + actualLines.add(actualLine); + } while (true); + if (expectedLines.size() != actualLines.size()) { + Assertions.fail("expected and actual lines not equal"); + } + + for (String[] actualLine : actualLines) { + boolean findEqual = false; + for (String[] expectedLine : expectedLines) { + boolean lineEqual = true; + for (String expectedHeader : expectedValueForColumn.keySet()) { + int expectedIdx = expectedValueForColumn.get(expectedHeader); + int actualIdx = actualValueForColumn.get(expectedHeader); + String expected = expectedLine[expectedIdx]; + String actual = actualLine[actualIdx]; + lineEqual = expected.equals(actual); + if (!lineEqual) break; + } + if (lineEqual) { + findEqual = true; break; } - Assertions.fail("expected and actual lines not equal"); } - for (String expectedHeader : expectedValueForColumn.keySet()) { - int expectedIdx = expectedValueForColumn.get(expectedHeader); - int actualIdx = actualValueForColumn.get(expectedHeader); - String expected = expectedLines[expectedIdx]; - String actual = actualLines[actualIdx]; - assertEquals(expected, actual, expectedHeader); - } - } while (true); + if (findEqual) continue; + Assertions.fail("For actual line '%s' not found expected line".formatted(String.join(",", actualLine))); + } expectedCSVReader.close(); actualCSVReader.close(); diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_NETTO_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_NETTO_expected.csv index 5ba735813..e56d91b52 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_NETTO_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_NETTO_expected.csv @@ -1,2 +1,3 @@ "FIRMID","SESSION_ID","SESSION_DATE","ACCOUNT","TKR","VALUE","DATE" -"TRADING_CODE","2","20.01.1970T02:49:58","ACCOUNT","TKR","22.22","31.10.2023" +"TRADING_CODE","2","20.01.1970T02:49:58","ACCOUNT","TKR","22.22","01.11.2023" +"TRADING_CODE","2","20.01.1970T02:49:58","ACCOUNT_FROM_ACCOUNT","TKR","22.22","01.11.2023" 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 c9956a7d5..8c1197b76 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,3 @@ "FIRMID","ACCOUNT","TKR","DATE","REGISTER_CODE","REGISTER_NAME","OPEN_BALANCE","CHANGE_BALANCE","ADD_WITHDRAW","CLOSE_BALANCE","REMARKS","TRADE_NUM" -"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","31.10.2023","AM_T","AM_T_NAME","77.78","300.00","111.00","488.78","","" +"TRADING_CODE","ACCOUNT_FROM_ACCOUNT","TRADING_CLEARING_REGISTRY","01.11.2023","AM_T","AM_T_NAME","77.78","300.00","111.00","488.78","","" +"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.11.2023","AM_T","AM_T_NAME","77.78","300.00","111.00","488.78","","" 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 2eec3e2b8..4f826ad73 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,4 @@ "FIRMID","ACCOUNT","TKR","REGISTER_CODE","ADD_SUM","ADD_TIME","ADD_DATE","TRADE_NUM" -"TRADING_CODE","ACCOUNT","0008CAT00001","AM_T","0.00","13:02:50","02.10.2023","" +"TRADING_CODE","","0008CAT00001","AM_T","0.00","15:30:57","01.11.2023","" +"TRADING_CODE","ACCOUNT","0008CAT00001","AM_T","0.00","15:30:57","01.11.2023","" +"TRADING_CODE","ACCOUNT_FROM_ACCOUNT","0008CAT00001","AM_T","0.00","15:30:57","01.11.2023",""