From fb77fb760324f6d6f8f528fc1070e5ec2d1c1a80 Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 8 Jun 2023 16:33:26 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20PaymentInstruction=20=D0=BF=D1=80=D0=B8=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B5=20=D1=81=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=20=D0=B4=D0=BB=D1=8F=20=D0=B8=D1=82=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=D0=B2=D0=BE=D0=B9=20=D1=81=D0=B5=D1=81=D1=81=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=9C=D0=9A=D0=A0=20SDF03=20Sbanknam?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/spcex/clearing/service/SpecifUtil.java | 14 +++++------ .../service/builder/Sdf03Builder.java | 2 +- ...ormingPaymentInstructionDealsFinalMkr.java | 24 +++++++++++++++---- .../clearing/service/SpecifUtilTest.java | 12 +++++----- 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/SpecifUtil.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/SpecifUtil.java index 79ac236da..f40573d5a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/SpecifUtil.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/SpecifUtil.java @@ -1,15 +1,15 @@ package ru.spcex.clearing.service; public class SpecifUtil { - public static String[] splitPaymentPurpose(String paymentPurpose) { - if (paymentPurpose == null || paymentPurpose.length() < 1) return new String[0]; - int specifSize = divisionRoundUp(paymentPurpose.length(), 35); - specifSize = Math.min(specifSize, 6); - String[] res = new String[specifSize]; + public static String[] split5SegmentsBy35Symbols(String str) { + if (str == null || str.length() < 1) return new String[0]; + int size = divisionRoundUp(str.length(), 35); + size = Math.min(size, 6); + String[] res = new String[size]; for (int i = 0; i < res.length; i++) { int startIndex = i * 35; - int endIndex = Math.min(35 * (i + 1), paymentPurpose.length()); - res[i] = paymentPurpose.substring(startIndex, endIndex); + int endIndex = Math.min(35 * (i + 1), str.length()); + res[i] = str.substring(startIndex, endIndex); } return res; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf03Builder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf03Builder.java index f02fd0477..00ee57f12 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf03Builder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf03Builder.java @@ -77,7 +77,7 @@ public class Sdf03Builder { sDf03.setPay_val("RUR"); sDf03.setSum_deb(paymentInstruction.getDebitLeg_amount() != null ? paymentInstruction.getDebitLeg_amount().toString() : null); //37 sp_code varchar(2) Код назначения платежа - String[] splitPaymentPurpose = SpecifUtil.splitPaymentPurpose(paymentInstruction.getPaymentPurpose()); + String[] splitPaymentPurpose = SpecifUtil.split5SegmentsBy35Symbols(paymentInstruction.getPaymentPurpose()); for (int i = 0; i < splitPaymentPurpose.length; i++) { String specif = splitPaymentPurpose[i]; if (i == 0) { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDealsFinalMkr.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDealsFinalMkr.java index 841ebc244..e85f8240c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDealsFinalMkr.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDealsFinalMkr.java @@ -18,6 +18,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; +import ru.spcex.clearing.service.SpecifUtil; import ru.spcex.clearing.service.builder.PaymentInstructionBuilderFinalMkrDeals; import ru.spcex.clearing.session.stage.ISessionStage; import ru.spcex.clearing.session.stage.StageResult; @@ -216,11 +217,24 @@ public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage { senderSbankName = company.getShortName(); } } - sDf03.setSbanknam1(senderSbankName); - sDf03.setSbanknam2(senderSbankName); - sDf03.setSbanknam3(senderSbankName); - sDf03.setSbanknam4(senderSbankName); - sDf03.setSbanknam5(senderSbankName); + String[] bnkNmeParts = SpecifUtil.split5SegmentsBy35Symbols(senderSbankName); + for (int i = 0; i < bnkNmeParts.length; i++) { + if (i == 0) { + sDf03.setSbanknam1(bnkNmeParts[i]); + } + if (i == 1) { + sDf03.setSbanknam2(bnkNmeParts[i]); + } + if (i == 2) { + sDf03.setSbanknam3(bnkNmeParts[i]); + } + if (i == 3) { + sDf03.setSbanknam4(bnkNmeParts[i]); + } + if (i == 4) { + sDf03.setSbanknam5(bnkNmeParts[i]); + } + } sDf03.setC_acc_cred(paymentInstruction.getDebitLeg_account()); diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SpecifUtilTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SpecifUtilTest.java index a53305668..254e32488 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SpecifUtilTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SpecifUtilTest.java @@ -15,7 +15,7 @@ class SpecifUtilTest { public void testSplit() { { //40 symbols - String[] splitted = SpecifUtil.splitPaymentPurpose("0123456789012345678901234567890123456789"); + String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("0123456789012345678901234567890123456789"); Assertions.assertEquals(2, splitted.length); Assertions.assertEquals("01234567890123456789012345678901234", splitted[0]); Assertions.assertEquals("56789", splitted[1]); @@ -23,27 +23,27 @@ class SpecifUtilTest { { //40 symbols - String[] splitted = SpecifUtil.splitPaymentPurpose("01234567890123456789012345678901234"); + String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("01234567890123456789012345678901234"); Assertions.assertEquals(1, splitted.length); Assertions.assertEquals("01234567890123456789012345678901234", splitted[0]); } { //10 symbols - String[] splitted = SpecifUtil.splitPaymentPurpose("0123456789"); + String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("0123456789"); Assertions.assertEquals(1, splitted.length); Assertions.assertEquals("0123456789", splitted[0]); } { //0 symbols - String[] splitted = SpecifUtil.splitPaymentPurpose(""); + String[] splitted = SpecifUtil.split5SegmentsBy35Symbols(""); Assertions.assertEquals(0, splitted.length); } { //80 symbols - String[] splitted = SpecifUtil.splitPaymentPurpose("0123456789012345678901234567890123456789" + + String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("0123456789012345678901234567890123456789" + "0123456789012345678901234567890123456789"); Assertions.assertEquals(3, splitted.length); Assertions.assertEquals("01234567890123456789012345678901234", splitted[0]); @@ -53,7 +53,7 @@ class SpecifUtilTest { { //maximum symbols - String[] splitted = SpecifUtil.splitPaymentPurpose("01234567890123456789012345678912345" + + String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("01234567890123456789012345678912345" + "01234567890123456789012345678912345" + "01234567890123456789012345678912345" + "01234567890123456789012345678912345" +