From 33c9fd87e0285d5897d7c738acb7f7692cd6e39c Mon Sep 17 00:00:00 2001 From: AKurakin Date: Wed, 28 Jun 2023 18:47:01 +0300 Subject: [PATCH] =?UTF-8?q?account-service=20http://jira.mfd.msk:8088/brow?= =?UTF-8?q?se/CLS-361=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=A2=D0=9A=D0=A0=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TradingClearingRegistryService.java | 26 +++++++++++++++---- .../TradingClearingRegistryServiceTest.java | 18 +++++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java index a8ccb28b8..548618afb 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java @@ -16,7 +16,6 @@ import ru.clearing.classes.statics.data.company.relation.Relation; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.spcex.clearing.account.errors.AccountError; import ru.spcex.clearing.imdg.IMDGDistributedNames; -import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest; @@ -324,10 +323,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini tradingClearingRegistry.setTradingClearingRegistryPurpose(registryPurpose.getKey()); Company company = companyImdg.getSingleObjectByID(req.getCompanyId()); - String code = "%4s".formatted(company.getClearingCode()).replace(' ', '0'); - code += registryPurpose.getKey(); - if (registryPurpose == TradingClearingRegistryPurpose.C) code += tradingRegistryType + id; - else code += "AT" + id; + String code = makeCode(company.getClearingCode(), registryPurpose, tradingRegistryType, id); tradingClearingRegistry.setCode(code); Instant now = Instant.now(); @@ -345,6 +341,26 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini return null; } + protected String makeCode(String companyClearingCode, TradingClearingRegistryPurpose registryPurpose, String tradingRegistryType, Long id) { + String code; + code = companyClearingCode; + if (code.length() > 4) + code = code.substring(code.length() - 4); + code = "%4s".formatted(code).replace(' ', '0'); + code += registryPurpose.getKey(); // C / M / ... + if (registryPurpose == TradingClearingRegistryPurpose.M) { + code += "AT" + id; + } else { // C, etc + String trType = tradingRegistryType + "T"; // 2 символа + code += trType; + String sId = "%5s".formatted(id).replace(' ', '0'); + if (sId.length() > 5) + sId = sId.substring(sId.length() - 5); + code += sId; + } + return code; // 12 имволов + } + public RequestInfoUpdate tradingClearingRegistryUpdate(BaseRequest userRequest) { log.debug("TradingClearingRegistryUpdateRequest received"); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryServiceTest.java index 62d12239e..640fa8105 100644 --- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryServiceTest.java +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryServiceTest.java @@ -4,6 +4,7 @@ import org.apache.kafka.clients.consumer.MockConsumer; import org.apache.kafka.clients.producer.MockProducer; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerRecord; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; @@ -319,4 +320,21 @@ class TradingClearingRegistryServiceTest { TRADING_CLEARING_REGISTRY_MATCHER.assertMatch(resultUpdating, existTradingClearingRegistry); tradingClearingRegistryImdg.delete(resultUpdating); } + + @Test + void makeCode() { + Assertions.assertEquals("0005CAT00001", tradingClearingRegistryService.makeCode( + "5", TradingClearingRegistryPurpose.C, TradingClearingRegistryType.Owner_A.getKey(), 1L + )); + Assertions.assertEquals("0005CET00012", tradingClearingRegistryService.makeCode( + "005", TradingClearingRegistryPurpose.C, "E", 12L + )); + Assertions.assertEquals("0105CERT00012", tradingClearingRegistryService.makeCode( + "000000105", TradingClearingRegistryPurpose.C, "ER", 100012L + )); + + Assertions.assertEquals("0105MAT100012", tradingClearingRegistryService.makeCode( + "000000105", TradingClearingRegistryPurpose.M, "ER", 100012L + )); + } } \ No newline at end of file