From e224a4ffb71c135c5255ca5663c9a8a908367d3e Mon Sep 17 00:00:00 2001 From: AKurakin Date: Wed, 31 May 2023 18:05:13 +0300 Subject: [PATCH] account-service http://jira.mfd.msk:8088/browse/CLS-272 ClientCodeService, TradingClearingRegistryService --- .../account/service/ClientCodeService.java | 34 +++++++++++++++++++ .../TradingClearingRegistryService.java | 4 ++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClientCodeService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClientCodeService.java index b46a83451..bd962e81b 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClientCodeService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClientCodeService.java @@ -34,6 +34,7 @@ import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.error.ClearingBaseException; import ru.spcex.platform.utils.log.ExceptionUtils; @@ -111,6 +112,33 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean } + /** + * Проверки + * 3.5.1 если не была найдена запись в tradingClearingRegistry по companyId, moneyAccountId, depoAccountId и tradingClearingRegistryType=B (п 3.5.1) + * 3.5.2 если не заполнены поля moneyAccountId ИЛИ moneyAccountId и depoAccountId + * @param userRequest + * @param moneyAccountId req.getMoneyAccountId() + * @param depoAccountId req.getDepoAccountId() + * @param companyId req.getCompanyId() + * @return + */ + RequestInfoUpdate crossValidate(BaseRequest userRequest, Long moneyAccountId, Long depoAccountId, Long companyId) { + if (moneyAccountId == null) { // Если не заполнены moneyAccountId ИЛИ moneyAccountId и depoAccountId + EnumMessage error = null; + if (companyId == null) { + error = new EnumMessage(AccountError.RequiredFieldEmpty, "companyId"); + } else { + TradingClearingRegistry tcr = tradingClearingRegistryMap.getSingleObjectByFieldValues(Map.of("companyId", companyId)); + if (tcr==null) { + error=new EnumMessage(AccountError.TradingClearingRegistryNotFound, companyId); + } + } + if (error != null) { + return requestHelper.makeErrorResponse(userRequest, error); + } + } + return null; + } protected RequestInfoUpdate clientCodeNew(BaseRequest userRequest) { log.debug("ClientCodeNewRequest received {}", userRequest.getId()); @@ -122,6 +150,9 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean if (requestInfoUpdate != null) return requestInfoUpdate; ClientCodeNewRequest req = userRequest.getRequestPayload(); + // дополнительная проверка + requestInfoUpdate = crossValidate(userRequest, req.getMoneyAccountId(), req.getDepoAccountId(), req.getCompanyId()); + if (requestInfoUpdate != null) return requestInfoUpdate; boolean doCreateTCR = checkNeedCreateTCR(req.getCompanyId(), req.getMoneyAccountId(), req.getDepoAccountId()); if (doCreateTCR) { @@ -155,6 +186,9 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean ClientCodeNewRequest req = userRequest.getRequestPayload(); + // дополнительная проверка + requestInfoUpdate = crossValidate(userRequest, req.getMoneyAccountId(), req.getDepoAccountId(), req.getCompanyId()); + if (requestInfoUpdate != null) return requestInfoUpdate; boolean doCreateTCR = checkNeedCreateTCR(req.getCompanyId(), req.getMoneyAccountId(), req.getDepoAccountId()); if (doCreateTCR) { 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 152894df1..8f30024d3 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 @@ -312,7 +312,9 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini tradingClearingRegistry.setStatus(ServiceStatus.Active.getKey()); String tradingRegistryType; - if (depoAccount != null) { + if (req.getTradingClearingRegistryType()!=null) { + tradingRegistryType = req.getTradingClearingRegistryType(); + } else if (depoAccount != null) { tradingRegistryType = depoAccount.getDepoAccountType(); } else { if (clearingAccount != null) tradingRegistryType = clearingAccount.getClearingAccountType();