From 53b71431eac050bc3118d98ddd4d3f4b8acfa938 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Fri, 22 Sep 2023 15:45:54 +0300 Subject: [PATCH] =?UTF-8?q?reports-service=20http://jira.mfd.msk:8088/brow?= =?UTF-8?q?se/CLS-497=20KSRepCashRegisterSumsReportBuilder=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BF=D0=B0=D1=80=D1=81?= =?UTF-8?q?=D0=B8=D0=BD=D0=B3=20=D1=87=D0=B5=D0=BB=D0=BE=D0=B2=D0=B5=D0=BA?= =?UTF-8?q?=D0=BE=D1=87=D0=B8=D1=82=D0=B0=D0=B5=D0=BC=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B0=20=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KSRepCashRegisterSumsReportBuilder.java | 37 ++++++++++++++----- ...SRepCashRegisterSumsReportBuilderTest.java | 23 ++++++++++++ 2 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/reports/ks/KSRepCashRegisterSumsReportBuilderTest.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashRegisterSumsReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashRegisterSumsReportBuilder.java index 71da38339..b23ff0e41 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashRegisterSumsReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepCashRegisterSumsReportBuilder.java @@ -100,23 +100,19 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder= 0) { - code = code.substring(i + 3).trim(); - } - if (i < 0 || code.isBlank()) { + String code = parseCodeFromStatementComment(statement.getComment()); + if (code == null || code.isBlank()) { log.warn("For statement id = {} empty or unparseable code=\"{}\" (comment \"{}\"), statement was skipped", code, statement.getComment(), statement.getId()); continue; } - log.debug("Search TCR by code={}", code); + log.debug("Search TradingClearingRegistry by code={}", code); tkr = tradingClearingRegistryImdg.getFirstObjectByFieldValues(Map.of("code", code)); if (tkr == null) { log.warn( - "For statement id = {} and code = {} not found TradingClearingRegistry", + "For statement id = {} and code = {} (or unparseable comment=\"{}\") not found TradingClearingRegistry, statement was skipped", statement.getId(), - code + code, statement.getComment() ); continue; } @@ -130,7 +126,7 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder= 0) { + code = code.substring(i + 3).trim(); + } else { + return null; + } + i = -1; + for (String end : Arrays.asList(".", ";", " ")) { + int p = code.indexOf(end); + if (p > 0 && (i <= 0 || i > p)) i = p; + } + if (i > 0) { + code = code.substring(0, i); + } + return code; + } } diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/reports/ks/KSRepCashRegisterSumsReportBuilderTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/reports/ks/KSRepCashRegisterSumsReportBuilderTest.java new file mode 100644 index 000000000..b9ec67e23 --- /dev/null +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/reports/ks/KSRepCashRegisterSumsReportBuilderTest.java @@ -0,0 +1,23 @@ +package ru.spcex.clearing.reports.reports.ks; + +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import static org.junit.jupiter.api.Assertions.*; + +class KSRepCashRegisterSumsReportBuilderTest { + + @Test + void parseCodeFromStatementComment() { + KSRepCashRegisterSumsReportBuilder reportB = new KSRepCashRegisterSumsReportBuilder(Mockito.mock(ImdgProvider.class)); + assertNull(reportB.parseCodeFromStatementComment(null)); + assertEquals(null, reportB.parseCodeFromStatementComment("")); + assertEquals(null, reportB.parseCodeFromStatementComment(" TTTAAA ")); + assertEquals("0045CAT00001", reportB.parseCodeFromStatementComment("Возврат на депозит №DSTAA10S003/150923/45/23091500000008 по ТКР 0045CAT00001")); + assertEquals("0574MAT00001", reportB.parseCodeFromStatementComment("Вывод средств по ТКР 0574MAT00001. Поручения 777.")); + assertEquals("0574MAT00001", reportB.parseCodeFromStatementComment("ТКР 0574MAT00001")); + assertEquals("0574MAT00001", reportB.parseCodeFromStatementComment("ТКР0574MAT00001")); + assertEquals("", reportB.parseCodeFromStatementComment("ТКР")); + } +} \ No newline at end of file