http://jira.mfd.msk:8088/browse/CLS-271 TradingClearingRegistryService
This commit is contained in:
parent
71203b08e7
commit
9d1a378447
3 changed files with 62 additions and 98 deletions
|
|
@ -6,7 +6,6 @@ import ru.clearing.classes.statics.data.account.Account;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||||
import ru.clearing.platform.dictionary.ServiceStatusDictionary;
|
import ru.clearing.platform.dictionary.ServiceStatusDictionary;
|
||||||
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
|
||||||
import ru.spcex.clearing.account.errors.AccountError;
|
import ru.spcex.clearing.account.errors.AccountError;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
|
|
@ -17,7 +16,6 @@ import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
||||||
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
import ru.spcex.platform.enumeration.ServiceStatus;
|
import ru.spcex.platform.enumeration.ServiceStatus;
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
@ -29,70 +27,6 @@ import java.util.function.Function;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
public class TradingClearingRegistryValidationConfig {
|
public class TradingClearingRegistryValidationConfig {
|
||||||
@Bean("tradingClearingRegistryAutoNewRequest")
|
|
||||||
public Function<TradingClearingRegistryNewRequest, IValidator> tradingClearingRegistryAutoNewRequestValidator(
|
|
||||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
|
||||||
) {
|
|
||||||
return tradingClearingRegistryAutoNewRequest -> {
|
|
||||||
ImdgValidationContext<TradingClearingRegistryNewRequest> context = new ImdgValidationContext<>();
|
|
||||||
context.setValidatedObject(tradingClearingRegistryAutoNewRequest);
|
|
||||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Company);
|
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Account);
|
|
||||||
addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary);
|
|
||||||
return new ValidatorImpl<>(context,
|
|
||||||
IdPresentRule.instance("companyId",
|
|
||||||
TradingClearingRegistryNewRequest::getCompanyId,
|
|
||||||
IMDGDistributedNames.Map_Company,
|
|
||||||
Company.class,
|
|
||||||
AccountError.RequiredFieldEmpty,
|
|
||||||
AccountError.CompanyNotFound),
|
|
||||||
FieldRequiredRule.instance("moneyAccountId",
|
|
||||||
TradingClearingRegistryNewRequest::getMoneyAccountId,
|
|
||||||
AccountError.RequiredFieldEmpty,
|
|
||||||
moneyAccountId -> {
|
|
||||||
Imdg<Account> accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class);
|
|
||||||
Account account = accountImdg.getSingleObjectByID(moneyAccountId);
|
|
||||||
if (account == null) return AccountError.AccountNotFound;
|
|
||||||
return null;
|
|
||||||
}),
|
|
||||||
FieldRequiredRule.instance("depoAccountId",
|
|
||||||
TradingClearingRegistryNewRequest::getDepoAccountId,
|
|
||||||
AccountError.RequiredFieldEmpty,
|
|
||||||
false,
|
|
||||||
depoAccountId -> {
|
|
||||||
Imdg<Account> accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class);
|
|
||||||
Account account = accountImdg.getSingleObjectByID(depoAccountId);
|
|
||||||
if (account == null) return AccountError.AccountNotFound;
|
|
||||||
return null;
|
|
||||||
}),
|
|
||||||
DictionaryPresentRule.instance("status",
|
|
||||||
TradingClearingRegistryNewRequest::getStatus,
|
|
||||||
IMDGDistributedNames.Map_ServiceStatusDictionary,
|
|
||||||
ServiceStatusDictionary.class,
|
|
||||||
AccountError.RequiredFieldEmpty,
|
|
||||||
AccountError.WrongFieldValue,
|
|
||||||
false,
|
|
||||||
statusValue -> {
|
|
||||||
Imdg<Account> accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class);
|
|
||||||
Long moneyAccountId = tradingClearingRegistryAutoNewRequest.getMoneyAccountId();
|
|
||||||
Long depoAccountId = tradingClearingRegistryAutoNewRequest.getDepoAccountId();
|
|
||||||
Account moneyAccount = accountImdg.getSingleObjectByID(moneyAccountId);
|
|
||||||
Account depoAccount = depoAccountId != null ? accountImdg.getSingleObjectByID(depoAccountId) : null;
|
|
||||||
if (
|
|
||||||
(depoAccount != null && (ServiceStatus.Active.equalsByKey(depoAccount.getStatus()) || ServiceStatus.Reopened.equalsByKey(depoAccount.getStatus()))) &&
|
|
||||||
(ServiceStatus.Active.equalsByKey(moneyAccount.getStatus()) || ServiceStatus.Reopened.equalsByKey(moneyAccount.getStatus()))
|
|
||||||
) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
String statusCode = statusValue.getCode();
|
|
||||||
if (WorkflowStatus.Active.equalsByKey(statusCode)) return null;
|
|
||||||
return AccountError.WrongFieldValue;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean("tradingClearingRegistryNewRequest")
|
@Bean("tradingClearingRegistryNewRequest")
|
||||||
public Function<TradingClearingRegistryNewRequest, IValidator> tradingClearingRegistryNewRequestValidator(
|
public Function<TradingClearingRegistryNewRequest, IValidator> tradingClearingRegistryNewRequestValidator(
|
||||||
|
|
@ -104,7 +38,7 @@ public class TradingClearingRegistryValidationConfig {
|
||||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Company);
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Account);
|
addImdg.accept(IMDGDistributedNames.Map_Account);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary);
|
addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
IdPresentRule.instance("companyId",
|
IdPresentRule.instance("companyId",
|
||||||
TradingClearingRegistryNewRequest::getCompanyId,
|
TradingClearingRegistryNewRequest::getCompanyId,
|
||||||
|
|
@ -131,6 +65,8 @@ public class TradingClearingRegistryValidationConfig {
|
||||||
if (account == null) return AccountError.AccountNotFound;
|
if (account == null) return AccountError.AccountNotFound;
|
||||||
return null;
|
return null;
|
||||||
}),
|
}),
|
||||||
|
// todo на будущее: нужна ли эта проверка, если при добавлении регистра статус заполняется автоматически
|
||||||
|
// на основе полей moneyAccountId и depoAccountId, то же касается TradingClearingRegistryNewRequest, нужно ли там поле status
|
||||||
DictionaryPresentRule.instance("status",
|
DictionaryPresentRule.instance("status",
|
||||||
TradingClearingRegistryNewRequest::getStatus,
|
TradingClearingRegistryNewRequest::getStatus,
|
||||||
IMDGDistributedNames.Map_ServiceStatusDictionary,
|
IMDGDistributedNames.Map_ServiceStatusDictionary,
|
||||||
|
|
@ -155,7 +91,7 @@ public class TradingClearingRegistryValidationConfig {
|
||||||
ImdgValidationContext<TradingClearingRegistryUpdateRequest> context = new ImdgValidationContext<>();
|
ImdgValidationContext<TradingClearingRegistryUpdateRequest> context = new ImdgValidationContext<>();
|
||||||
context.setValidatedObject(tradingClearingRegistryUpdateRequest);
|
context.setValidatedObject(tradingClearingRegistryUpdateRequest);
|
||||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary);
|
addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_TradingClearingRegistry);
|
addImdg.accept(IMDGDistributedNames.Map_TradingClearingRegistry);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
IdPresentRule.instance("id",
|
IdPresentRule.instance("id",
|
||||||
|
|
@ -166,8 +102,8 @@ public class TradingClearingRegistryValidationConfig {
|
||||||
AccountError.TradingClearingRegistryNotFound),
|
AccountError.TradingClearingRegistryNotFound),
|
||||||
DictionaryPresentRule.instance("status",
|
DictionaryPresentRule.instance("status",
|
||||||
TradingClearingRegistryUpdateRequest::getStatus,
|
TradingClearingRegistryUpdateRequest::getStatus,
|
||||||
IMDGDistributedNames.Map_WorkflowStatusDictionary,
|
IMDGDistributedNames.Map_ServiceStatusDictionary,
|
||||||
WorkflowStatusDictionary.class,
|
ServiceStatusDictionary.class,
|
||||||
AccountError.RequiredFieldEmpty,
|
AccountError.RequiredFieldEmpty,
|
||||||
AccountError.WrongFieldValue,
|
AccountError.WrongFieldValue,
|
||||||
false)
|
false)
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,12 @@ import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.clearing.classes.statics.data.account.Account;
|
||||||
import ru.clearing.classes.statics.data.account.ClearingAccount;
|
import ru.clearing.classes.statics.data.account.ClearingAccount;
|
||||||
import ru.clearing.classes.statics.data.account.DepoAccount;
|
import ru.clearing.classes.statics.data.account.DepoAccount;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
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.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
|
|
@ -19,15 +21,20 @@ import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingR
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryUpdateRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
import ru.spcex.platform.enumeration.ServiceStatus;
|
||||||
import ru.spcex.platform.enumeration.TradingClearingRegistryPurpose;
|
import ru.spcex.platform.enumeration.TradingClearingRegistryPurpose;
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
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.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -40,23 +47,27 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
|
||||||
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
||||||
private final Imdg<DepoAccount> depoAccountImdg;
|
private final Imdg<DepoAccount> depoAccountImdg;
|
||||||
private final Imdg<ClearingAccount> clearingAccountImdg;
|
private final Imdg<ClearingAccount> clearingAccountImdg;
|
||||||
|
private final Imdg<Account> accountImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
||||||
private final Function<TradingClearingRegistryUpdateRequest, IValidator> tradingClearingRegistryUpdateRequestValidator;
|
private final Function<TradingClearingRegistryUpdateRequest, IValidator> tradingClearingRegistryUpdateRequestValidator;
|
||||||
private final Function<TradingClearingRegistryNewRequest, IValidator> tradingClearingRegistryNewRequestValidator;
|
private final Function<TradingClearingRegistryNewRequest, IValidator> tradingClearingRegistryNewRequestValidator;
|
||||||
private final Function<CommonDeleteRequest, IValidator> tradingClearingRegistryBlockRequestValidator;
|
private final Function<CommonDeleteRequest, IValidator> tradingClearingRegistryBlockRequestValidator;
|
||||||
|
|
||||||
|
private final IMessageResolver messageResolver;
|
||||||
|
|
||||||
public TradingClearingRegistryService(Consumer<String, Object> kafkaQueue,
|
public TradingClearingRegistryService(Consumer<String, Object> kafkaQueue,
|
||||||
Producer<String, Object> kafkaProducer,
|
Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider,
|
ImdgProvider imdgProvider,
|
||||||
ValidationHelper validationHelper,
|
ValidationHelper validationHelper,
|
||||||
UserRoleVerification userRoleVerification,
|
UserRoleVerification userRoleVerification,
|
||||||
|
IMessageResolver messageResolver,
|
||||||
@Qualifier("tradingClearingRegistryNewRequest")
|
@Qualifier("tradingClearingRegistryNewRequest")
|
||||||
Function<TradingClearingRegistryNewRequest, IValidator> tradingClearingRegistryNewRequestValidator,
|
Function<TradingClearingRegistryNewRequest, IValidator> tradingClearingRegistryNewRequestValidator,
|
||||||
@Qualifier("tradingClearingRegistryUpdateRequest")
|
@Qualifier("tradingClearingRegistryUpdateRequest")
|
||||||
Function<TradingClearingRegistryUpdateRequest, IValidator> tradingClearingRegistryUpdateRequestValidator,
|
Function<TradingClearingRegistryUpdateRequest, IValidator> tradingClearingRegistryUpdateRequestValidator,
|
||||||
@Qualifier("tradingClearingRegistryBlockRequest")
|
@Qualifier("tradingClearingRegistryBlockRequest")
|
||||||
Function<CommonDeleteRequest, IValidator> tradingClearingRegistryBlockRequestValidator) {
|
Function<CommonDeleteRequest, IValidator> tradingClearingRegistryBlockRequestValidator) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.validationHelper = validationHelper;
|
this.validationHelper = validationHelper;
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = userRoleVerification;
|
||||||
|
|
@ -67,16 +78,15 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
|
||||||
this.depoAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class);
|
this.depoAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class);
|
||||||
this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
|
this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
|
||||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
|
||||||
this.tradingClearingRegistryUpdateRequestValidator = tradingClearingRegistryUpdateRequestValidator;
|
this.tradingClearingRegistryUpdateRequestValidator = tradingClearingRegistryUpdateRequestValidator;
|
||||||
this.tradingClearingRegistryBlockRequestValidator = tradingClearingRegistryBlockRequestValidator;
|
this.tradingClearingRegistryBlockRequestValidator = tradingClearingRegistryBlockRequestValidator;
|
||||||
|
this.messageResolver = messageResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
init();
|
init();
|
||||||
callback(TradingClearingRegistryNewRequest.class)
|
|
||||||
.setConsumer(this::tradingClearingRegistryAutoNew)
|
|
||||||
.forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_AUTO_NEW, callbacks::put);
|
|
||||||
callback(TradingClearingRegistryNewRequest.class)
|
callback(TradingClearingRegistryNewRequest.class)
|
||||||
.setConsumer(this::tradingClearingRegistryNew)
|
.setConsumer(this::tradingClearingRegistryNew)
|
||||||
.forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_NEW, callbacks::put);
|
||||||
|
|
@ -88,18 +98,8 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
|
||||||
.forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK, callbacks::put);
|
.forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK, callbacks::put);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RequestInfoUpdate tradingClearingRegistryAutoNew(BaseRequest<TradingClearingRegistryNewRequest> userRequest) {
|
|
||||||
log.debug("TradingClearingRegistryAutoNewRequest received");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Long id = null;
|
|
||||||
log.debug("successfully processed, id {}", id);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate tradingClearingRegistryNew(BaseRequest<TradingClearingRegistryNewRequest> userRequest) {
|
public RequestInfoUpdate tradingClearingRegistryNew(BaseRequest<TradingClearingRegistryNewRequest> userRequest) {
|
||||||
log.debug("TradingClearingRegistryNewRequest received");
|
log.debug("TradingClearingRegistryAutoNewRequest received");
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
|
|
@ -114,18 +114,46 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
|
||||||
tradingClearingRegistry.setCompanyId(req.getCompanyId());
|
tradingClearingRegistry.setCompanyId(req.getCompanyId());
|
||||||
tradingClearingRegistry.setMoneyAccountId(req.getMoneyAccountId());
|
tradingClearingRegistry.setMoneyAccountId(req.getMoneyAccountId());
|
||||||
tradingClearingRegistry.setDepoAaccountId(req.getDepoAccountId());
|
tradingClearingRegistry.setDepoAaccountId(req.getDepoAccountId());
|
||||||
tradingClearingRegistry.setStatus(WorkflowStatus.Active.getKey());
|
|
||||||
|
|
||||||
// todo tradingClearingRegistryType из соответствующего параметра очереди но в запросе он не фигурирует
|
DepoAccount depoAccount = req.getDepoAccountId() != null ? depoAccountImdg.getSingleObjectByID(req.getDepoAccountId()) : null;
|
||||||
// пока оставил вычисление аналогичное автоматическому добавлению ТКР
|
Account depoAccountMain = depoAccount != null ? accountImdg.getSingleObjectByID(depoAccount.getAccountId()) : null;
|
||||||
String tradingRegistryType;
|
|
||||||
if (req.getDepoAccountId() != null) {
|
ClearingAccount clearingAccount = clearingAccountImdg.getSingleObjectByID(req.getMoneyAccountId());
|
||||||
DepoAccount depoAccount = depoAccountImdg.getSingleObjectByID(req.getDepoAccountId());
|
Account clearingAccountMain = accountImdg.getSingleObjectByID(clearingAccount.getAccountId());
|
||||||
tradingRegistryType = depoAccount.getDepoAccountType();
|
|
||||||
|
List<String> activeStatuses = Arrays.asList(ServiceStatus.Active.getKey(), ServiceStatus.Reopened.getKey());
|
||||||
|
String status = null;
|
||||||
|
if (depoAccountMain != null) {
|
||||||
|
if (activeStatuses.contains(depoAccountMain.getStatus()) && activeStatuses.contains(clearingAccountMain.getStatus()))
|
||||||
|
status = ServiceStatus.Active.getKey();
|
||||||
|
if (depoAccountMain.getStatus().equals(ServiceStatus.Blocked.getKey()) || clearingAccountMain.getStatus().equals(ServiceStatus.Blocked.getKey()))
|
||||||
|
status = ServiceStatus.Blocked.getKey();
|
||||||
|
if (depoAccountMain.getStatus().equals(ServiceStatus.Suspended.getKey()) || clearingAccountMain.getStatus().equals(ServiceStatus.Suspended.getKey()))
|
||||||
|
status = ServiceStatus.Suspended.getKey();
|
||||||
|
if (depoAccountMain.getStatus().equals(ServiceStatus.Closed.getKey()) || clearingAccountMain.getStatus().equals(ServiceStatus.Closed.getKey()))
|
||||||
|
status = ServiceStatus.Closed.getKey();
|
||||||
} else {
|
} else {
|
||||||
ClearingAccount clearingAccount = clearingAccountImdg.getSingleObjectByID(req.getMoneyAccountId());
|
if (activeStatuses.contains(clearingAccountMain.getStatus()))
|
||||||
tradingRegistryType = clearingAccount.getClearingAccountType();
|
status = ServiceStatus.Active.getKey();
|
||||||
|
if (clearingAccountMain.getStatus().equals(ServiceStatus.Blocked.getKey()))
|
||||||
|
status = ServiceStatus.Blocked.getKey();
|
||||||
|
if (clearingAccountMain.getStatus().equals(ServiceStatus.Suspended.getKey()))
|
||||||
|
status = ServiceStatus.Suspended.getKey();
|
||||||
|
if (clearingAccountMain.getStatus().equals(ServiceStatus.Closed.getKey()))
|
||||||
|
status = ServiceStatus.Closed.getKey();
|
||||||
}
|
}
|
||||||
|
if (status == null) {
|
||||||
|
String errMsg = messageResolver.resolve(new EnumMessage(AccountError.WrongFieldValue, req.getMoneyAccountId()));
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errMsg)
|
||||||
|
.setId(userRequest.getId());
|
||||||
|
}
|
||||||
|
tradingClearingRegistry.setStatus(status);
|
||||||
|
|
||||||
|
String tradingRegistryType;
|
||||||
|
if (depoAccount != null) tradingRegistryType = depoAccount.getDepoAccountType();
|
||||||
|
else tradingRegistryType = clearingAccount.getClearingAccountType();
|
||||||
tradingClearingRegistry.setTradingClearingRegistryType(tradingRegistryType);
|
tradingClearingRegistry.setTradingClearingRegistryType(tradingRegistryType);
|
||||||
|
|
||||||
TradingClearingRegistryPurpose registryPurpose;
|
TradingClearingRegistryPurpose registryPurpose;
|
||||||
|
|
@ -134,7 +162,8 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
|
||||||
tradingClearingRegistry.setTradingClearingRegistryPurpose(registryPurpose.getKey());
|
tradingClearingRegistry.setTradingClearingRegistryPurpose(registryPurpose.getKey());
|
||||||
|
|
||||||
Company company = companyImdg.getSingleObjectByID(req.getCompanyId());
|
Company company = companyImdg.getSingleObjectByID(req.getCompanyId());
|
||||||
String code = company.getClearingCode() + registryPurpose.getKey() + registryPurpose;
|
String code = "%4s".formatted(company.getClearingCode()).replace(' ', '0');
|
||||||
|
code += registryPurpose.getKey();
|
||||||
if (registryPurpose == TradingClearingRegistryPurpose.C) code += tradingRegistryType + id;
|
if (registryPurpose == TradingClearingRegistryPurpose.C) code += tradingRegistryType + id;
|
||||||
else code += "AT" + id;
|
else code += "AT" + id;
|
||||||
tradingClearingRegistry.setCode(code);
|
tradingClearingRegistry.setCode(code);
|
||||||
|
|
@ -182,7 +211,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini
|
||||||
CommonDeleteRequest req = userRequest.getRequestPayload();
|
CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||||
TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByID(req.getId());
|
TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByID(req.getId());
|
||||||
|
|
||||||
tradingClearingRegistry.setStatus(WorkflowStatus.Blocked.getKey());
|
tradingClearingRegistry.setStatus(ServiceStatus.Blocked.getKey());
|
||||||
|
|
||||||
tradingClearingRegistryImdg.update(tradingClearingRegistry);
|
tradingClearingRegistryImdg.update(tradingClearingRegistry);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,6 @@ public interface Consts {
|
||||||
String DESTINATION_CLIENT_CODE_UPDATE = "client-code-update";
|
String DESTINATION_CLIENT_CODE_UPDATE = "client-code-update";
|
||||||
String DESTINATION_CLIENT_CODE_DELETE = "client-code-delete";
|
String DESTINATION_CLIENT_CODE_DELETE = "client-code-delete";
|
||||||
|
|
||||||
String DESTINATION_TRADING_CLEARING_REGISTRY_AUTO_NEW = "trading-clearing-registry-auto-new";
|
|
||||||
String DESTINATION_TRADING_CLEARING_REGISTRY_NEW = "trading-clearing-registry-new";
|
String DESTINATION_TRADING_CLEARING_REGISTRY_NEW = "trading-clearing-registry-new";
|
||||||
String DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE = "trading-clearing-registry-update";
|
String DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE = "trading-clearing-registry-update";
|
||||||
String DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK = "trading-clearing-registry-block";
|
String DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK = "trading-clearing-registry-block";
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue