account-service http://jira.mfd.msk:8088/browse/CLS-548
This commit is contained in:
parent
f595f0f251
commit
db00bb906f
2 changed files with 61 additions and 12 deletions
|
|
@ -23,6 +23,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||||
|
|
||||||
|
|
@ -92,14 +93,15 @@ public class AccountValidationConfig {
|
||||||
AccountError.RequiredFieldEmpty,
|
AccountError.RequiredFieldEmpty,
|
||||||
AccountError.DictionaryNotFound,
|
AccountError.DictionaryNotFound,
|
||||||
accountType -> {
|
accountType -> {
|
||||||
if (AccountType.Corr.equalsByKey(accountType.getCode())) return null;
|
if (IEnumKey.contains(accountType.getCode(), AccountType.Corr, AccountType.Info)) return null;
|
||||||
return AccountError.WrongFieldValue;
|
return AccountError.WrongFieldValue;
|
||||||
}).withMessageDecorator((causeEmpty, errorCode, fieldName, fieldValue) -> {
|
}).withMessageDecorator((causeEmpty, errorCode, fieldName, fieldValue) -> {
|
||||||
if (errorCode == AccountError.WrongFieldValue)
|
if (errorCode == AccountError.WrongFieldValue)
|
||||||
return DictionaryPresentRule.FIELD_NOT_FOUND_DECORATOR_1.decorator(causeEmpty, errorCode, fieldName, fieldValue);
|
return DictionaryPresentRule.FIELD_NOT_FOUND_DECORATOR_1.decorator(causeEmpty, errorCode, fieldName, fieldValue);
|
||||||
else
|
else
|
||||||
return DictionaryPresentRule.DICTIONARY_NOT_FOUND_DECORATOR_2.decorator(causeEmpty, errorCode, fieldName, fieldValue);
|
return DictionaryPresentRule.DICTIONARY_NOT_FOUND_DECORATOR_2.decorator(causeEmpty, errorCode, fieldName, fieldValue);
|
||||||
}),
|
}
|
||||||
|
),
|
||||||
new SameAccountValidationRule<>(AccountType.Corr, CorrespondentAccountNewRequest::getAccount)
|
new SameAccountValidationRule<>(AccountType.Corr, CorrespondentAccountNewRequest::getAccount)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
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.Account;
|
||||||
|
import ru.clearing.classes.statics.data.account.ClearingAccount;
|
||||||
|
import ru.clearing.classes.statics.data.account.DepoAccount;
|
||||||
|
import ru.clearing.classes.statics.data.account.InformationAccount;
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
import ru.clearing.classes.statics.data.company.relation.Relation;
|
||||||
import ru.spcex.clearing.account.errors.AccountError;
|
import ru.spcex.clearing.account.errors.AccountError;
|
||||||
|
|
@ -17,22 +20,15 @@ import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.CorrespondentAccountNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.CorrespondentAccountNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.CorrespondentAccountUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.CorrespondentAccountUpdateRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdf01Request;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountTerminationRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountTerminationRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.AccountSdfToStatementRequestPart;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonIdRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.serialization.LogFormatter;
|
|
||||||
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.platform.messaging.service.Status;
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
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.ClearingCategory;
|
import ru.spcex.platform.enumeration.*;
|
||||||
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.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||||
|
|
@ -44,9 +40,8 @@ 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.ArrayList;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -54,6 +49,9 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final ImdgProvider imdgProvider;
|
private final ImdgProvider imdgProvider;
|
||||||
private final Imdg<Account> accountMap;
|
private final Imdg<Account> accountMap;
|
||||||
|
private final Imdg<InformationAccount> informationAccountMap;
|
||||||
|
private final Imdg<DepoAccount> depoAccountMap;
|
||||||
|
private final Imdg<ClearingAccount> clearingAccountMap;
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryMap;
|
private final Imdg<ClearingMemberCategory> clearingMemberCategoryMap;
|
||||||
private final Imdg<Relation> relationMap;
|
private final Imdg<Relation> relationMap;
|
||||||
private final KafkaSender kafkaSender;
|
private final KafkaSender kafkaSender;
|
||||||
|
|
@ -89,6 +87,9 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
this.relationMap = imdgProvider.getImdg(
|
this.relationMap = imdgProvider.getImdg(
|
||||||
IMDGDistributedNames.Map_Relation, Relation.class
|
IMDGDistributedNames.Map_Relation, Relation.class
|
||||||
);
|
);
|
||||||
|
this.informationAccountMap = imdgProvider.getImdg(IMDGDistributedNames.Map_InformationAccount, InformationAccount.class);
|
||||||
|
this.depoAccountMap = imdgProvider.getImdg(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class);
|
||||||
|
this.clearingAccountMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
|
||||||
this.kafkaSender = kafkaSender;
|
this.kafkaSender = kafkaSender;
|
||||||
this.messageResolver = messageResolver;
|
this.messageResolver = messageResolver;
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = userRoleVerification;
|
||||||
|
|
@ -147,10 +148,56 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
Long newId = accountMap.insert(account);
|
Long newId = accountMap.insert(account);
|
||||||
|
|
||||||
|
if (AccountType.Corr.equalsByKey(account.getAccountType())) {
|
||||||
|
// default, дополнительные таблицы не требуются
|
||||||
|
} else if (AccountType.Info.equalsByKey(account.getAccountType()))
|
||||||
|
makeInfoPart(account);
|
||||||
|
else if (AccountType.Depo.equalsByKey(account.getAccountType()))
|
||||||
|
makeDepoPart(account);
|
||||||
|
else if (AccountType.Clrn.equalsByKey(account.getAccountType()))
|
||||||
|
makeClrnPart(account);
|
||||||
|
else {
|
||||||
|
log.warn("Unexpected AccountType={}. Do not create additional record to other table's", account.getAccountType());
|
||||||
|
}
|
||||||
|
|
||||||
log.debug("successfully processed, new account id {}", newId);
|
log.debug("successfully processed, new account id {}", newId);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void makeInfoPart(Account account) {
|
||||||
|
InformationAccount infoAcc = new InformationAccount();
|
||||||
|
infoAcc.setAccountId(account.getId());
|
||||||
|
Account firstAccountAntl = accountMap.getFirstObjectByFieldValues(Map.of(
|
||||||
|
"companyId", Sender.One.getId(),
|
||||||
|
"accountType", AccountType.Anlt.getKey()
|
||||||
|
));
|
||||||
|
if (firstAccountAntl == null) {
|
||||||
|
log.warn("Can not find 1 ANTL account for fill information ClearingAccountId.");
|
||||||
|
} else {
|
||||||
|
infoAcc.setClearingAccountId(firstAccountAntl.getId());
|
||||||
|
}
|
||||||
|
infoAcc.setCompanyId(account.getCompanyId());
|
||||||
|
Long infoId = informationAccountMap.insert(infoAcc);
|
||||||
|
log.debug("For account id={} make InformationAccount id={}", account.getId(), infoId);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void makeDepoPart(Account account) {
|
||||||
|
DepoAccount depoAcc = new DepoAccount();
|
||||||
|
depoAcc.setAccountId(account.getId());
|
||||||
|
depoAcc.setCompanyId(account.getCompanyId());
|
||||||
|
Long infoId = depoAccountMap.insert(depoAcc);
|
||||||
|
log.debug("For account id={} make DepoAccount id={}", account.getId(), infoId);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void makeClrnPart(Account account) {
|
||||||
|
ClearingAccount clnrAcc = new ClearingAccount();
|
||||||
|
clnrAcc.setAccountId(account.getId());
|
||||||
|
clnrAcc.setCompanyId(account.getCompanyId());
|
||||||
|
Long infoId = clearingAccountMap.insert(clnrAcc);
|
||||||
|
log.debug("For account id={} make ClearingAccount id={}", account.getId(), infoId);
|
||||||
|
}
|
||||||
|
|
||||||
public RequestInfoUpdate correspondentAccountUpdate(BaseRequest<CorrespondentAccountUpdateRequest> userRequest) {
|
public RequestInfoUpdate correspondentAccountUpdate(BaseRequest<CorrespondentAccountUpdateRequest> userRequest) {
|
||||||
log.debug("CorrespondentAccountUpdateRequest received");
|
log.debug("CorrespondentAccountUpdateRequest received");
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue