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 fba496649..5c0774a12 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 @@ -24,7 +24,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.clearing.CreateRegistryRe import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest; import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryUpdateRequest; -import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.reports.NotificationRequest; import ru.spcex.clearing.platform.messaging.serialization.LogFormatter; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; @@ -35,8 +35,6 @@ import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; 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.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.validation.IValidator; @@ -65,6 +63,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini private final Function tradingClearingRegistryUpdateRequestValidator; private final RequestHelper requestHelper; private final Function tradingClearingRegistryNewRequestValidator; + private final Function tradingClearingRegistryAutoNewRequestValidator; private final Function tradingClearingRegistryBlockRequestValidator; private final IMessageResolver messageResolver; @@ -91,7 +90,6 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini this.validationHelper = validationHelper; this.userRoleVerification = userRoleVerification; this.requestHelper = requestHelper; - this.tradingClearingRegistryNewRequestValidator = tradingClearingRegistryNewRequestValidator; this.tradingClearingRegistryImdg = imdgProvider.getImdg( IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class ); @@ -101,6 +99,8 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); this.relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); + this.tradingClearingRegistryNewRequestValidator = tradingClearingRegistryNewRequestValidator; + this.tradingClearingRegistryAutoNewRequestValidator = tradingClearingRegistryNewRequestValidator; // без relation. this.tradingClearingRegistryUpdateRequestValidator = tradingClearingRegistryUpdateRequestValidator; this.tradingClearingRegistryBlockRequestValidator = tradingClearingRegistryBlockRequestValidator; this.messageResolver = messageResolver; @@ -128,7 +128,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); if (requestInfoUpdate != null) return requestInfoUpdate; - requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, tradingClearingRegistryNewRequestValidator); + requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, tradingClearingRegistryAutoNewRequestValidator); if (requestInfoUpdate != null) return requestInfoUpdate; TradingClearingRegistryNewRequest req = userRequest.getRequestPayload(); @@ -163,64 +163,6 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini req.getCompanyId()); } } - Relation relation = relationImdg.getSingleObjectByFieldValues(Map.of("consumerId", req.getCompanyId())); - if (ru.spcex.platform.enumeration.Service.MKR.equalsByKey(relation.getService())) { - TradingClearingRegistry registry = tradingClearingRegistryImdg.getSingleObjectByFieldValues(Map.of("companyId", req.getCompanyId())); - if (registry != null) { - return requestHelper.makeErrorResponse(userRequest, - AccountError.TradingClearingRegistryAlreadyExist, - req.getCompanyId(), - registry.getId()); - } - DepoAccount depoAccountForCheck = depoAccountImdg.getSingleObjectByFieldValues(Map.of("companyId", req.getCompanyId())); - if (depoAccountForCheck == null) - return requestHelper.makeErrorResponse(userRequest, AccountError.DepoAccountNotFound, req.getCompanyId()); - } else if (ru.spcex.platform.enumeration.Service.FOND.equalsByKey(relation.getService())) { - if (AccountType.Info.equalsByKey(accountMain.getStatus())) { - TradingClearingRegistry registry = tradingClearingRegistryImdg.getSingleObjectByFieldValues(Map.of( - "companyId", req.getCompanyId(), - "tradingClearingRegistryType", TradingClearingRegistryPurpose.M.getKey() - )); - if (registry != null) { - return requestHelper.makeErrorResponse(userRequest, - AccountError.TradingClearingRegistryAlreadyExist, - req.getCompanyId(), - registry.getId()); - } - DepoAccount depoAccountForCheck = depoAccountImdg.getSingleObjectByFieldValues(Map.of("companyId", req.getCompanyId())); - if (depoAccountForCheck == null) - return requestHelper.makeErrorResponse(userRequest, AccountError.DepoAccountNotFound, req.getCompanyId()); - } else if (AccountType.Clrn.equalsByKey(accountMain.getStatus())) { - ImdgPredicateBuilder imdgPredicateBuilder = tradingClearingRegistryImdg.predicateBuilder(); - ImdgPredicate predicate = imdgPredicateBuilder.and( - imdgPredicateBuilder.equals("companyId", req.getCompanyId()), - imdgPredicateBuilder.or( - imdgPredicateBuilder.equals("tradingClearingRegistryPurpose", TradingClearingRegistryPurpose.M.getKey()), - imdgPredicateBuilder.equals("tradingClearingRegistryPurpose", TradingClearingRegistryPurpose.C.getKey()) - ) - ); - Collection registry = tradingClearingRegistryImdg.getCollectionObjectsByPredicate(predicate); - if (!registry.isEmpty()) { - return requestHelper.makeErrorResponse(userRequest, - AccountError.TradingClearingRegistryAlreadyExist, - req.getCompanyId(), - registry.iterator().next().getId()); - } - DepoAccount depoAccountForCheck = depoAccountImdg.getSingleObjectByFieldValues(Map.of("companyId", req.getCompanyId())); - if (depoAccountForCheck == null) { - return requestHelper.makeErrorResponse(userRequest, AccountError.DepoAccountNotFound, req.getCompanyId()); - } - } else if (AccountType.Depo.equalsByKey(accountMain.getStatus())) { - InformationAccount infoAccountForCheck = informationAccountImdg.getSingleObjectByFieldValues( - Map.of("companyId", req.getCompanyId()) - ); - ClearingAccount clearingAccountForCheck = clearingAccountImdg.getSingleObjectByFieldValues( - Map.of("companyId", req.getCompanyId()) - ); - if (infoAccountForCheck == null && clearingAccountForCheck == null) - return requestHelper.makeErrorResponse(userRequest, AccountError.MoneyAccountNotFound, req.getCompanyId()); - } - } List activeStatuses = Arrays.asList(ServiceStatus.Active.getKey(), ServiceStatus.Reopened.getKey()); String status = null; @@ -428,19 +370,16 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini protected void sendNotificationToClearingSvc(TradingClearingRegistry tradingClearingRegistry) { CreateRegistryRequest request = new CreateRegistryRequest(); request.setCompanyId(tradingClearingRegistry.getCompanyId()); - //todo Надо ли проверять существование регистров? log.debug("Send message to kafka \"{}\": {}", Consts.REGISTRY_NEW, LogFormatter.toStringWrapper(request)); kafkaSender.sendRequestToQueue(Consts.REGISTRY_NEW, request); } /** - * todo report-service сообщение на формирование уведомления о создании нового ТКР + * report-service сообщение на формирование уведомления о создании нового ТКР */ protected void sendNotificationToReportSvc(TradingClearingRegistry tradingClearingRegistry) { - log.debug("Todo report destination: new TCR (не реализовано)"); -// ReportRequest request = new ReportRequest(); -// request.setReportId(ReportType.NEW_TRADING_CLEARING_REGISTRY); -// request.setTradingClearingRegistryId(tradingClearingRegistry.getId()); -// log.debug("Send message to kafka \"{}\": {}", Consts.CREATE_REPORT_FOR_TCR, LogFormatter.toStringWrapper(request)); -// kafkaSender.sendRequestToQueue(Consts.CREATE_REPORT_FOR_TCR, request); + NotificationRequest request = new NotificationRequest(); + request.setConsumerId(tradingClearingRegistry.getCompanyId()); + log.debug("Send message to kafka \"{}\": {}", Consts.CREATE_NOTIFICATION_NTCR, LogFormatter.toStringWrapper(request)); + kafkaSender.sendRequestToQueue(Consts.CREATE_NOTIFICATION_NTCR, request); } }