Compare commits
No commits in common. "29dc91339dc929a26e3804bf9162dcfa213137ff" and "cc95a67759bb479e813e2396cd1bf2466f3a0ba9" have entirely different histories.
29dc91339d
...
cc95a67759
69 changed files with 1800 additions and 7429 deletions
|
|
@ -10,11 +10,9 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.Assert;
|
|
||||||
import ru.clearing.classes.statics.data.account.Account;
|
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.spcex.clearing.account.errors.AccountError;
|
|
||||||
import ru.spcex.clearing.account.model.ValidationResult;
|
import ru.spcex.clearing.account.model.ValidationResult;
|
||||||
import ru.spcex.clearing.account.service.v2.GatewayRequestCreator;
|
import ru.spcex.clearing.account.service.v2.GatewayRequestCreator;
|
||||||
import ru.spcex.clearing.account.service.v2.facade.ClientCodeFacade;
|
import ru.spcex.clearing.account.service.v2.facade.ClientCodeFacade;
|
||||||
|
|
@ -28,8 +26,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.account.TkrAccount;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.TkrAccountsGatewayRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.TkrAccountsGatewayRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.gateway.SendTkrRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.gateway.SendTkrRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.gateway.Tkr;
|
import ru.spcex.clearing.platform.messaging.domain.cud.gateway.Tkr;
|
||||||
import ru.spcex.clearing.platform.messaging.logic.response.DefaultResponses;
|
|
||||||
import ru.spcex.clearing.platform.messaging.logic.response.PayloadInfo;
|
|
||||||
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;
|
||||||
|
|
@ -78,15 +74,15 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali
|
||||||
.forDestination(Consts.DESTINATION_CLIENT_CODE_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_CLIENT_CODE_NEW, callbacks::put);
|
||||||
//from gateway requests
|
//from gateway requests
|
||||||
callback(TkrAccountsGatewayRequest.class)
|
callback(TkrAccountsGatewayRequest.class)
|
||||||
.setConsumer(this::clientCodeNewFromGateway)
|
.setFunction(this::clientCodeNewFromGateway)
|
||||||
.forDestination(Consts.DESTINATION_CLIENT_CODE_NEW_FROM_GATEWAY, callbacks::put);
|
.forDestination(Consts.DESTINATION_CLIENT_CODE_NEW_FROM_GATEWAY, callbacks::put);
|
||||||
callback(TkrAccountsGatewayRequest.class)
|
callback(TkrAccountsGatewayRequest.class)
|
||||||
.setConsumer(this::clientCodeNewFromGateway)
|
.setFunction(this::clientCodeNewFromGateway)
|
||||||
.forDestination(Consts.DESTINATION_CLIENT_CODE_UPDATE_FROM_GATEWAY, callbacks::put);
|
.forDestination(Consts.DESTINATION_CLIENT_CODE_UPDATE_FROM_GATEWAY, callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clientCodeNewFromGateway(BaseRequest<TkrAccountsGatewayRequest> tkrRequest) {
|
private RequestInfoUpdate clientCodeNewFromGateway(BaseRequest<TkrAccountsGatewayRequest> tkrRequest) {
|
||||||
clientCodeFacade.lock();
|
clientCodeFacade.lock();
|
||||||
//валидация запроса
|
//валидация запроса
|
||||||
TkrAccountsGatewayRequest gatewayRequest = tkrRequest.getRequestPayload();
|
TkrAccountsGatewayRequest gatewayRequest = tkrRequest.getRequestPayload();
|
||||||
|
|
@ -117,10 +113,12 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali
|
||||||
.toList();
|
.toList();
|
||||||
sendTkrRequest.setTkrs(tkrs);
|
sendTkrRequest.setTkrs(tkrs);
|
||||||
kafkaSender.sendRequestToQueue(Consts.ACCOUNTS_TO_GATEWAY, sendTkrRequest);
|
kafkaSender.sendRequestToQueue(Consts.ACCOUNTS_TO_GATEWAY, sendTkrRequest);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//unwrap запроса
|
//unwrap запроса
|
||||||
for (Map.Entry<TkrAccount, ValidationResult> entry : accountsAfterValidation.entrySet()) {
|
for (Map.Entry<TkrAccount, ValidationResult> entry : accountsAfterValidation.entrySet()) {
|
||||||
|
ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest();
|
||||||
TkrAccount tkrAccount = entry.getKey();
|
TkrAccount tkrAccount = entry.getKey();
|
||||||
ValidationResult validationResult = entry.getValue();
|
ValidationResult validationResult = entry.getValue();
|
||||||
log.debug("Creating new clientCode by tkr account: {}", tkrAccount.getClientCode());
|
log.debug("Creating new clientCode by tkr account: {}", tkrAccount.getClientCode());
|
||||||
|
|
@ -131,20 +129,18 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali
|
||||||
Long depoAccountId = depoAccount.map(Account::getId).orElse(null);
|
Long depoAccountId = depoAccount.map(Account::getId).orElse(null);
|
||||||
Map<String, Account> accountByCurrency = validator.getStored(ClientCodeStoreObjects.MAPPED_TO_CURRENCY_ACCOUNTS);
|
Map<String, Account> accountByCurrency = validator.getStored(ClientCodeStoreObjects.MAPPED_TO_CURRENCY_ACCOUNTS);
|
||||||
|
|
||||||
Account moneyAccount = accountByCurrency.get(CurrencyCode.RUB.getKey());
|
clientCodeNewRequest.setCompanyId(company.getId());
|
||||||
|
clientCodeNewRequest.setCode(tkrAccount.getClientCode());
|
||||||
|
clientCodeNewRequest.setDepoAccountId(depoAccountId);
|
||||||
|
Account moneyAccount = accountByCurrency.get(CurrencyCode.RUB);
|
||||||
|
clientCodeNewRequest.setMoneyAccountId(moneyAccount.getId());
|
||||||
|
|
||||||
List<Long> foreignCurrencyList = accountByCurrency.entrySet()
|
List<Long> foreignCurrencyList = accountByCurrency.entrySet()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(currencyCodeAccountEntry -> !CurrencyCode.RUB.equalsByKey(currencyCodeAccountEntry.getKey()))
|
.filter(currencyCodeAccountEntry -> !CurrencyCode.RUB.equalsByKey(currencyCodeAccountEntry.getKey()))
|
||||||
.map(currencyCodeAccountEntry -> currencyCodeAccountEntry.getValue().getId())
|
.map(currencyCodeAccountEntry -> currencyCodeAccountEntry.getValue().getId())
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest();
|
|
||||||
clientCodeNewRequest.setCompanyId(company.getId());
|
|
||||||
clientCodeNewRequest.setCode(tkrAccount.getClientCode());
|
|
||||||
clientCodeNewRequest.setDepoAccountId(depoAccountId);
|
|
||||||
clientCodeNewRequest.setMoneyAccountId(moneyAccount.getId());
|
|
||||||
clientCodeNewRequest.setCurrencyAccountList(foreignCurrencyList);
|
clientCodeNewRequest.setCurrencyAccountList(foreignCurrencyList);
|
||||||
|
|
||||||
clientCodeFacade.createClientCode(clientCodeNewRequest, validator);
|
clientCodeFacade.createClientCode(clientCodeNewRequest, validator);
|
||||||
|
|
||||||
TradingClearingRegistry tradingClearingRegistry = selectTradingClearingRegistry(company.getId(),
|
TradingClearingRegistry tradingClearingRegistry = selectTradingClearingRegistry(company.getId(),
|
||||||
|
|
@ -153,20 +149,29 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali
|
||||||
log.debug("Success created new clientCode by tkr account: {}", tkrAccount.getClientCode());
|
log.debug("Success created new clientCode by tkr account: {}", tkrAccount.getClientCode());
|
||||||
}
|
}
|
||||||
kafkaSender.sendRequestToQueue(Consts.ACCOUNTS_TO_GATEWAY, sendTkrRequest);
|
kafkaSender.sendRequestToQueue(Consts.ACCOUNTS_TO_GATEWAY, sendTkrRequest);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private PayloadInfo clientCodeNewFromBackend(BaseRequest<ClientCodeNewRequest> clientCodeNewRequest) {
|
private RequestInfoUpdate clientCodeNewFromBackend(BaseRequest<ClientCodeNewRequest> clientCodeNewRequest) {
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(clientCodeNewRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(clientCodeNewRequest);
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
ClientCodeNewRequest request = clientCodeNewRequest.getRequestPayload();
|
ClientCodeNewRequest request = clientCodeNewRequest.getRequestPayload();
|
||||||
ValidationResult validationResult = clientCodeValidator.checkBackendNewRequest(request);
|
ValidationResult validationResult = clientCodeValidator.checkBackendNewRequest(request);
|
||||||
if (!validationResult.isValid()) {
|
if (!validationResult.isValid()) {
|
||||||
return DefaultResponses.build(clientCodeNewRequest.getId(),
|
return makeErrorResponse(clientCodeNewRequest, validationResult);
|
||||||
validationResult.errorMsg().orElse(""), DefaultResponses.ERROR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clientCodeFacade.createClientCode(request, validationResult.validator());
|
clientCodeFacade.createClientCode(request, validationResult.validator());
|
||||||
return DefaultResponses.build(clientCodeNewRequest.getId(), DefaultResponses.SUCCESS);
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private RequestInfoUpdate makeErrorResponse(BaseRequest<ClientCodeNewRequest> clientCodeNewRequest,
|
||||||
|
ValidationResult validationResult) {
|
||||||
|
RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate();
|
||||||
|
requestInfoUpdate.setId(clientCodeNewRequest.getId());
|
||||||
|
requestInfoUpdate.setStatus(Status.Error);
|
||||||
|
validationResult.errorMsg().ifPresent(requestInfoUpdate::setMessage);
|
||||||
|
return requestInfoUpdate;
|
||||||
}
|
}
|
||||||
|
|
||||||
private TradingClearingRegistry selectTradingClearingRegistry(Long companyId, Long moneyAccountId, Long depoAccountId) {
|
private TradingClearingRegistry selectTradingClearingRegistry(Long companyId, Long moneyAccountId, Long depoAccountId) {
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import org.springframework.stereotype.Service;
|
||||||
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;
|
||||||
import ru.spcex.clearing.platform.messaging.logic.response.PayloadInfo;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfo;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfo;
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
|
|
@ -33,15 +32,15 @@ public class RequestInfoAccepter extends QueueConsumer implements InitializingBe
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
callback(PayloadInfo.class)
|
callback(RequestInfoUpdate.class)
|
||||||
.setConsumer(this::updateRequestInfo)
|
.setConsumer(this::updateRequestInfo)
|
||||||
.forDestination(Consts.REQUEST_INFO_UPDATE, callbacks::put);
|
.forDestination(Consts.REQUEST_INFO_UPDATE, callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateRequestInfo(BaseRequest<PayloadInfo> requestInfoUpdateBaseRequest) {
|
private void updateRequestInfo(BaseRequest<RequestInfoUpdate> requestInfoUpdateBaseRequest) {
|
||||||
//will throw exception for any class other than RequestInfoUpdate
|
//will throw exception for any class other than RequestInfoUpdate
|
||||||
PayloadInfo statusInfo = requestInfoUpdateBaseRequest.getRequestPayload();
|
RequestInfoUpdate statusInfo = requestInfoUpdateBaseRequest.getRequestPayload();
|
||||||
if (statusInfo == null || statusInfo.getId() == null) {
|
if (statusInfo == null || statusInfo.getId() == null) {
|
||||||
log.warn("BaseRequest id={}, RequestPayload={}: requestInfo id was null",
|
log.warn("BaseRequest id={}, RequestPayload={}: requestInfo id was null",
|
||||||
requestInfoUpdateBaseRequest.getId(), statusInfo);
|
requestInfoUpdateBaseRequest.getId(), statusInfo);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -11,20 +10,26 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
|
||||||
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.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
||||||
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.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.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
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.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
@Deprecated
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ClearingMemberCategoryService extends QueueConsumer implements InitializingBean {
|
public class ClearingMemberCategoryService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
@ -38,7 +43,7 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init
|
||||||
private final Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator;
|
private final Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator;
|
||||||
private final ValidationHelper validationHelper;
|
private final ValidationHelper validationHelper;
|
||||||
private final UserRoleVerification userRoleVerification;
|
private final UserRoleVerification userRoleVerification;
|
||||||
private final CompanyServiceFacade companyService;
|
private final CompanyService companyService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public ClearingMemberCategoryService(Consumer<String, Object> kafkaQueue,
|
public ClearingMemberCategoryService(Consumer<String, Object> kafkaQueue,
|
||||||
|
|
@ -49,7 +54,7 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init
|
||||||
@Qualifier("clearingMemberCategoryNewRequestValidator") Function<ClearingMemberCategoryNewRequest, IValidator> clearingMemberCategoryNewRequestValidator,
|
@Qualifier("clearingMemberCategoryNewRequestValidator") Function<ClearingMemberCategoryNewRequest, IValidator> clearingMemberCategoryNewRequestValidator,
|
||||||
@Qualifier("clearingMemberCategoryUpdateRequestValidator") Function<ClearingMemberCategoryUpdateRequest, IValidator> clearingMemberCategoryUpdateRequestValidator,
|
@Qualifier("clearingMemberCategoryUpdateRequestValidator") Function<ClearingMemberCategoryUpdateRequest, IValidator> clearingMemberCategoryUpdateRequestValidator,
|
||||||
@Qualifier("clearingMemberCategoryDeleteRequestValidator") Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator,
|
@Qualifier("clearingMemberCategoryDeleteRequestValidator") Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator,
|
||||||
CompanyServiceFacade companyService) {
|
CompanyService companyService) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.clearingMemberCategoryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
this.clearingMemberCategoryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
|
@ -65,131 +70,131 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
// callback(ClearingMemberCategoryNewRequest.class)
|
callback(ClearingMemberCategoryNewRequest.class)
|
||||||
// .setFunction(this::clearingMemberCategoryNew)
|
.setFunction(this::clearingMemberCategoryNew)
|
||||||
// .forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_NEW, callbacks::put);
|
||||||
// callback(ClearingMemberCategoryUpdateRequest.class)
|
callback(ClearingMemberCategoryUpdateRequest.class)
|
||||||
// .setFunction(this::clearingMemberCategoryUpdate)
|
.setFunction(this::clearingMemberCategoryUpdate)
|
||||||
// .forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE, callbacks::put);
|
||||||
// callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
// .setFunction(this::clearingMemberCategoryDelete)
|
.setFunction(this::clearingMemberCategoryDelete)
|
||||||
// .forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE, callbacks::put);
|
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE, callbacks::put);
|
||||||
// init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
// public RequestInfoUpdate clearingMemberCategoryNew(BaseRequest<ClearingMemberCategoryNewRequest> userRequest) {
|
protected RequestInfoUpdate clearingMemberCategoryNew(BaseRequest<ClearingMemberCategoryNewRequest> userRequest) {
|
||||||
// log.debug("ClearingMemberCategoryNewRequest received {}", userRequest.getId());
|
log.debug("ClearingMemberCategoryNewRequest received {}", userRequest.getId());
|
||||||
//
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryNewRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryNewRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// ClearingMemberCategoryNewRequest req = userRequest.getRequestPayload();
|
ClearingMemberCategoryNewRequest req = userRequest.getRequestPayload();
|
||||||
// ClearingMemberCategory newCategory = new ClearingMemberCategory();
|
ClearingMemberCategory newCategory = new ClearingMemberCategory();
|
||||||
// newCategory.setId(idSequence.nextId());
|
newCategory.setId(idSequence.nextId());
|
||||||
// newCategory.setCompanyId(req.getCompanyId());
|
newCategory.setCompanyId(req.getCompanyId());
|
||||||
// newCategory.setClearingMemberCategory(req.getClearingMemberCategory());
|
newCategory.setClearingMemberCategory(req.getClearingMemberCategory());
|
||||||
//
|
|
||||||
// synchronized (companyService) {
|
synchronized (companyService) {
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
// transaction.beginTransaction();
|
transaction.beginTransaction();
|
||||||
// boolean txOk = false;
|
boolean txOk = false;
|
||||||
// try {
|
try {
|
||||||
// if (IEnumKey.contains(newCategory.getClearingMemberCategory(), ClearingCategory.T, ClearingCategory.K)) {
|
if (IEnumKey.contains(newCategory.getClearingMemberCategory(), ClearingCategory.T, ClearingCategory.K)) {
|
||||||
// log.debug("For category \"{}\" do not create relation.", newCategory.getClearingMemberCategory());
|
log.debug("For category \"{}\" do not create relation.", newCategory.getClearingMemberCategory());
|
||||||
// } else {
|
} else {
|
||||||
// companyService.relationService.createNewRelation(transaction, req.getCompanyId(), newCategory);
|
companyService.relationService.createNewRelation(transaction, req.getCompanyId(), newCategory);
|
||||||
// }
|
}
|
||||||
// Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
// txClearingMemberCategoryMap.insert(newCategory);
|
txClearingMemberCategoryMap.insert(newCategory);
|
||||||
// txOk = true;
|
txOk = true;
|
||||||
// } finally {
|
} finally {
|
||||||
// if (txOk)
|
if (txOk)
|
||||||
// transaction.commitTransaction();
|
transaction.commitTransaction();
|
||||||
// else
|
else
|
||||||
// transaction.rollbackTransaction();
|
transaction.rollbackTransaction();
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// log.debug("Successfully processed, new category id {}", newCategory.getId());
|
log.debug("Successfully processed, new category id {}", newCategory.getId());
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
//
|
|
||||||
// public RequestInfoUpdate clearingMemberCategoryUpdate(BaseRequest<ClearingMemberCategoryUpdateRequest> userRequest) {
|
public RequestInfoUpdate clearingMemberCategoryUpdate(BaseRequest<ClearingMemberCategoryUpdateRequest> userRequest) {
|
||||||
// ClearingMemberCategoryUpdateRequest req = userRequest.getRequestPayload();
|
ClearingMemberCategoryUpdateRequest req = userRequest.getRequestPayload();
|
||||||
//
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryUpdateRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryUpdateRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// log.debug("ClearingMemberCategoryUpdateRequest received");
|
log.debug("ClearingMemberCategoryUpdateRequest received");
|
||||||
// ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(req.getId());
|
ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(req.getId());
|
||||||
//
|
|
||||||
// // if (Objects.equals(clearingMemberCategory.getClearingMemberCategory(), req.getClearingMemberCategory()))
|
// if (Objects.equals(clearingMemberCategory.getClearingMemberCategory(), req.getClearingMemberCategory()))
|
||||||
// String oldClearingMemberCategory = clearingMemberCategory.getClearingMemberCategory();
|
String oldClearingMemberCategory = clearingMemberCategory.getClearingMemberCategory();
|
||||||
// clearingMemberCategory.setClearingMemberCategory(req.getClearingMemberCategory());
|
clearingMemberCategory.setClearingMemberCategory(req.getClearingMemberCategory());
|
||||||
// synchronized (companyService) {
|
synchronized (companyService) {
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
// transaction.beginTransaction();
|
transaction.beginTransaction();
|
||||||
// boolean txOk = false;
|
boolean txOk = false;
|
||||||
// try {
|
try {
|
||||||
// //todo сложный кейс с возможным изменением релейшена или пересозданием. Скоро ТЗ доделают.
|
//todo сложный кейс с возможным изменением релейшена или пересозданием. Скоро ТЗ доделают.
|
||||||
// //companyService.relationService.updateExistRelation(transaction,clearingMemberCategory.getCompanyId(), oldClearingMemberCategory,
|
//companyService.relationService.updateExistRelation(transaction,clearingMemberCategory.getCompanyId(), oldClearingMemberCategory,
|
||||||
// // clearingMemberCategory.getClearingMemberCategory());
|
// clearingMemberCategory.getClearingMemberCategory());
|
||||||
// companyService.relationService.createNewRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
companyService.relationService.createNewRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||||
// Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
// txClearingMemberCategoryMap.insert(clearingMemberCategory);
|
txClearingMemberCategoryMap.insert(clearingMemberCategory);
|
||||||
// txOk = true;
|
txOk = true;
|
||||||
// } finally {
|
} finally {
|
||||||
// if (txOk)
|
if (txOk)
|
||||||
// transaction.commitTransaction();
|
transaction.commitTransaction();
|
||||||
// else
|
else
|
||||||
// transaction.rollbackTransaction();
|
transaction.rollbackTransaction();
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// log.debug("successfully processed, id {}", clearingMemberCategory.getId());
|
log.debug("successfully processed, id {}", clearingMemberCategory.getId());
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// private RequestInfoUpdate clearingMemberCategoryDelete(BaseRequest<CommonDeleteRequest> userRequest) {
|
private RequestInfoUpdate clearingMemberCategoryDelete(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||||
// CommonDeleteRequest req = userRequest.getRequestPayload();
|
CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||||
//
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryDeleteRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clearingMemberCategoryDeleteRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// log.debug("CommonDeleteRequest received id = {}", req.getId());
|
log.debug("CommonDeleteRequest received id = {}", req.getId());
|
||||||
// ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(req.getId());
|
ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(req.getId());
|
||||||
//
|
|
||||||
// synchronized (companyService) {
|
synchronized (companyService) {
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
// transaction.beginTransaction();
|
transaction.beginTransaction();
|
||||||
// boolean txOk = false;
|
boolean txOk = false;
|
||||||
// try {
|
try {
|
||||||
// Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
Imdg<ClearingMemberCategory> txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||||
// txClearingMemberCategoryMap.delete(clearingMemberCategory); // далить до cancelRelation внутри транзакции
|
txClearingMemberCategoryMap.delete(clearingMemberCategory); // далить до cancelRelation внутри транзакции
|
||||||
// if (clearingMemberCategory.getCompanyId() == null) { // never, только тестовые данные
|
if (clearingMemberCategory.getCompanyId() == null) { // never, только тестовые данные
|
||||||
// log.warn("Deleted clearingMemberCategory[{}] has not companyId", clearingMemberCategory.getId());
|
log.warn("Deleted clearingMemberCategory[{}] has not companyId", clearingMemberCategory.getId());
|
||||||
// } else {
|
} else {
|
||||||
// companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
||||||
// }
|
}
|
||||||
// txOk = true;
|
txOk = true;
|
||||||
// } finally {
|
} finally {
|
||||||
// if (txOk)
|
if (txOk)
|
||||||
// transaction.commitTransaction();
|
transaction.commitTransaction();
|
||||||
// else
|
else
|
||||||
// transaction.rollbackTransaction();
|
transaction.rollbackTransaction();
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// log.debug("clearingMemberCategory.id={} deleted.", clearingMemberCategory.getId());
|
log.debug("clearingMemberCategory.id={} deleted.", clearingMemberCategory.getId());
|
||||||
//
|
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import java.util.function.Function;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -10,24 +10,33 @@ 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.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
||||||
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
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.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
||||||
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.util.security.UserRoleVerification;
|
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
import ru.spcex.clearing.util.services.RequestHelper;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
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.utils.error.ValidationException;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
@Deprecated
|
import java.time.Instant;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class CompanyInfoService extends QueueConsumer implements InitializingBean {
|
public class CompanyInfoService 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<Company> companyMap;
|
private final Imdg<Company> companyMap;
|
||||||
protected final CompanyServiceFacade companyService;
|
protected final CompanyService companyService;
|
||||||
private final RequestHelper requestHelper;
|
private final RequestHelper requestHelper;
|
||||||
private final ValidationHelper validationHelper;
|
private final ValidationHelper validationHelper;
|
||||||
final Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator;
|
final Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator;
|
||||||
|
|
@ -35,7 +44,7 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public CompanyInfoService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
public CompanyInfoService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider, CompanyServiceFacade companyService,
|
ImdgProvider imdgProvider, CompanyService companyService,
|
||||||
RequestHelper requestHelper, ValidationHelper validationHelper,
|
RequestHelper requestHelper, ValidationHelper validationHelper,
|
||||||
UserRoleVerification userRoleVerification,
|
UserRoleVerification userRoleVerification,
|
||||||
@Qualifier("CompanyInfoUpdateRequestValidator")
|
@Qualifier("CompanyInfoUpdateRequestValidator")
|
||||||
|
|
@ -52,83 +61,83 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
// callback(CompanyInfoUpdateRequest.class)
|
callback(CompanyInfoUpdateRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
.setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_INFO_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_INFO_UPDATE, callbacks::put);
|
||||||
// callback(CompanyInfoUpdateRequest.class)
|
callback(CompanyInfoUpdateRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
.setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); // логика заполнения одинакова с companyInfoUpdate
|
.forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); // логика заполнения одинакова с companyInfoUpdate
|
||||||
// init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// public RequestInfoUpdate companyInfoUpdate(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) throws ValidationException {
|
public RequestInfoUpdate companyInfoUpdate(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) throws ValidationException {
|
||||||
// CompanyInfoUpdateRequest req = companyInfoReq.getRequestPayload();
|
CompanyInfoUpdateRequest req = companyInfoReq.getRequestPayload();
|
||||||
// log.debug("{} received", req.getClass().getSimpleName());
|
log.debug("{} received", req.getClass().getSimpleName());
|
||||||
// { // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyInfoReq);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyInfoReq);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(companyInfoReq, companyInfoUpdateRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(companyInfoReq, companyInfoUpdateRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// }
|
}
|
||||||
// synchronized (companyService) {
|
synchronized (companyService) {
|
||||||
// Company company = companyMap.getSingleObjectByID(req.getId());
|
Company company = companyMap.getSingleObjectByID(req.getId());
|
||||||
// if (company == null) {
|
if (company == null) {
|
||||||
// log.trace("Company {} not found", req.getId());
|
log.trace("Company {} not found", req.getId());
|
||||||
// return requestHelper.makeErrorResponse(companyInfoReq, CompanyErrors.CompanyNotFound, companyInfoReq.getId());
|
return requestHelper.makeErrorResponse(companyInfoReq, CompanyErrors.CompanyNotFound, companyInfoReq.getId());
|
||||||
// }
|
}
|
||||||
// company.setUpdated(Instant.now());
|
company.setUpdated(Instant.now());
|
||||||
// if (StringUtils.isNotEmpty(req.getShortName()))
|
if (StringUtils.isNotEmpty(req.getShortName()))
|
||||||
// company.setShortName(req.getShortName());
|
company.setShortName(req.getShortName());
|
||||||
// if (StringUtils.isNotEmpty(req.getFullName()))
|
if (StringUtils.isNotEmpty(req.getFullName()))
|
||||||
// company.setFullName(req.getFullName());
|
company.setFullName(req.getFullName());
|
||||||
// CompanyInfo companyInfo = company.getProfile();
|
CompanyInfo companyInfo = company.getProfile();
|
||||||
//
|
|
||||||
// companyInfo.setCountryCode(req.getCountryCode());
|
companyInfo.setCountryCode(req.getCountryCode());
|
||||||
// companyInfo.setProfessionalSign(req.getProfessionalSign());
|
companyInfo.setProfessionalSign(req.getProfessionalSign());
|
||||||
// companyInfo.setLegalKind(req.getLegalKind());
|
companyInfo.setLegalKind(req.getLegalKind());
|
||||||
// companyInfo.setOrganizationType(req.getOrganizationType());
|
companyInfo.setOrganizationType(req.getOrganizationType());
|
||||||
// companyInfo.setResidence(req.getResidence());
|
companyInfo.setResidence(req.getResidence());
|
||||||
//
|
|
||||||
// companyInfo.setCorporationSoleType(req.getCorporationSoleType());
|
companyInfo.setCorporationSoleType(req.getCorporationSoleType());
|
||||||
// companyInfo.setDescription(req.getDescription());
|
companyInfo.setDescription(req.getDescription());
|
||||||
// companyInfo.setShortNameEng(req.getShortNameEng());
|
companyInfo.setShortNameEng(req.getShortNameEng());
|
||||||
// companyInfo.setFullNameEng(req.getFullNameEng());
|
companyInfo.setFullNameEng(req.getFullNameEng());
|
||||||
//
|
|
||||||
// boolean simpleUpdate = true;
|
boolean simpleUpdate = true;
|
||||||
// if (req.getWorkflowStatus() != null) {
|
if (req.getWorkflowStatus() != null) {
|
||||||
// String prevStatus = company.getWorkflowStatus();
|
String prevStatus = company.getWorkflowStatus();
|
||||||
// company.setWorkflowStatus(req.getWorkflowStatus());
|
company.setWorkflowStatus(req.getWorkflowStatus());
|
||||||
// if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||||
// simpleUpdate = false;
|
simpleUpdate = false;
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
// transaction.beginTransaction();
|
transaction.beginTransaction();
|
||||||
// boolean txOk = false;
|
boolean txOk = false;
|
||||||
// try {
|
try {
|
||||||
// companyService.relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
companyService.relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||||
// Imdg<Company> txCompanyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
Imdg<Company> txCompanyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
// txCompanyMap.update(company);
|
txCompanyMap.update(company);
|
||||||
// log.trace("Company {} updated", company.getId());
|
log.trace("Company {} updated", company.getId());
|
||||||
// txOk = true;
|
txOk = true;
|
||||||
// } finally {
|
} finally {
|
||||||
// if (txOk)
|
if (txOk)
|
||||||
// transaction.commitTransaction();
|
transaction.commitTransaction();
|
||||||
// else
|
else
|
||||||
// transaction.rollbackTransaction();
|
transaction.rollbackTransaction();
|
||||||
// }
|
}
|
||||||
// } else {
|
} else {
|
||||||
// log.trace("Status was not changed");
|
log.trace("Status was not changed");
|
||||||
// }
|
}
|
||||||
// } else {
|
} else {
|
||||||
// log.trace("Null new WorkflowStatus");
|
log.trace("Null new WorkflowStatus");
|
||||||
// }
|
}
|
||||||
// if (simpleUpdate) {
|
if (simpleUpdate) {
|
||||||
// companyMap.update(company);
|
companyMap.update(company);
|
||||||
// log.trace("Company {} updated", company.getId());
|
log.trace("Company {} updated", company.getId());
|
||||||
// }
|
}
|
||||||
// log.debug("successfully CompanyInfo processed, id {}", companyInfo.getId());
|
log.debug("successfully CompanyInfo processed, id {}", companyInfo.getId());
|
||||||
// }
|
}
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -11,10 +8,12 @@ import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.company.Company;
|
||||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
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.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
||||||
|
|
@ -32,7 +31,10 @@ import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.platform.utils.error.ValidationException;
|
import ru.spcex.platform.utils.error.ValidationException;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
@Deprecated
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class CompanyRoleSetService extends QueueConsumer implements InitializingBean {
|
public class CompanyRoleSetService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
@ -79,17 +81,17 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
// callback(CompanyRoleSetNewRequest.class)
|
callback(CompanyRoleSetNewRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::createCompanyRoleSet, request))
|
.setFunction(request -> requestHelper.requestFunction(this::createCompanyRoleSet, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_NEW, callbacks::put);
|
||||||
// callback(CompanyRoleSetUpdateRequest.class)
|
callback(CompanyRoleSetUpdateRequest.class)
|
||||||
// .setConsumer(request -> requestHelper.requestFunction(this::updateCompanyRoleSet, request))
|
.setConsumer(request -> requestHelper.requestFunction(this::updateCompanyRoleSet, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE, callbacks::put);
|
||||||
// callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::deleteCompanyRoleSet, request))
|
.setFunction(request -> requestHelper.requestFunction(this::deleteCompanyRoleSet, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE
|
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE
|
||||||
// , callbacks::put);
|
, callbacks::put);
|
||||||
// init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private RequestInfoUpdate createCompanyRoleSet(BaseRequest<CompanyRoleSetNewRequest> companyRoleNewRequestBaseRequest) throws ValidationException {
|
private RequestInfoUpdate createCompanyRoleSet(BaseRequest<CompanyRoleSetNewRequest> companyRoleNewRequestBaseRequest) throws ValidationException {
|
||||||
|
|
|
||||||
|
|
@ -1,402 +1,435 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
|
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
||||||
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
|
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.sdf01.AccountTerminationRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
||||||
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.util.security.UserRoleVerification;
|
||||||
|
import ru.spcex.clearing.util.services.RequestHelper;
|
||||||
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||||
|
import ru.spcex.platform.enumeration.UserRole;
|
||||||
|
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.imdg.api.ImdgTransaction;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.error.ClearingBaseException;
|
||||||
|
import ru.spcex.platform.utils.error.ValidationException;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Service
|
@Service
|
||||||
public class CompanyService extends QueueConsumer implements InitializingBean {
|
public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
|
|
||||||
// private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
// private final RequestHelper requestHelper;
|
private final RequestHelper requestHelper;
|
||||||
// private final ImdgProvider imdgProvider;
|
private final ImdgProvider imdgProvider;
|
||||||
// private final ImdgId idSequence;
|
private final ImdgId idSequence;
|
||||||
// private final Imdg<Company> companyIMap;
|
private final Imdg<Company> companyIMap;
|
||||||
// protected UserRoleVerification userRoleVerification;
|
protected UserRoleVerification userRoleVerification;
|
||||||
// protected CompanySymbolService companySymbolService;
|
protected CompanySymbolService companySymbolService;
|
||||||
// protected AccountNotificationHelper accountNotification;
|
protected AccountNotificationHelper accountNotification;
|
||||||
// protected RelationService relationService;
|
protected RelationService relationService;
|
||||||
// private final ValidationHelper validationHelper;
|
private final ValidationHelper validationHelper;
|
||||||
// private final Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
|
private final Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
|
||||||
// private final Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator;
|
private final Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator;
|
||||||
// private final Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator;
|
private final Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer
|
public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||||
// ImdgProvider imdgProvider,
|
ImdgProvider imdgProvider,
|
||||||
// RequestHelper requestHelper,
|
RequestHelper requestHelper,
|
||||||
// ValidationHelper validationHelper,
|
ValidationHelper validationHelper,
|
||||||
// UserRoleVerification userRoleVerification,
|
UserRoleVerification userRoleVerification,
|
||||||
// @Qualifier("companyNewRequestValidator")
|
@Qualifier("companyNewRequestValidator")
|
||||||
// Function<CompanyNewRequest, IValidator> companyNewRequestValidator,
|
Function<CompanyNewRequest, IValidator> companyNewRequestValidator,
|
||||||
// @Qualifier("companyUpdateRequestValidator")
|
@Qualifier("companyUpdateRequestValidator")
|
||||||
// Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator,
|
Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator,
|
||||||
// @Qualifier("CompanyDeleteRequestValidator")
|
@Qualifier("CompanyDeleteRequestValidator")
|
||||||
// Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator,
|
Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator,
|
||||||
// CompanySymbolService companySymbolService,
|
CompanySymbolService companySymbolService,
|
||||||
// AccountNotificationHelper accountNotification,
|
AccountNotificationHelper accountNotification,
|
||||||
// RelationService relationService
|
RelationService relationService) {
|
||||||
) {
|
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
// this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
// this.requestHelper = requestHelper.setLogger(log);
|
this.requestHelper = requestHelper.setLogger(log);
|
||||||
// this.idSequence = imdgProvider.getImdgIdGenerator();
|
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||||
// this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = userRoleVerification;
|
||||||
// this.userRoleVerification.setRoleForVerification(UserRole.Admin);
|
this.userRoleVerification.setRoleForVerification(UserRole.Admin);
|
||||||
// this.validationHelper = validationHelper;
|
this.validationHelper = validationHelper;
|
||||||
// this.companyNewRequestValidator = companyNewRequestValidator;
|
this.companyNewRequestValidator = companyNewRequestValidator;
|
||||||
// this.companyUpdateRequestValidator = companyUpdateRequestValidator;
|
this.companyUpdateRequestValidator = companyUpdateRequestValidator;
|
||||||
// this.companyDeleteRequestValidator = companyDeleteRequestValidator;
|
this.companyDeleteRequestValidator = companyDeleteRequestValidator;
|
||||||
// this.companySymbolService = companySymbolService;
|
this.companySymbolService = companySymbolService;
|
||||||
// this.companySymbolService.setCompanyService(this);
|
this.companySymbolService.setCompanyService(this);
|
||||||
// this.accountNotification = accountNotification;
|
this.accountNotification = accountNotification;
|
||||||
// this.relationService = relationService;
|
this.relationService = relationService;
|
||||||
//
|
|
||||||
// companyIMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
companyIMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
// callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::deleteCompany, request))
|
.setFunction(request -> requestHelper.requestFunction(this::deleteCompany, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_DELETE, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_DELETE, callbacks::put);
|
||||||
// callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::blockCompanyAfterDocument, request))
|
.setFunction(request -> requestHelper.requestFunction(this::blockCompanyAfterDocument, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_BLOCK, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_BLOCK, callbacks::put);
|
||||||
// callback(CompanyNewRequest.class)
|
callback(CompanyNewRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::processBaseRequest, request))
|
.setFunction(request -> requestHelper.requestFunction(this::processBaseRequest, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_NEW, callbacks::put);
|
||||||
// callback(CompanyNewRequest.class)
|
callback(CompanyNewRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::processBaseRequest, request))
|
.setFunction(request -> requestHelper.requestFunction(this::processBaseRequest, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_UPDATE, callbacks::put);
|
||||||
// callback(AccountTerminationRequest.class)
|
callback(AccountTerminationRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::finishCompanyTermination, request))
|
.setFunction(request -> requestHelper.requestFunction(this::finishCompanyTermination, request))
|
||||||
// .forDestination(Consts.ACCOUNT_TERMINATION_STEP2, callbacks::put);
|
.forDestination(Consts.ACCOUNT_TERMINATION_STEP2, callbacks::put);
|
||||||
// init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
// private RequestInfoUpdate processBaseRequest(BaseRequest<?> request) throws ValidationException {
|
private RequestInfoUpdate processBaseRequest(BaseRequest<?> request) throws ValidationException {
|
||||||
// // Валидация
|
// Валидация
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// ActionType actionType = request.getActionType();
|
ActionType actionType = request.getActionType();
|
||||||
// switch (actionType) {
|
switch (actionType) {
|
||||||
// case NEW -> {
|
case NEW -> {
|
||||||
// CompanyNewRequest companyNewRequest = (CompanyNewRequest) request.getRequestPayload();
|
CompanyNewRequest companyNewRequest = (CompanyNewRequest) request.getRequestPayload();
|
||||||
//// IValidator validator = companyNewRequestValidator.apply(companyNewRequest);
|
|
||||||
//// Optional<EnumMessage> error = validator.tillFirstError();
|
|
||||||
//// if (error.isPresent()) {
|
|
||||||
//// throw new ValidationException(error.get());
|
|
||||||
//// }
|
|
||||||
// create(companyNewRequest);
|
|
||||||
// }
|
|
||||||
// case UPDATE -> update((CompanyNewRequest) request.getRequestPayload(), true);
|
|
||||||
// }
|
|
||||||
// return requestInfoUpdate;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public synchronized Long create(CompanyNewRequest companyNewRequest) throws ValidationException {
|
|
||||||
// IValidator validator = companyNewRequestValidator.apply(companyNewRequest);
|
// IValidator validator = companyNewRequestValidator.apply(companyNewRequest);
|
||||||
// Optional<EnumMessage> error = validator.tillFirstError();
|
// Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
// if (error.isPresent()) {
|
// if (error.isPresent()) {
|
||||||
// throw new ValidationException(error.get());
|
// throw new ValidationException(error.get());
|
||||||
// }
|
// }
|
||||||
//
|
create(companyNewRequest);
|
||||||
// log.debug("creating new company");
|
}
|
||||||
// Instant now = Instant.now();
|
case UPDATE -> update((CompanyNewRequest) request.getRequestPayload(), true);
|
||||||
// Company company = new Company();
|
}
|
||||||
// company.setId(idSequence.nextId());
|
return requestInfoUpdate;
|
||||||
// company.setCreated(now);
|
}
|
||||||
// company.setUpdated(now);
|
|
||||||
// company.setShortName(companyNewRequest.getShortName());
|
public synchronized Long create(CompanyNewRequest companyNewRequest) throws ValidationException {
|
||||||
// company.setFullName(companyNewRequest.getFullName());
|
IValidator validator = companyNewRequestValidator.apply(companyNewRequest);
|
||||||
// company.setTradingCode(companyNewRequest.getTradingCode());
|
Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
// company.setClearingCode(companyNewRequest.getClearingCode());
|
if (error.isPresent()) {
|
||||||
// company.setRegistrationCode(companyNewRequest.getRegistrationCode());
|
throw new ValidationException(error.get());
|
||||||
// if (companyNewRequest.getWorkflowStatus() != null) {
|
}
|
||||||
// company.setWorkflowStatus(companyNewRequest.getWorkflowStatus());
|
|
||||||
// } else {
|
log.debug("creating new company");
|
||||||
// company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
Instant now = Instant.now();
|
||||||
|
Company company = new Company();
|
||||||
|
company.setId(idSequence.nextId());
|
||||||
|
company.setCreated(now);
|
||||||
|
company.setUpdated(now);
|
||||||
|
company.setShortName(companyNewRequest.getShortName());
|
||||||
|
company.setFullName(companyNewRequest.getFullName());
|
||||||
|
company.setTradingCode(companyNewRequest.getTradingCode());
|
||||||
|
company.setClearingCode(companyNewRequest.getClearingCode());
|
||||||
|
company.setRegistrationCode(companyNewRequest.getRegistrationCode());
|
||||||
|
if (companyNewRequest.getWorkflowStatus() != null) {
|
||||||
|
company.setWorkflowStatus(companyNewRequest.getWorkflowStatus());
|
||||||
|
} else {
|
||||||
|
company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||||
|
}
|
||||||
|
fillNewCompanyInfo(company, companyNewRequest);
|
||||||
|
|
||||||
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
|
transaction.beginTransaction();
|
||||||
|
boolean txOk = false;
|
||||||
|
try {
|
||||||
|
if (companyNewRequest.getCompanySymbol() != null) {
|
||||||
|
CompanySymbols newSymbol = new CompanySymbols();
|
||||||
|
newSymbol.setId(idSequence.nextId());
|
||||||
|
newSymbol.setCompanyId(company.getId());
|
||||||
|
newSymbol.setCompanySymbol(companyNewRequest.getCompanySymbol());
|
||||||
|
newSymbol.setCompanySymbolValue(companyNewRequest.getCompanySymbolValue());
|
||||||
|
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), company.getId());
|
||||||
|
Imdg<CompanySymbols> companySymbolsImdg = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
|
companySymbolsImdg.insert(newSymbol);
|
||||||
|
log.debug("Creating companySymbols with id: {} by company.id: {} done", newSymbol.getId(), company.getId());
|
||||||
|
updateCompanyBySymbol(company, newSymbol, false);
|
||||||
|
}
|
||||||
|
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
companyMap.insert(company);
|
||||||
|
log.debug("company-new request processed, BaseRequest.id = {}, company.id={}",
|
||||||
|
companyNewRequest.getId(), company.getId());
|
||||||
|
txOk = true;
|
||||||
|
} finally {
|
||||||
|
if (txOk)
|
||||||
|
transaction.commitTransaction();
|
||||||
|
else
|
||||||
|
transaction.rollbackTransaction();
|
||||||
|
}
|
||||||
|
accountNotification.makeInfoAccount(company.getId());
|
||||||
|
return company.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void update(CompanyNewRequest updateRequest, boolean validationIsEnable) throws ValidationException {
|
||||||
|
if (validationIsEnable) {
|
||||||
|
IValidator validator = companyUpdateRequestValidator.apply(updateRequest);
|
||||||
|
Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
|
if (error.isPresent()) {
|
||||||
|
throw new ValidationException(error.get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
|
transaction.beginTransaction();
|
||||||
|
boolean txOk = false;
|
||||||
|
try {
|
||||||
|
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
Company company = companyMap.getSingleObjectByID(updateRequest.getId());
|
||||||
|
if (company == null) {
|
||||||
|
log.trace("Company {} not found", updateRequest.getId());
|
||||||
|
throw new ValidationException(new EnumMessage(CompanyErrors.CompanyNotFound));
|
||||||
|
}
|
||||||
|
// if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
||||||
|
// log.trace("Company {} not active: {}", company.getId(), company.getWorkflowStatus());
|
||||||
|
// return requestHelper.makeErrorResponse(companyUpdateRequestBaseRequest, CompanyErrors.CompanyDisabled, updateRequest.getId());
|
||||||
// }
|
// }
|
||||||
// fillNewCompanyInfo(company, companyNewRequest);
|
|
||||||
//
|
company.setUpdated(Instant.now());
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
if (StringUtils.isNotEmpty(updateRequest.getShortName()))
|
||||||
// transaction.beginTransaction();
|
company.setShortName(updateRequest.getShortName());
|
||||||
// boolean txOk = false;
|
if (StringUtils.isNotEmpty(updateRequest.getFullName()))
|
||||||
// try {
|
company.setFullName(updateRequest.getFullName());
|
||||||
// if (companyNewRequest.getCompanySymbol() != null) {
|
|
||||||
// CompanySymbols newSymbol = new CompanySymbols();
|
if (updateRequest.getCompanySymbol() != null || updateRequest.getCompanySymbolValue() != null) {
|
||||||
// newSymbol.setId(idSequence.nextId());
|
log.trace("Request field CompanySymbol, CompanySymbolValue ignore for update company request.");
|
||||||
// newSymbol.setCompanyId(company.getId());
|
}
|
||||||
// newSymbol.setCompanySymbol(companyNewRequest.getCompanySymbol());
|
|
||||||
// newSymbol.setCompanySymbolValue(companyNewRequest.getCompanySymbolValue());
|
String prevStatus = company.getWorkflowStatus();
|
||||||
// log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), company.getId());
|
if (updateRequest.getWorkflowStatus() != null) {
|
||||||
// Imdg<CompanySymbols> companySymbolsImdg = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
company.setWorkflowStatus(updateRequest.getWorkflowStatus());
|
||||||
// companySymbolsImdg.insert(newSymbol);
|
if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
||||||
// log.debug("Creating companySymbols with id: {} by company.id: {} done", newSymbol.getId(), company.getId());
|
relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||||
// updateCompanyBySymbol(company, newSymbol, false);
|
} else {
|
||||||
// }
|
log.trace("Status was not changed");
|
||||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
}
|
||||||
// companyMap.insert(company);
|
} else {
|
||||||
// log.debug("company-new request processed, BaseRequest.id = {}, company.id={}",
|
log.trace("Null new WorkflowStatus");
|
||||||
// companyNewRequest.getId(), company.getId());
|
}
|
||||||
// txOk = true;
|
companyMap.update(company);
|
||||||
// } finally {
|
txOk = true;
|
||||||
// if (txOk)
|
} finally {
|
||||||
// transaction.commitTransaction();
|
if (txOk)
|
||||||
// else
|
transaction.commitTransaction();
|
||||||
// transaction.rollbackTransaction();
|
else
|
||||||
// }
|
transaction.rollbackTransaction();
|
||||||
// accountNotification.makeInfoAccount(company.getId());
|
}
|
||||||
// return company.getId();
|
}
|
||||||
// }
|
|
||||||
//
|
protected void updateCompanyBySymbol(Company company, CompanySymbols companySymbol, boolean shouldBeDeleted) {
|
||||||
// public synchronized void update(CompanyNewRequest updateRequest, boolean validationIsEnable) throws ValidationException {
|
assert company.getId().equals(companySymbol.getCompanyId());
|
||||||
// if (validationIsEnable) {
|
String companySymbolValue = companySymbol.getCompanySymbolValue();
|
||||||
// IValidator validator = companyUpdateRequestValidator.apply(updateRequest);
|
String setUpValue = shouldBeDeletedOrSet(companySymbolValue, shouldBeDeleted);
|
||||||
// Optional<EnumMessage> error = validator.tillFirstError();
|
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||||
// if (error.isPresent()) {
|
company.setTradingCode(setUpValue);
|
||||||
// throw new ValidationException(error.get());
|
}
|
||||||
// }
|
if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||||
// }
|
company.setClearingCode(setUpValue);
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
}
|
||||||
// transaction.beginTransaction();
|
if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||||
// boolean txOk = false;
|
company.setRegistrationCode(setUpValue);
|
||||||
// try {
|
}
|
||||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
}
|
||||||
// Company company = companyMap.getSingleObjectByID(updateRequest.getId());
|
|
||||||
// if (company == null) {
|
private String shouldBeDeletedOrSet(String companySymbol, boolean shouldBeDeleted) {
|
||||||
// log.trace("Company {} not found", updateRequest.getId());
|
return shouldBeDeleted ? "" : companySymbol;
|
||||||
// throw new ValidationException(new EnumMessage(CompanyErrors.CompanyNotFound));
|
}
|
||||||
// }
|
|
||||||
//// if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
public synchronized void updateCompanyBySymbol(ImdgTransaction transaction, CompanySymbols companySymbol, boolean shouldBeDeleted) throws ClearingBaseException {
|
||||||
//// log.trace("Company {} not active: {}", company.getId(), company.getWorkflowStatus());
|
if (companySymbol.getCompanyId() == null) {
|
||||||
//// return requestHelper.makeErrorResponse(companyUpdateRequestBaseRequest, CompanyErrors.CompanyDisabled, updateRequest.getId());
|
throw new IllegalArgumentException("Required companySymbol.companyId");
|
||||||
//// }
|
}
|
||||||
//
|
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())
|
||||||
// company.setUpdated(Instant.now());
|
|| CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())
|
||||||
// if (StringUtils.isNotEmpty(updateRequest.getShortName()))
|
|| CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||||
// company.setShortName(updateRequest.getShortName());
|
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
// if (StringUtils.isNotEmpty(updateRequest.getFullName()))
|
|
||||||
// company.setFullName(updateRequest.getFullName());
|
Company company = companyMap.getSingleObjectByID(companySymbol.getCompanyId());
|
||||||
//
|
if (company == null) {
|
||||||
// if (updateRequest.getCompanySymbol() != null || updateRequest.getCompanySymbolValue() != null) {
|
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyNotFound, companySymbol.getCompanyId()));
|
||||||
// log.trace("Request field CompanySymbol, CompanySymbolValue ignore for update company request.");
|
}
|
||||||
// }
|
updateCompanyBySymbol(company, companySymbol, shouldBeDeleted);
|
||||||
//
|
company.setUpdated(Instant.now());
|
||||||
// String prevStatus = company.getWorkflowStatus();
|
companyMap.update(company);
|
||||||
// if (updateRequest.getWorkflowStatus() != null) {
|
log.debug("Company {} updated by change CompanySymbols {} ({})",
|
||||||
// company.setWorkflowStatus(updateRequest.getWorkflowStatus());
|
company.getId(), companySymbol.getId(), companySymbol.getCompanySymbol());
|
||||||
// if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
} else {
|
||||||
// relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
log.trace("No need update company {} by changed companySymbols {}",
|
||||||
// } else {
|
companySymbol.getCompanyId(), companySymbol.getCompanySymbol());
|
||||||
// log.trace("Status was not changed");
|
}
|
||||||
// }
|
}
|
||||||
// } else {
|
|
||||||
// log.trace("Null new WorkflowStatus");
|
/**
|
||||||
// }
|
* Блокировка компании
|
||||||
// companyMap.update(company);
|
*
|
||||||
// txOk = true;
|
* @param companyBlockRequestBaseRequest
|
||||||
// } finally {
|
* @return
|
||||||
// if (txOk)
|
*/
|
||||||
// transaction.commitTransaction();
|
private synchronized RequestInfoUpdate deleteCompany(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
||||||
// else
|
CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
||||||
// transaction.rollbackTransaction();
|
log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
||||||
// }
|
{ // Валидация
|
||||||
// }
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest);
|
||||||
//
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// protected void updateCompanyBySymbol(Company company, CompanySymbols companySymbol, boolean shouldBeDeleted) {
|
|
||||||
// assert company.getId().equals(companySymbol.getCompanyId());
|
requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
||||||
// String companySymbolValue = companySymbol.getCompanySymbolValue();
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// String setUpValue = shouldBeDeletedOrSet(companySymbolValue, shouldBeDeleted);
|
}
|
||||||
// if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
// company.setTradingCode(setUpValue);
|
transaction.beginTransaction();
|
||||||
// }
|
boolean txOk = false;
|
||||||
// if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
try {
|
||||||
// company.setClearingCode(setUpValue);
|
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
// }
|
Company company = companyMap.getSingleObjectByID(request.getId());
|
||||||
// if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
if (company == null) {
|
||||||
// company.setRegistrationCode(setUpValue);
|
log.warn("Company {} not found", request.getId());
|
||||||
// }
|
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound, request.getId());
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// private String shouldBeDeletedOrSet(String companySymbol, boolean shouldBeDeleted) {
|
company.setUpdated(Instant.now());
|
||||||
// return shouldBeDeleted ? "" : companySymbol;
|
|
||||||
// }
|
String prevStatus = company.getWorkflowStatus();
|
||||||
//
|
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||||
// public synchronized void updateCompanyBySymbol(ImdgTransaction transaction, CompanySymbols companySymbol, boolean shouldBeDeleted) throws ClearingBaseException {
|
|
||||||
// if (companySymbol.getCompanyId() == null) {
|
relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
||||||
// throw new IllegalArgumentException("Required companySymbol.companyId");
|
log.debug("Update company.id={}", company.getId());
|
||||||
// }
|
companyMap.update(company);
|
||||||
// if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())
|
|
||||||
// || CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())
|
txOk = true;
|
||||||
// || CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
} finally {
|
||||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
if (txOk)
|
||||||
//
|
transaction.commitTransaction();
|
||||||
// Company company = companyMap.getSingleObjectByID(companySymbol.getCompanyId());
|
else
|
||||||
// if (company == null) {
|
transaction.rollbackTransaction();
|
||||||
// throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyNotFound, companySymbol.getCompanyId()));
|
}
|
||||||
// }
|
return null;
|
||||||
// updateCompanyBySymbol(company, companySymbol, shouldBeDeleted);
|
}
|
||||||
// company.setUpdated(Instant.now());
|
|
||||||
// companyMap.update(company);
|
|
||||||
// log.debug("Company {} updated by change CompanySymbols {} ({})",
|
/**
|
||||||
// company.getId(), companySymbol.getId(), companySymbol.getCompanySymbol());
|
* Блокировка компании по документу о расторжении
|
||||||
// } else {
|
*
|
||||||
// log.trace("No need update company {} by changed companySymbols {}",
|
* @param companyBlockRequestBaseRequest
|
||||||
// companySymbol.getCompanyId(), companySymbol.getCompanySymbol());
|
* @return
|
||||||
// }
|
*/
|
||||||
// }
|
private synchronized RequestInfoUpdate blockCompanyAfterDocument(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
||||||
//
|
CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
||||||
// /**
|
log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
||||||
// * Блокировка компании
|
{ // Валидация
|
||||||
// *
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest);
|
||||||
// * @param companyBlockRequestBaseRequest
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// private synchronized RequestInfoUpdate deleteCompany(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
|
||||||
// CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
|
||||||
// log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
|
||||||
// { // Валидация
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest);
|
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
// requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// }
|
}
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
// transaction.beginTransaction();
|
Company company = companyIMap.getSingleObjectByID(request.getId());
|
||||||
// boolean txOk = false;
|
if (company == null) {
|
||||||
// try {
|
log.warn("Company {} not found", request.getId());
|
||||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
||||||
// Company company = companyMap.getSingleObjectByID(request.getId());
|
}
|
||||||
// if (company == null) {
|
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
||||||
// log.warn("Company {} not found", request.getId());
|
log.info("Company {} already blocked", request.getId());
|
||||||
// return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound, request.getId());
|
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled, company.getShortName());
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// company.setUpdated(Instant.now());
|
|
||||||
//
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
// String prevStatus = company.getWorkflowStatus();
|
transaction.beginTransaction();
|
||||||
// company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
boolean txOk = false;
|
||||||
//
|
try {
|
||||||
// relationService.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
// log.debug("Update company.id={}", company.getId());
|
|
||||||
// companyMap.update(company);
|
company.setUpdated(Instant.now());
|
||||||
//
|
|
||||||
// txOk = true;
|
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||||
// } finally {
|
|
||||||
// if (txOk)
|
relationService.onChangeWorkflowStatusOnlyRelationChange(transaction, company, company.getWorkflowStatus());
|
||||||
// transaction.commitTransaction();
|
log.debug("Update company.id={}", company.getId());
|
||||||
// else
|
companyMap.update(company);
|
||||||
// transaction.rollbackTransaction();
|
|
||||||
// }
|
txOk = true;
|
||||||
// return null;
|
} finally {
|
||||||
// }
|
if (txOk)
|
||||||
//
|
transaction.commitTransaction();
|
||||||
//
|
else
|
||||||
// /**
|
transaction.rollbackTransaction();
|
||||||
// * Блокировка компании по документу о расторжении
|
}
|
||||||
// *
|
return null;
|
||||||
// * @param companyBlockRequestBaseRequest
|
}
|
||||||
// * @return
|
|
||||||
// */
|
/**
|
||||||
// private synchronized RequestInfoUpdate blockCompanyAfterDocument(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) throws ValidationException {
|
* Блокировка компании после блокировки счетов
|
||||||
// CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
*
|
||||||
// log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
* @return
|
||||||
// { // Валидация
|
*/
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest);
|
private synchronized RequestInfoUpdate finishCompanyTermination(BaseRequest<AccountTerminationRequest> terminationRequest) throws ValidationException {
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
AccountTerminationRequest request = terminationRequest.getRequestPayload();
|
||||||
//
|
log.debug("AccountTerminationRequest (block request) received id = {}", terminationRequest.getId());
|
||||||
//// requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
{ // Валидация
|
||||||
//// if (requestInfoUpdate != null) return requestInfoUpdate;
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(terminationRequest);
|
||||||
// }
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
}
|
||||||
// Company company = companyIMap.getSingleObjectByID(request.getId());
|
|
||||||
// if (company == null) {
|
log.debug("Finish block company {}", request.getCompanyId());
|
||||||
// log.warn("Company {} not found", request.getId());
|
ImdgTransaction tx = imdgProvider.newTransaction();
|
||||||
// return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
boolean txOk = false;
|
||||||
// }
|
tx.beginTransaction();
|
||||||
// if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
try {
|
||||||
// log.info("Company {} already blocked", request.getId());
|
Company company = companyIMap.getSingleObjectByID(request.getCompanyId());
|
||||||
// return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled, company.getShortName());
|
if (company == null) {
|
||||||
// }
|
log.warn("Company {} not found", request.getCompanyId());
|
||||||
//
|
//return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
||||||
//
|
}
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
if (WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus())) {
|
||||||
// transaction.beginTransaction();
|
log.info("Company {} already blocked", company.getId());
|
||||||
// boolean txOk = false;
|
//return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled);
|
||||||
// try {
|
} else {
|
||||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||||
//
|
company.setUpdated(Instant.now());
|
||||||
// company.setUpdated(Instant.now());
|
companyIMap.update(company);
|
||||||
//
|
}
|
||||||
// company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
|
||||||
//
|
relationService.cancelAllRelationForCompany(tx, request.getCompanyId());
|
||||||
// relationService.onChangeWorkflowStatusOnlyRelationChange(transaction, company, company.getWorkflowStatus());
|
txOk = true;
|
||||||
// log.debug("Update company.id={}", company.getId());
|
} finally {
|
||||||
// companyMap.update(company);
|
if (txOk) tx.commitTransaction();
|
||||||
//
|
else tx.rollbackTransaction();
|
||||||
// txOk = true;
|
}
|
||||||
// } finally {
|
return null;
|
||||||
// if (txOk)
|
}
|
||||||
// transaction.commitTransaction();
|
|
||||||
// else
|
void fillNewCompanyInfo(Company company, CompanyNewRequest req) {
|
||||||
// transaction.rollbackTransaction();
|
if (company.getProfile() == null)
|
||||||
// }
|
company.setProfile(new CompanyInfo());
|
||||||
// return null;
|
CompanyInfo ci = company.getProfile();
|
||||||
// }
|
ci.setId(company.getId());
|
||||||
//
|
ci.setCompanyId(company.getId());
|
||||||
// /**
|
}
|
||||||
// * Блокировка компании после блокировки счетов
|
|
||||||
// *
|
|
||||||
// * @return
|
|
||||||
// */
|
|
||||||
// private synchronized RequestInfoUpdate finishCompanyTermination(BaseRequest<AccountTerminationRequest> terminationRequest) throws ValidationException {
|
|
||||||
// AccountTerminationRequest request = terminationRequest.getRequestPayload();
|
|
||||||
// log.debug("AccountTerminationRequest (block request) received id = {}", terminationRequest.getId());
|
|
||||||
// { // Валидация
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(terminationRequest);
|
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// log.debug("Finish block company {}", request.getCompanyId());
|
|
||||||
// ImdgTransaction tx = imdgProvider.newTransaction();
|
|
||||||
// boolean txOk = false;
|
|
||||||
// tx.beginTransaction();
|
|
||||||
// try {
|
|
||||||
// Company company = companyIMap.getSingleObjectByID(request.getCompanyId());
|
|
||||||
// if (company == null) {
|
|
||||||
// log.warn("Company {} not found", request.getCompanyId());
|
|
||||||
// //return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
|
||||||
// }
|
|
||||||
// if (WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus())) {
|
|
||||||
// log.info("Company {} already blocked", company.getId());
|
|
||||||
// //return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled);
|
|
||||||
// } else {
|
|
||||||
// company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
|
||||||
// company.setUpdated(Instant.now());
|
|
||||||
// companyIMap.update(company);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// relationService.cancelAllRelationForCompany(tx, request.getCompanyId());
|
|
||||||
// txOk = true;
|
|
||||||
// } finally {
|
|
||||||
// if (txOk) tx.commitTransaction();
|
|
||||||
// else tx.rollbackTransaction();
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// void fillNewCompanyInfo(Company company, CompanyNewRequest req) {
|
|
||||||
// if (company.getProfile() == null)
|
|
||||||
// company.setProfile(new CompanyInfo());
|
|
||||||
// CompanyInfo ci = company.getProfile();
|
|
||||||
// ci.setId(company.getId());
|
|
||||||
// ci.setCompanyId(company.getId());
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -10,19 +9,35 @@ import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||||
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.Status;
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
import ru.spcex.clearing.util.services.RequestHelper;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
import ru.spcex.platform.enumeration.UserRole;
|
import ru.spcex.platform.enumeration.UserRole;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
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.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.error.ClearingBaseException;
|
||||||
|
import ru.spcex.platform.utils.error.ValidationException;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
@Deprecated
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class CompanySymbolService extends QueueConsumer implements InitializingBean {
|
public class CompanySymbolService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
@ -64,160 +79,160 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
// callback(CompanySymbolNewRequest.class)
|
callback(CompanySymbolNewRequest.class)
|
||||||
// .setFunction(this::processBaseRequest)
|
.setFunction(this::processBaseRequest)
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_SYMBOL_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_NEW, callbacks::put);
|
||||||
// callback(CompanySymbolUpdateRequest.class)
|
callback(CompanySymbolUpdateRequest.class)
|
||||||
// .setFunction(this::companySymbolUpdate)
|
.setFunction(this::companySymbolUpdate)
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put);
|
||||||
// callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
// .setFunction(this::companySymbolDelete)
|
.setFunction(this::companySymbolDelete)
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_SYMBOL_DELETE, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_DELETE, callbacks::put);
|
||||||
// init();
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
private RequestInfoUpdate processBaseRequest(BaseRequest<?> request) {
|
||||||
|
RequestInfoUpdate requestInfoUpdate = null;
|
||||||
|
// Валидация
|
||||||
|
requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
|
try {
|
||||||
|
create((CompanySymbolNewRequest) request.getRequestPayload());
|
||||||
|
} catch (ValidationException e) {
|
||||||
|
return requestHelper.makeErrorResponse(request, e.getEnumMsg());
|
||||||
|
}
|
||||||
|
return requestInfoUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCompanyService(CompanyService companyService) {
|
||||||
|
this.companyService = companyService;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Long create(CompanySymbolNewRequest symbolRequest) throws ValidationException {
|
||||||
|
log.debug("CompanySymbolNewRequest received");
|
||||||
|
{ // validate
|
||||||
|
IValidator validator = companySymbolNewRequestValidator.apply(symbolRequest);
|
||||||
|
Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
|
if (error.isPresent()) {
|
||||||
|
throw new ValidationException(error.get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CompanySymbols companySymbols = create(symbolRequest.companyId, symbolRequest.getCompanySymbol(),
|
||||||
|
symbolRequest.getCompanySymbolValue());
|
||||||
|
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CompanySymbols create(Long companyId, String companySymbol, String companySymbolValue) {
|
||||||
|
Objects.requireNonNull(companyId);
|
||||||
|
CompanySymbols newSymbol = new CompanySymbols();
|
||||||
|
newSymbol.setId(idSequence.nextId());
|
||||||
|
newSymbol.setCompanyId(companyId);
|
||||||
|
newSymbol.setCompanySymbol(companySymbol);
|
||||||
|
newSymbol.setCompanySymbolValue(companySymbolValue);
|
||||||
|
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId);
|
||||||
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
|
transaction.beginTransaction();
|
||||||
|
boolean txOk = false;
|
||||||
|
try {
|
||||||
|
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
|
companySymbolsTMap.update(newSymbol);
|
||||||
|
|
||||||
|
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
Company company = companyMap.getSingleObjectByID(newSymbol.getCompanyId());
|
||||||
|
companyService.updateCompanyBySymbol(company, newSymbol, false);
|
||||||
|
companyMap.update(company);
|
||||||
|
txOk = true;
|
||||||
|
} finally {
|
||||||
|
if (txOk)
|
||||||
|
transaction.commitTransaction();
|
||||||
|
else
|
||||||
|
transaction.rollbackTransaction();
|
||||||
|
}
|
||||||
|
return newSymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RequestInfoUpdate companySymbolUpdate(BaseRequest<CompanySymbolUpdateRequest> symbolRequest) {
|
||||||
|
CompanySymbolUpdateRequest req = symbolRequest.getRequestPayload();
|
||||||
|
log.debug("CompanySymbolUpdateRequest received, id={}", symbolRequest.getId());
|
||||||
|
|
||||||
|
{ // validate
|
||||||
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
|
requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolUpdateRequestValidator);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
}
|
||||||
|
CompanySymbols companySymbols;
|
||||||
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
|
transaction.beginTransaction();
|
||||||
|
boolean txOk = false;
|
||||||
|
try {
|
||||||
|
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
|
companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
|
||||||
|
if (companySymbols == null) {
|
||||||
|
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
|
||||||
|
}
|
||||||
|
if (req.getCompanySymbol() != null && !companySymbols.getCompanySymbol().equalsIgnoreCase(req.getCompanySymbol())) {
|
||||||
|
log.debug("Change CompanySymbol[{}].CompanySymbol from \"{}\" to \"{}\"",
|
||||||
|
companySymbols.getId(), companySymbols.getCompanySymbol(), req.getCompanySymbol());
|
||||||
|
companyService.updateCompanyBySymbol(transaction, companySymbols, true);
|
||||||
|
companySymbols.setCompanySymbol(req.getCompanySymbol());
|
||||||
|
}
|
||||||
|
companySymbols.setCompanySymbolValue(req.getCompanySymbolValue());
|
||||||
|
companySymbolsTMap.update(companySymbols);
|
||||||
|
companyService.updateCompanyBySymbol(transaction, companySymbols, false);
|
||||||
|
txOk = true;
|
||||||
|
} catch (ClearingBaseException e) {
|
||||||
|
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
||||||
|
} finally {
|
||||||
|
if (txOk)
|
||||||
|
transaction.commitTransaction();
|
||||||
|
else
|
||||||
|
transaction.rollbackTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> symbolRequest) {
|
||||||
|
CommonDeleteRequest req = symbolRequest.getRequestPayload();
|
||||||
|
log.debug("CommonDeleteRequest for CompanySymbol received, id={}", symbolRequest.getId());
|
||||||
|
|
||||||
|
{ // validate
|
||||||
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
|
requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolDeleteRequestValidator);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
}
|
||||||
|
CompanySymbols companySymbols;
|
||||||
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
|
transaction.beginTransaction();
|
||||||
|
boolean txOk = false;
|
||||||
|
try {
|
||||||
|
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
|
companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
|
||||||
|
if (companySymbols == null) {
|
||||||
|
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
|
||||||
|
}
|
||||||
|
companySymbolsTMap.delete(companySymbols);
|
||||||
|
companyService.updateCompanyBySymbol(transaction, companySymbols, true);
|
||||||
|
txOk = true;
|
||||||
|
} catch (ClearingBaseException e) {
|
||||||
|
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
||||||
|
} finally {
|
||||||
|
if (txOk)
|
||||||
|
transaction.commitTransaction();
|
||||||
|
else
|
||||||
|
transaction.rollbackTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
//
|
|
||||||
// private RequestInfoUpdate processBaseRequest(BaseRequest<?> request) {
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = null;
|
|
||||||
// // Валидация
|
|
||||||
// requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
//
|
|
||||||
// try {
|
|
||||||
// create((CompanySymbolNewRequest) request.getRequestPayload());
|
|
||||||
// } catch (ValidationException e) {
|
|
||||||
// return requestHelper.makeErrorResponse(request, e.getEnumMsg());
|
|
||||||
// }
|
|
||||||
// return requestInfoUpdate;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void setCompanyService(CompanyService companyService) {
|
|
||||||
// this.companyService = companyService;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// public Long create(CompanySymbolNewRequest symbolRequest) throws ValidationException {
|
|
||||||
// log.debug("CompanySymbolNewRequest received");
|
|
||||||
// { // validate
|
|
||||||
// IValidator validator = companySymbolNewRequestValidator.apply(symbolRequest);
|
|
||||||
// Optional<EnumMessage> error = validator.tillFirstError();
|
|
||||||
// if (error.isPresent()) {
|
|
||||||
// throw new ValidationException(error.get());
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// CompanySymbols companySymbols = create(symbolRequest.companyId, symbolRequest.getCompanySymbol(),
|
|
||||||
// symbolRequest.getCompanySymbolValue());
|
|
||||||
// log.debug("successfully processed, id {}", companySymbols.getId());
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public CompanySymbols create(Long companyId, String companySymbol, String companySymbolValue) {
|
|
||||||
// Objects.requireNonNull(companyId);
|
|
||||||
// CompanySymbols newSymbol = new CompanySymbols();
|
|
||||||
// newSymbol.setId(idSequence.nextId());
|
|
||||||
// newSymbol.setCompanyId(companyId);
|
|
||||||
// newSymbol.setCompanySymbol(companySymbol);
|
|
||||||
// newSymbol.setCompanySymbolValue(companySymbolValue);
|
|
||||||
// log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId);
|
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
// transaction.beginTransaction();
|
|
||||||
// boolean txOk = false;
|
|
||||||
// try {
|
|
||||||
// Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
// companySymbolsTMap.update(newSymbol);
|
|
||||||
//
|
|
||||||
// Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
// Company company = companyMap.getSingleObjectByID(newSymbol.getCompanyId());
|
|
||||||
// companyService.updateCompanyBySymbol(company, newSymbol, false);
|
|
||||||
// companyMap.update(company);
|
|
||||||
// txOk = true;
|
|
||||||
// } finally {
|
|
||||||
// if (txOk)
|
|
||||||
// transaction.commitTransaction();
|
|
||||||
// else
|
|
||||||
// transaction.rollbackTransaction();
|
|
||||||
// }
|
|
||||||
// return newSymbol;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public RequestInfoUpdate companySymbolUpdate(BaseRequest<CompanySymbolUpdateRequest> symbolRequest) {
|
|
||||||
// CompanySymbolUpdateRequest req = symbolRequest.getRequestPayload();
|
|
||||||
// log.debug("CompanySymbolUpdateRequest received, id={}", symbolRequest.getId());
|
|
||||||
//
|
|
||||||
// { // validate
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
|
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolUpdateRequestValidator);
|
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
// }
|
|
||||||
// CompanySymbols companySymbols;
|
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
// transaction.beginTransaction();
|
|
||||||
// boolean txOk = false;
|
|
||||||
// try {
|
|
||||||
// Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
// companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
|
|
||||||
// if (companySymbols == null) {
|
|
||||||
// throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
|
|
||||||
// }
|
|
||||||
// if (req.getCompanySymbol() != null && !companySymbols.getCompanySymbol().equalsIgnoreCase(req.getCompanySymbol())) {
|
|
||||||
// log.debug("Change CompanySymbol[{}].CompanySymbol from \"{}\" to \"{}\"",
|
|
||||||
// companySymbols.getId(), companySymbols.getCompanySymbol(), req.getCompanySymbol());
|
|
||||||
// companyService.updateCompanyBySymbol(transaction, companySymbols, true);
|
|
||||||
// companySymbols.setCompanySymbol(req.getCompanySymbol());
|
|
||||||
// }
|
|
||||||
// companySymbols.setCompanySymbolValue(req.getCompanySymbolValue());
|
|
||||||
// companySymbolsTMap.update(companySymbols);
|
|
||||||
// companyService.updateCompanyBySymbol(transaction, companySymbols, false);
|
|
||||||
// txOk = true;
|
|
||||||
// } catch (ClearingBaseException e) {
|
|
||||||
// return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
|
||||||
// } finally {
|
|
||||||
// if (txOk)
|
|
||||||
// transaction.commitTransaction();
|
|
||||||
// else
|
|
||||||
// transaction.rollbackTransaction();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// log.debug("successfully processed, id {}", companySymbols.getId());
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> symbolRequest) {
|
|
||||||
// CommonDeleteRequest req = symbolRequest.getRequestPayload();
|
|
||||||
// log.debug("CommonDeleteRequest for CompanySymbol received, id={}", symbolRequest.getId());
|
|
||||||
//
|
|
||||||
// { // validate
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
|
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolDeleteRequestValidator);
|
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
// }
|
|
||||||
// CompanySymbols companySymbols;
|
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
// transaction.beginTransaction();
|
|
||||||
// boolean txOk = false;
|
|
||||||
// try {
|
|
||||||
// Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
// companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
|
|
||||||
// if (companySymbols == null) {
|
|
||||||
// throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
|
|
||||||
// }
|
|
||||||
// companySymbolsTMap.delete(companySymbols);
|
|
||||||
// companyService.updateCompanyBySymbol(transaction, companySymbols, true);
|
|
||||||
// txOk = true;
|
|
||||||
// } catch (ClearingBaseException e) {
|
|
||||||
// return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
|
||||||
// } finally {
|
|
||||||
// if (txOk)
|
|
||||||
// transaction.commitTransaction();
|
|
||||||
// else
|
|
||||||
// transaction.rollbackTransaction();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// log.debug("successfully processed, id {}", companySymbols.getId());
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -11,17 +10,21 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.profile.Contact;
|
import ru.clearing.classes.statics.data.profile.Contact;
|
||||||
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.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
||||||
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.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.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.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
@Deprecated
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ContactService extends QueueConsumer implements InitializingBean {
|
public class ContactService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
@ -52,72 +55,72 @@ public class ContactService extends QueueConsumer implements InitializingBean {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
// callback(ContactNewRequest.class)
|
callback(ContactNewRequest.class)
|
||||||
// .setFunction(this::contactNew)
|
.setFunction(this::contactNew)
|
||||||
// .forDestination(Consts.DESTINATION_CONTACT_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_CONTACT_NEW, callbacks::put);
|
||||||
// callback(ContactUpdateRequest.class)
|
callback(ContactUpdateRequest.class)
|
||||||
// .setFunction(this::contactUpdate)
|
.setFunction(this::contactUpdate)
|
||||||
// .forDestination(Consts.DESTINATION_CONTACT_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_CONTACT_UPDATE, callbacks::put);
|
||||||
// callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
// .setFunction(this::companySymbolDelete)
|
.setFunction(this::companySymbolDelete)
|
||||||
// .forDestination(Consts.DESTINATION_CONTACT_DELETE, callbacks::put);
|
.forDestination(Consts.DESTINATION_CONTACT_DELETE, callbacks::put);
|
||||||
// init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
// public RequestInfoUpdate contactNew(BaseRequest<ContactNewRequest> userRequest) {
|
public RequestInfoUpdate contactNew(BaseRequest<ContactNewRequest> userRequest) {
|
||||||
// log.debug("ContactNewRequest received");
|
log.debug("ContactNewRequest received");
|
||||||
//
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactNewRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactNewRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// ContactNewRequest contactNewRequest = userRequest.getRequestPayload();
|
ContactNewRequest contactNewRequest = userRequest.getRequestPayload();
|
||||||
// Contact contact = new Contact();
|
Contact contact = new Contact();
|
||||||
// contact.setCompanyId(contactNewRequest.getCompanyId());
|
contact.setCompanyId(contactNewRequest.getCompanyId());
|
||||||
// contact.setContactType(contactNewRequest.getContactType());
|
contact.setContactType(contactNewRequest.getContactType());
|
||||||
// contact.setContactValue(contactNewRequest.getContactValue());
|
contact.setContactValue(contactNewRequest.getContactValue());
|
||||||
// Long id = contactMap.insert(contact);
|
Long id = contactMap.insert(contact);
|
||||||
//
|
|
||||||
// log.debug("successfully processed, id {}", id);
|
log.debug("successfully processed, id {}", id);
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// public RequestInfoUpdate contactUpdate(BaseRequest<ContactUpdateRequest> userRequest) {
|
public RequestInfoUpdate contactUpdate(BaseRequest<ContactUpdateRequest> userRequest) {
|
||||||
// log.debug("ContactUpdateRequest received");
|
log.debug("ContactUpdateRequest received");
|
||||||
//
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactUpdateRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactUpdateRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// // Тип контакта не меняем, при валидации кидаем ошибку.
|
// Тип контакта не меняем, при валидации кидаем ошибку.
|
||||||
// ContactUpdateRequest req = userRequest.getRequestPayload();
|
ContactUpdateRequest req = userRequest.getRequestPayload();
|
||||||
// Contact contact = contactMap.getSingleObjectByID(req.getId());
|
Contact contact = contactMap.getSingleObjectByID(req.getId());
|
||||||
// contact.setContactValue(req.getContactValue());
|
contact.setContactValue(req.getContactValue());
|
||||||
//
|
|
||||||
// contactMap.update(contact);
|
contactMap.update(contact);
|
||||||
// log.debug("successfully processed, id {}", contact.getId());
|
log.debug("successfully processed, id {}", contact.getId());
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> userRequest) {
|
public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||||
// log.debug("CommonDeleteRequest received for contact service.");
|
log.debug("CommonDeleteRequest received for contact service.");
|
||||||
//
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactDeleteRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactDeleteRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// CommonDeleteRequest req = userRequest.getRequestPayload();
|
CommonDeleteRequest req = userRequest.getRequestPayload();
|
||||||
//
|
|
||||||
// Contact contact = contactMap.getSingleObjectByID(req.getId());
|
Contact contact = contactMap.getSingleObjectByID(req.getId());
|
||||||
//
|
|
||||||
// contactMap.delete(contact);
|
contactMap.delete(contact);
|
||||||
// log.debug("successfully deleted, id {}", contact.getId());
|
log.debug("successfully deleted, id {}", contact.getId());
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -13,18 +14,33 @@ import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.profile.Contact;
|
import ru.clearing.classes.statics.data.profile.Contact;
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
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;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.*;
|
||||||
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.util.security.UserRoleVerification;
|
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
import ru.spcex.clearing.util.services.RequestHelper;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||||
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.IEnumKey;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.error.ValidationException;
|
||||||
|
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||||
|
import ru.spcex.platform.utils.text.TextUtil;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.function.BiFunction;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Обрабатывает MultiCompanyRequest и распределяет сложный объект по...
|
* Обрабатывает MultiCompanyRequest и распределяет сложный объект по...
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
@Service
|
@Service
|
||||||
public class MultiCompanyService
|
public class MultiCompanyService
|
||||||
extends QueueConsumer implements InitializingBean {
|
extends QueueConsumer implements InitializingBean {
|
||||||
|
|
@ -91,336 +107,336 @@ public class MultiCompanyService
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
// callback(CompanyGatewayRequest.class)
|
callback(CompanyGatewayRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::processMultiRequest, request))
|
.setFunction(request -> requestHelper.requestFunction(this::processMultiRequest, request))
|
||||||
// .forDestination(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, callbacks::put);
|
||||||
// init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
// private synchronized RequestInfoUpdate processMultiRequest(BaseRequest<CompanyGatewayRequest> baseRequest) {
|
private synchronized RequestInfoUpdate processMultiRequest(BaseRequest<CompanyGatewayRequest> baseRequest) {
|
||||||
// CompanyGatewayRequest req = baseRequest.getRequestPayload();
|
CompanyGatewayRequest req = baseRequest.getRequestPayload();
|
||||||
// log.debug("company-batch-new request received, BaseRequest.id = {}", baseRequest.getId());
|
log.debug("company-batch-new request received, BaseRequest.id = {}", baseRequest.getId());
|
||||||
// { // Валидация
|
{ // Валидация
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(baseRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(baseRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// }
|
}
|
||||||
// Long companyId = null;
|
Long companyId = null;
|
||||||
// boolean txOk = false; // todo IMDG transaction
|
boolean txOk = false; // todo IMDG transaction
|
||||||
// synchronized (companyService) {
|
synchronized (companyService) {
|
||||||
// try {
|
try {
|
||||||
// //часть в companyService
|
//часть в companyService
|
||||||
// req.setCompanySymbols(
|
req.setCompanySymbols(
|
||||||
// Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList())
|
Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList())
|
||||||
// );
|
);
|
||||||
// companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany(), req.getCompanySymbols());
|
companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany(), req.getCompanySymbols());
|
||||||
// log.debug("For request {} (uuid {}) company {}.", baseRequest.getId(), req.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId));
|
log.debug("For request {} (uuid {}) company {}.", baseRequest.getId(), req.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId));
|
||||||
//
|
|
||||||
// if (companyId == null) {
|
if (companyId == null) {
|
||||||
// companyId = companyService.create(req.getCompany());
|
companyId = companyService.create(req.getCompany());
|
||||||
// log.debug("The companyId={}", companyId);
|
log.debug("The companyId={}", companyId);
|
||||||
// fillCompanyId(req, companyId);
|
fillCompanyId(req, companyId);
|
||||||
// } else {
|
} else {
|
||||||
// fillCompanyId(req, companyId);
|
fillCompanyId(req, companyId);
|
||||||
// companyService.update(req.getCompany(), false);
|
companyService.update(req.getCompany(), false);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// RequestInfoUpdate replyI;
|
RequestInfoUpdate replyI;
|
||||||
// if (req.getCompanyInfo() != null) {
|
if (req.getCompanyInfo() != null) {
|
||||||
// log.trace("For company {} do update CompanyInfo", companyId);
|
log.trace("For company {} do update CompanyInfo", companyId);
|
||||||
// replyI = companyInfoService.companyInfoUpdate(wrapRequest(baseRequest, req.getCompanyInfo(), null));
|
replyI = companyInfoService.companyInfoUpdate(wrapRequest(baseRequest, req.getCompanyInfo(), null));
|
||||||
// validateReply(companyId, "CompanyInfo", replyI);
|
validateReply(companyId, "CompanyInfo", replyI);
|
||||||
// }
|
}
|
||||||
// for (ProfileDocumentNewRequest partRequest : req.getProfileDocuments()) {
|
for (ProfileDocumentNewRequest partRequest : req.getProfileDocuments()) {
|
||||||
// ProfileDocument existDocument = findCompanyDocument(partRequest);
|
ProfileDocument existDocument = findCompanyDocument(partRequest);
|
||||||
// if (existDocument == null) {
|
if (existDocument == null) {
|
||||||
// log.trace("For company[{}] do new profileDocument", companyId);
|
log.trace("For company[{}] do new profileDocument", companyId);
|
||||||
// replyI = profileDocumentService.profileDocumentNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
replyI = profileDocumentService.profileDocumentNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||||
// validateReply(companyId, "profileDocumentNew", replyI);
|
validateReply(companyId, "profileDocumentNew", replyI);
|
||||||
// } else {
|
} else {
|
||||||
// log.trace("For company[{}] do update profileDocument[{}]", companyId, existDocument.getId());
|
log.trace("For company[{}] do update profileDocument[{}]", companyId, existDocument.getId());
|
||||||
// ProfileDocumentUpdateRequest partUpdateRequest = createUpdateRequest(existDocument, partRequest);
|
ProfileDocumentUpdateRequest partUpdateRequest = createUpdateRequest(existDocument, partRequest);
|
||||||
// replyI = profileDocumentService.profileDocumentUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
replyI = profileDocumentService.profileDocumentUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||||
// validateReply(companyId, "profileDocumentUpdate", replyI);
|
validateReply(companyId, "profileDocumentUpdate", replyI);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// for (CompanySymbolNewRequest partRequest : req.getCompanySymbols()) {
|
for (CompanySymbolNewRequest partRequest : req.getCompanySymbols()) {
|
||||||
// CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
||||||
// if (existSymbol == null) {
|
if (existSymbol == null) {
|
||||||
// log.trace("For company[{}] do new companySymbol", companyId);
|
log.trace("For company[{}] do new companySymbol", companyId);
|
||||||
// Long id = companySymbolService.create(partRequest);
|
Long id = companySymbolService.create(partRequest);
|
||||||
// } else {
|
} else {
|
||||||
// log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
||||||
// CompanySymbolUpdateRequest partUpdateRequest = createUpdateRequest(existSymbol, partRequest);
|
CompanySymbolUpdateRequest partUpdateRequest = createUpdateRequest(existSymbol, partRequest);
|
||||||
// replyI = companySymbolService.companySymbolUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
replyI = companySymbolService.companySymbolUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||||
// validateReply(companyId, "companySymbolUpdate", replyI);
|
validateReply(companyId, "companySymbolUpdate", replyI);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// for (ContactNewRequest partRequest : req.getContacts()) {
|
for (ContactNewRequest partRequest : req.getContacts()) {
|
||||||
// Contact existContact = findContact(partRequest);
|
Contact existContact = findContact(partRequest);
|
||||||
// if (existContact == null) {
|
if (existContact == null) {
|
||||||
// log.trace("For company[{}] do new contact", companyId);
|
log.trace("For company[{}] do new contact", companyId);
|
||||||
// replyI = contactService.contactNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
replyI = contactService.contactNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||||
// validateReply(companyId, "contactNew", replyI);
|
validateReply(companyId, "contactNew", replyI);
|
||||||
// } else {
|
} else {
|
||||||
// log.trace("For company[{}] do update contact[{}]", companyId, existContact.getId());
|
log.trace("For company[{}] do update contact[{}]", companyId, existContact.getId());
|
||||||
// ContactUpdateRequest partUpdateRequest = createUpdateRequest(existContact, partRequest);
|
ContactUpdateRequest partUpdateRequest = createUpdateRequest(existContact, partRequest);
|
||||||
// replyI = contactService.contactUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
replyI = contactService.contactUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||||
// validateReply(companyId, "contactUpdate", replyI);
|
validateReply(companyId, "contactUpdate", replyI);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// for (ClearingMemberCategoryNewRequest partRequest : req.getCategories()) {
|
for (ClearingMemberCategoryNewRequest partRequest : req.getCategories()) {
|
||||||
// ClearingMemberCategory existCategory = findCategory(partRequest);
|
ClearingMemberCategory existCategory = findCategory(partRequest);
|
||||||
// if (existCategory == null) {
|
if (existCategory == null) {
|
||||||
// log.trace("For company[{}] do new category", companyId);
|
log.trace("For company[{}] do new category", companyId);
|
||||||
// replyI = clearingMemberCategoryService.clearingMemberCategoryNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
replyI = clearingMemberCategoryService.clearingMemberCategoryNew(wrapRequest(baseRequest, partRequest, ActionType.NEW));
|
||||||
// validateReply(companyId, "contactNew", replyI);
|
validateReply(companyId, "contactNew", replyI);
|
||||||
// } else {
|
} else {
|
||||||
// log.trace("For company[{}] do update category[{}]", companyId, existCategory.getId());
|
log.trace("For company[{}] do update category[{}]", companyId, existCategory.getId());
|
||||||
// ClearingMemberCategoryUpdateRequest partUpdateRequest = createUpdateRequest(existCategory, partRequest);
|
ClearingMemberCategoryUpdateRequest partUpdateRequest = createUpdateRequest(existCategory, partRequest);
|
||||||
// replyI = clearingMemberCategoryService.clearingMemberCategoryUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
replyI = clearingMemberCategoryService.clearingMemberCategoryUpdate(wrapRequest(baseRequest, partUpdateRequest, ActionType.UPDATE));
|
||||||
// validateReply(companyId, "categoryUpdate", replyI);
|
validateReply(companyId, "categoryUpdate", replyI);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// txOk = true;
|
txOk = true;
|
||||||
// } catch (ValidationException vex) {
|
} catch (ValidationException vex) {
|
||||||
// log.error("For gateway request.id={}, companyId={} error validate: {}", baseRequest.getId(), companyId, messageResolver.resolve(vex.getEnumMsg()));
|
log.error("For gateway request.id={}, companyId={} error validate: {}", baseRequest.getId(), companyId, messageResolver.resolve(vex.getEnumMsg()));
|
||||||
// log.trace("For companyId={} error validation: {}", companyId, ExceptionUtils.getStackTrace(vex));
|
log.trace("For companyId={} error validation: {}", companyId, ExceptionUtils.getStackTrace(vex));
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// if (txOk) {
|
if (txOk) {
|
||||||
// log.debug("Create or update sendNewClientCode for company {}", companyId);
|
log.debug("Create or update sendNewClientCode for company {}", companyId);
|
||||||
// for (ClientCodeNewRequest partRequest : req.getClientCodes()) {
|
for (ClientCodeNewRequest partRequest : req.getClientCodes()) {
|
||||||
// accountNotification.clientCodeNew(partRequest); // Consts.DESTINATION_CLIENT_CODE_NEW Consts.DESTINATION_CLIENT_CODE_UPDATE
|
accountNotification.clientCodeNew(partRequest); // Consts.DESTINATION_CLIENT_CODE_NEW Consts.DESTINATION_CLIENT_CODE_UPDATE
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// private Stream<CompanySymbolNewRequest> additionalSymbols(CompanyNewRequest companyNewReq) {
|
private Stream<CompanySymbolNewRequest> additionalSymbols(CompanyNewRequest companyNewReq) {
|
||||||
// BiFunction<String, String, Optional<CompanySymbolNewRequest>> symbolCreation = (companySymbol, companySymbolValue) -> {
|
BiFunction<String, String, Optional<CompanySymbolNewRequest>> symbolCreation = (companySymbol, companySymbolValue) -> {
|
||||||
// if (companySymbolValue == null || TextUtil.isEmpty(companySymbolValue)) {
|
if (companySymbolValue == null || TextUtil.isEmpty(companySymbolValue)) {
|
||||||
// return Optional.empty();
|
return Optional.empty();
|
||||||
// }
|
}
|
||||||
// CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
||||||
// companySymbolNewRequest.setCompanySymbol(companySymbol);
|
companySymbolNewRequest.setCompanySymbol(companySymbol);
|
||||||
// companySymbolNewRequest.setCompanySymbolValue(companySymbolValue);
|
companySymbolNewRequest.setCompanySymbolValue(companySymbolValue);
|
||||||
// return Optional.of(companySymbolNewRequest);
|
return Optional.of(companySymbolNewRequest);
|
||||||
// };
|
};
|
||||||
// return Stream.of(symbolCreation.apply(CompanySymbol.TRDC.getKey(), companyNewReq.getTradingCode()),
|
return Stream.of(symbolCreation.apply(CompanySymbol.TRDC.getKey(), companyNewReq.getTradingCode()),
|
||||||
// symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()),
|
symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()),
|
||||||
// symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()),
|
symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()),
|
||||||
// symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode()))
|
symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode()))
|
||||||
// .filter(Optional::isPresent)
|
.filter(Optional::isPresent)
|
||||||
// .map(Optional::get);
|
.map(Optional::get);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// void validateReply(Long companyId, String process, RequestInfoUpdate replyI) {
|
void validateReply(Long companyId, String process, RequestInfoUpdate replyI) {
|
||||||
// if (replyI != null && replyI.getMessage() != null) {
|
if (replyI != null && replyI.getMessage() != null) {
|
||||||
// log.warn("Error process {} for companyId={}: {}", process, companyId, replyI.getMessage());
|
log.warn("Error process {} for companyId={}: {}", process, companyId, replyI.getMessage());
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// ProfileDocument findCompanyDocument(ProfileDocumentNewRequest partRequest) {
|
ProfileDocument findCompanyDocument(ProfileDocumentNewRequest partRequest) {
|
||||||
// Map<String, Comparable<?>> query = new HashMap<>();
|
Map<String, Comparable<?>> query = new HashMap<>();
|
||||||
// query.put("companyId", partRequest.getCompanyId());
|
query.put("companyId", partRequest.getCompanyId());
|
||||||
// query.put("documentType", partRequest.getDocumentType());
|
query.put("documentType", partRequest.getDocumentType());
|
||||||
// query.put("issueDate", partRequest.getIssueDate()); // может быть null
|
query.put("issueDate", partRequest.getIssueDate()); // может быть null
|
||||||
// Collection<ProfileDocument> allDoc = profileDocumentImdg.getCollectionObjectsByFieldValues(query);
|
Collection<ProfileDocument> allDoc = profileDocumentImdg.getCollectionObjectsByFieldValues(query);
|
||||||
// if (allDoc.isEmpty())
|
if (allDoc.isEmpty())
|
||||||
// return null;
|
return null;
|
||||||
// if (allDoc.size() > 1)
|
if (allDoc.size() > 1)
|
||||||
// log.warn("Fount {} ProfileDocument by: {}", allDoc.size(), query);
|
log.warn("Fount {} ProfileDocument by: {}", allDoc.size(), query);
|
||||||
// return allDoc.iterator().next();
|
return allDoc.iterator().next();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// CompanySymbols findCompanySymbols(CompanySymbolNewRequest partRequest) {
|
CompanySymbols findCompanySymbols(CompanySymbolNewRequest partRequest) {
|
||||||
// Map<String, Comparable<?>> query = new HashMap<>();
|
Map<String, Comparable<?>> query = new HashMap<>();
|
||||||
// query.put("companyId", partRequest.getCompanyId());
|
query.put("companyId", partRequest.getCompanyId());
|
||||||
// query.put("companySymbol", partRequest.getCompanySymbol());
|
query.put("companySymbol", partRequest.getCompanySymbol());
|
||||||
// Collection<CompanySymbols> allCS = companySymbolsImdg.getCollectionObjectsByFieldValues(query);
|
Collection<CompanySymbols> allCS = companySymbolsImdg.getCollectionObjectsByFieldValues(query);
|
||||||
// if (allCS.isEmpty())
|
if (allCS.isEmpty())
|
||||||
// return null;
|
return null;
|
||||||
// if (allCS.size() > 1)
|
if (allCS.size() > 1)
|
||||||
// log.warn("Fount {} CompanySymbols by: {}", allCS.size(), query);
|
log.warn("Fount {} CompanySymbols by: {}", allCS.size(), query);
|
||||||
// return allCS.iterator().next();
|
return allCS.iterator().next();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// Contact findContact(ContactNewRequest partRequest) {
|
Contact findContact(ContactNewRequest partRequest) {
|
||||||
// Map<String, Comparable<?>> query = new HashMap<>();
|
Map<String, Comparable<?>> query = new HashMap<>();
|
||||||
// query.put("companyId", partRequest.getCompanyId());
|
query.put("companyId", partRequest.getCompanyId());
|
||||||
// query.put("contactType", partRequest.getContactType());
|
query.put("contactType", partRequest.getContactType());
|
||||||
// Collection<Contact> allCS = contactImdg.getCollectionObjectsByFieldValues(query);
|
Collection<Contact> allCS = contactImdg.getCollectionObjectsByFieldValues(query);
|
||||||
// if (allCS.isEmpty())
|
if (allCS.isEmpty())
|
||||||
// return null;
|
return null;
|
||||||
// if (allCS.size() > 1)
|
if (allCS.size() > 1)
|
||||||
// log.warn("Fount {} Contact by: {}", allCS.size(), query);
|
log.warn("Fount {} Contact by: {}", allCS.size(), query);
|
||||||
// return allCS.iterator().next();
|
return allCS.iterator().next();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// ClearingMemberCategory findCategory(ClearingMemberCategoryNewRequest partRequest) {
|
ClearingMemberCategory findCategory(ClearingMemberCategoryNewRequest partRequest) {
|
||||||
// Map<String, Comparable<?>> query = new HashMap<>();
|
Map<String, Comparable<?>> query = new HashMap<>();
|
||||||
// query.put("companyId", partRequest.getCompanyId());
|
query.put("companyId", partRequest.getCompanyId());
|
||||||
// query.put("clearingMemberCategory", partRequest.getClearingMemberCategory());
|
query.put("clearingMemberCategory", partRequest.getClearingMemberCategory());
|
||||||
// Collection<ClearingMemberCategory> allCS = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(query);
|
Collection<ClearingMemberCategory> allCS = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(query);
|
||||||
// if (allCS.isEmpty())
|
if (allCS.isEmpty())
|
||||||
// return null;
|
return null;
|
||||||
// if (allCS.size() > 1)
|
if (allCS.size() > 1)
|
||||||
// log.warn("Fount {} ClearingMemberCategory by: {}", allCS.size(), query);
|
log.warn("Fount {} ClearingMemberCategory by: {}", allCS.size(), query);
|
||||||
// return allCS.iterator().next();
|
return allCS.iterator().next();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// ProfileDocumentUpdateRequest createUpdateRequest(ProfileDocument existDocument, ProfileDocumentNewRequest partRequest) {
|
ProfileDocumentUpdateRequest createUpdateRequest(ProfileDocument existDocument, ProfileDocumentNewRequest partRequest) {
|
||||||
// ProfileDocumentUpdateRequest r = new ProfileDocumentUpdateRequest();
|
ProfileDocumentUpdateRequest r = new ProfileDocumentUpdateRequest();
|
||||||
// r.setId(existDocument.getId());
|
r.setId(existDocument.getId());
|
||||||
// r.setCompanyId(partRequest.getCompanyId());
|
r.setCompanyId(partRequest.getCompanyId());
|
||||||
// r.setDocumentType(partRequest.getDocumentType());
|
r.setDocumentType(partRequest.getDocumentType());
|
||||||
// r.setIssueDate(partRequest.getIssueDate());
|
r.setIssueDate(partRequest.getIssueDate());
|
||||||
// r.setIssuePlace(partRequest.getIssuePlace());
|
r.setIssuePlace(partRequest.getIssuePlace());
|
||||||
// r.setIssuer(partRequest.getIssuer());
|
r.setIssuer(partRequest.getIssuer());
|
||||||
// r.setIssuerCode(partRequest.getIssuerCode());
|
r.setIssuerCode(partRequest.getIssuerCode());
|
||||||
// r.setName(partRequest.getName());
|
r.setName(partRequest.getName());
|
||||||
// r.setNumber(partRequest.getNumber());
|
r.setNumber(partRequest.getNumber());
|
||||||
// r.setPlace(partRequest.getPlace());
|
r.setPlace(partRequest.getPlace());
|
||||||
// r.setValidFromDate(partRequest.getValidFromDate());
|
r.setValidFromDate(partRequest.getValidFromDate());
|
||||||
// r.setValidToDate(partRequest.getValidToDate());
|
r.setValidToDate(partRequest.getValidToDate());
|
||||||
// r.setLink(partRequest.getLink());
|
r.setLink(partRequest.getLink());
|
||||||
// return r;
|
return r;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// CompanySymbolUpdateRequest createUpdateRequest(CompanySymbols existSymbol, CompanySymbolNewRequest partRequest) {
|
CompanySymbolUpdateRequest createUpdateRequest(CompanySymbols existSymbol, CompanySymbolNewRequest partRequest) {
|
||||||
// CompanySymbolUpdateRequest r = new CompanySymbolUpdateRequest();
|
CompanySymbolUpdateRequest r = new CompanySymbolUpdateRequest();
|
||||||
// r.setId(existSymbol.getId());
|
r.setId(existSymbol.getId());
|
||||||
// r.setCompanyId(partRequest.getCompanyId());
|
r.setCompanyId(partRequest.getCompanyId());
|
||||||
// r.setCompanySymbol(partRequest.getCompanySymbol());
|
r.setCompanySymbol(partRequest.getCompanySymbol());
|
||||||
// r.setCompanySymbolValue(partRequest.getCompanySymbolValue());
|
r.setCompanySymbolValue(partRequest.getCompanySymbolValue());
|
||||||
// return r;
|
return r;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// ContactUpdateRequest createUpdateRequest(Contact existContact, ContactNewRequest partRequest) {
|
ContactUpdateRequest createUpdateRequest(Contact existContact, ContactNewRequest partRequest) {
|
||||||
// ContactUpdateRequest r = new ContactUpdateRequest();
|
ContactUpdateRequest r = new ContactUpdateRequest();
|
||||||
// r.setId(existContact.getId());
|
r.setId(existContact.getId());
|
||||||
// r.setContactType(partRequest.getContactType());
|
r.setContactType(partRequest.getContactType());
|
||||||
// r.setContactValue(partRequest.getContactValue());
|
r.setContactValue(partRequest.getContactValue());
|
||||||
// return r;
|
return r;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// ClearingMemberCategoryUpdateRequest createUpdateRequest(ClearingMemberCategory existCategory, ClearingMemberCategoryNewRequest partRequest) {
|
ClearingMemberCategoryUpdateRequest createUpdateRequest(ClearingMemberCategory existCategory, ClearingMemberCategoryNewRequest partRequest) {
|
||||||
// ClearingMemberCategoryUpdateRequest r = new ClearingMemberCategoryUpdateRequest();
|
ClearingMemberCategoryUpdateRequest r = new ClearingMemberCategoryUpdateRequest();
|
||||||
// r.setId(existCategory.getId());
|
r.setId(existCategory.getId());
|
||||||
// r.setClearingMemberCategory(partRequest.getClearingMemberCategory());
|
r.setClearingMemberCategory(partRequest.getClearingMemberCategory());
|
||||||
// return r;
|
return r;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr, Collection<CompanySymbolNewRequest> companySymbols) {
|
Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr, Collection<CompanySymbolNewRequest> companySymbols) {
|
||||||
// CompanySymbols companySymbol = null;
|
CompanySymbols companySymbol = null;
|
||||||
// if (StringUtils.isNotEmpty(uuid)) {
|
if (StringUtils.isNotEmpty(uuid)) {
|
||||||
// log.trace("Search company by companySymbol uuid={}", uuid);
|
log.trace("Search company by companySymbol uuid={}", uuid);
|
||||||
// Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||||
// Map.of(
|
Map.of(
|
||||||
// "companySymbol", CompanySymbol.UUID.getKey(),
|
"companySymbol", CompanySymbol.UUID.getKey(),
|
||||||
// "companySymbolValue", uuid
|
"companySymbolValue", uuid
|
||||||
// )
|
)
|
||||||
// );
|
);
|
||||||
// if (!companySymbolsFromImdg.isEmpty()) {
|
if (!companySymbolsFromImdg.isEmpty()) {
|
||||||
// companySymbol = companySymbolsFromImdg.iterator().next();
|
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||||
// if (companySymbolsFromImdg.size() > 1) {
|
if (companySymbolsFromImdg.size() > 1) {
|
||||||
// log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbol.getId());
|
log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbol.getId());
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue())
|
if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue())
|
||||||
// && IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.UUID, CompanySymbol.INN, CompanySymbol.CIO)) { // вероятно там будет только UUID
|
&& IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.UUID, CompanySymbol.INN, CompanySymbol.CIO)) { // вероятно там будет только UUID
|
||||||
// {
|
{
|
||||||
// String companySymbolType = cnr.getCompanySymbol();
|
String companySymbolType = cnr.getCompanySymbol();
|
||||||
// log.debug("Company not found by UUID=\"{}\", try find by {}={}",
|
log.debug("Company not found by UUID=\"{}\", try find by {}={}",
|
||||||
// uuid, companySymbolType, cnr.getCompanySymbolValue());
|
uuid, companySymbolType, cnr.getCompanySymbolValue());
|
||||||
// log.trace("Search company by companySymbol {}={}", companySymbolType, cnr.getCompanySymbolValue());
|
log.trace("Search company by companySymbol {}={}", companySymbolType, cnr.getCompanySymbolValue());
|
||||||
// Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||||
// Map.of(
|
Map.of(
|
||||||
// "companySymbol", companySymbolType,
|
"companySymbol", companySymbolType,
|
||||||
// "companySymbolValue", cnr.getCompanySymbolValue()
|
"companySymbolValue", cnr.getCompanySymbolValue()
|
||||||
// )
|
)
|
||||||
// );
|
);
|
||||||
// if (!companySymbolsFromImdg.isEmpty()) {
|
if (!companySymbolsFromImdg.isEmpty()) {
|
||||||
// companySymbol = companySymbolsFromImdg.iterator().next();
|
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||||
// if (companySymbolsFromImdg.size() > 1) {
|
if (companySymbolsFromImdg.size() > 1) {
|
||||||
// log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cnr.getCompanySymbolValue());
|
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cnr.getCompanySymbolValue());
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// if (companySymbol == null && companySymbols != null) {
|
if (companySymbol == null && companySymbols != null) {
|
||||||
// for (CompanySymbolNewRequest cSymbolReq : companySymbols) {
|
for (CompanySymbolNewRequest cSymbolReq : companySymbols) {
|
||||||
// if (IEnumKey.contains(cSymbolReq.getCompanySymbol(), CompanySymbol.INN, CompanySymbol.CIO)) {
|
if (IEnumKey.contains(cSymbolReq.getCompanySymbol(), CompanySymbol.INN, CompanySymbol.CIO)) {
|
||||||
// String companySymbolType = cSymbolReq.getCompanySymbol();
|
String companySymbolType = cSymbolReq.getCompanySymbol();
|
||||||
// log.debug("Company not found by UUID=\"{}\", try find by {}", uuid, companySymbolType);
|
log.debug("Company not found by UUID=\"{}\", try find by {}", uuid, companySymbolType);
|
||||||
// log.trace("Search company by companySymbol {}={}", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
log.trace("Search company by companySymbol {}={}", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||||
// Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||||
// Map.of(
|
Map.of(
|
||||||
// "companySymbol", companySymbolType,
|
"companySymbol", companySymbolType,
|
||||||
// "companySymbolValue", cSymbolReq.getCompanySymbolValue()
|
"companySymbolValue", cSymbolReq.getCompanySymbolValue()
|
||||||
// )
|
)
|
||||||
// );
|
);
|
||||||
// if (!companySymbolsFromImdg.isEmpty()) {
|
if (!companySymbolsFromImdg.isEmpty()) {
|
||||||
// companySymbol = companySymbolsFromImdg.iterator().next();
|
companySymbol = companySymbolsFromImdg.iterator().next();
|
||||||
// if (companySymbolsFromImdg.size() > 1) {
|
if (companySymbolsFromImdg.size() > 1) {
|
||||||
// log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
||||||
// }
|
}
|
||||||
// break;
|
break;
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// if (companySymbol != null)
|
if (companySymbol != null)
|
||||||
// return companySymbol.getCompanyId();
|
return companySymbol.getCompanyId();
|
||||||
// else
|
else
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// private <T> BaseRequest<T> wrapRequest(BaseRequest<?> template, T payload, ActionType action) {
|
private <T> BaseRequest<T> wrapRequest(BaseRequest<?> template, T payload, ActionType action) {
|
||||||
// BaseRequest<T> r = new BaseRequest<>();
|
BaseRequest<T> r = new BaseRequest<>();
|
||||||
// r.setId(template.getId());
|
r.setId(template.getId());
|
||||||
// if (action == null) {
|
if (action == null) {
|
||||||
// r.setActionType(template.getActionType());
|
r.setActionType(template.getActionType());
|
||||||
// } else {
|
} else {
|
||||||
// r.setActionType(action);
|
r.setActionType(action);
|
||||||
// }
|
}
|
||||||
// r.setUserId(template.getUserId());
|
r.setUserId(template.getUserId());
|
||||||
// r.setCorrelationId(template.getCorrelationId());
|
r.setCorrelationId(template.getCorrelationId());
|
||||||
// r.setRequestPayload(payload);
|
r.setRequestPayload(payload);
|
||||||
// return r;
|
return r;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// void fillCompanyId(CompanyGatewayRequest req, Long companyId) {
|
void fillCompanyId(CompanyGatewayRequest req, Long companyId) {
|
||||||
// if (req.getCompany() != null) {
|
if (req.getCompany() != null) {
|
||||||
// req.getCompany().setId(companyId);
|
req.getCompany().setId(companyId);
|
||||||
// }
|
}
|
||||||
// if (req.getCompanyInfo() != null) {
|
if (req.getCompanyInfo() != null) {
|
||||||
// req.getCompanyInfo().setId(companyId);
|
req.getCompanyInfo().setId(companyId);
|
||||||
// }
|
}
|
||||||
// if (req.getCompanySymbols() == null) req.setCompanySymbols(new ArrayList<>());
|
if (req.getCompanySymbols() == null) req.setCompanySymbols(new ArrayList<>());
|
||||||
// if (req.getClientCodes() == null) req.setClientCodes(new ArrayList<>());
|
if (req.getClientCodes() == null) req.setClientCodes(new ArrayList<>());
|
||||||
// if (req.getProfileDocuments() == null) req.setProfileDocuments(new ArrayList<>());
|
if (req.getProfileDocuments() == null) req.setProfileDocuments(new ArrayList<>());
|
||||||
// if (req.getContacts() == null) req.setContacts(new ArrayList<>());
|
if (req.getContacts() == null) req.setContacts(new ArrayList<>());
|
||||||
// for (CompanySymbolNewRequest cs : req.getCompanySymbols()) {
|
for (CompanySymbolNewRequest cs : req.getCompanySymbols()) {
|
||||||
// cs.setCompanyId(companyId);
|
cs.setCompanyId(companyId);
|
||||||
// }
|
}
|
||||||
// for (ClientCodeNewRequest cc : req.getClientCodes()) {
|
for (ClientCodeNewRequest cc : req.getClientCodes()) {
|
||||||
// cc.setCompanyId(companyId);
|
cc.setCompanyId(companyId);
|
||||||
// }
|
}
|
||||||
// for (ProfileDocumentNewRequest pd : req.getProfileDocuments()) {
|
for (ProfileDocumentNewRequest pd : req.getProfileDocuments()) {
|
||||||
// pd.setCompanyId(companyId);
|
pd.setCompanyId(companyId);
|
||||||
// }
|
}
|
||||||
// for (ContactNewRequest c : req.getContacts()) {
|
for (ContactNewRequest c : req.getContacts()) {
|
||||||
// c.setCompanyId(companyId);
|
c.setCompanyId(companyId);
|
||||||
// }
|
}
|
||||||
// for (ClearingMemberCategoryNewRequest c : req.getCategories()) {
|
for (ClearingMemberCategoryNewRequest c : req.getCategories()) {
|
||||||
// c.setCompanyId(companyId);
|
c.setCompanyId(companyId);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -8,27 +7,37 @@ import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.lang.NonNull;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
||||||
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.util.security.UserRoleVerification;
|
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
import ru.spcex.clearing.util.services.RequestHelper;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||||
|
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.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
@Deprecated
|
import java.util.Objects;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ProfileDocumentService extends QueueConsumer implements InitializingBean {
|
public class ProfileDocumentService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final CompanyServiceFacade companyService;
|
private final CompanyService companyService;
|
||||||
private final Function<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator;
|
private final Function<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator;
|
||||||
private final Function<ProfileDocumentUpdateRequest, IValidator> profileDocumentUpdateRequestValidator;
|
private final Function<ProfileDocumentUpdateRequest, IValidator> profileDocumentUpdateRequestValidator;
|
||||||
private final Function<CommonDeleteRequest, IValidator> profileDocumentDeleteRequestValidator;
|
private final Function<CommonDeleteRequest, IValidator> profileDocumentDeleteRequestValidator;
|
||||||
|
|
@ -53,7 +62,7 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
||||||
IMessageResolver messageResolver,
|
IMessageResolver messageResolver,
|
||||||
RequestHelper requestHelper,
|
RequestHelper requestHelper,
|
||||||
AccountNotificationHelper accountNotificationHelper,
|
AccountNotificationHelper accountNotificationHelper,
|
||||||
CompanyServiceFacade companyService) {
|
CompanyService companyService) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
this.accountNotificationHelper = accountNotificationHelper;
|
this.accountNotificationHelper = accountNotificationHelper;
|
||||||
|
|
@ -69,184 +78,184 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
// this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||||
// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
//
|
|
||||||
// callback(ProfileDocumentNewRequest.class)
|
callback(ProfileDocumentNewRequest.class)
|
||||||
// .setFunction(this::profileDocumentNew)
|
.setFunction(this::profileDocumentNew)
|
||||||
// .forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put);
|
||||||
// callback(ProfileDocumentUpdateRequest.class)
|
callback(ProfileDocumentUpdateRequest.class)
|
||||||
// .setFunction(this::profileDocumentUpdate)
|
.setFunction(this::profileDocumentUpdate)
|
||||||
// .forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE, callbacks::put);
|
||||||
// callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
// .setFunction(this::profileDocumentDelete)
|
.setFunction(this::profileDocumentDelete)
|
||||||
// .forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_DELETE, callbacks::put);
|
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_DELETE, callbacks::put);
|
||||||
// init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
// @NonNull
|
@NonNull
|
||||||
// public RequestInfoUpdate profileDocumentNew(BaseRequest<ProfileDocumentNewRequest> profileDocumentNewRequestBaseRequest) {
|
protected RequestInfoUpdate profileDocumentNew(BaseRequest<ProfileDocumentNewRequest> profileDocumentNewRequestBaseRequest) {
|
||||||
// log.trace("Start processing ProfileDocumentNewRequest!");
|
log.trace("Start processing ProfileDocumentNewRequest!");
|
||||||
//
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(profileDocumentNewRequestBaseRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(profileDocumentNewRequestBaseRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(
|
requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||||
// profileDocumentNewRequestBaseRequest, profileDocumentNewRequestValidator
|
profileDocumentNewRequestBaseRequest, profileDocumentNewRequestValidator
|
||||||
// );
|
);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// ProfileDocumentNewRequest profileDocumentNewRequest = profileDocumentNewRequestBaseRequest.getRequestPayload();
|
ProfileDocumentNewRequest profileDocumentNewRequest = profileDocumentNewRequestBaseRequest.getRequestPayload();
|
||||||
// ProfileDocument profileDocument = new ProfileDocument();
|
ProfileDocument profileDocument = new ProfileDocument();
|
||||||
// profileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId());
|
profileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId());
|
||||||
// profileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType());
|
profileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType());
|
||||||
// profileDocument.setIssueDate(profileDocumentNewRequest.getIssueDate());
|
profileDocument.setIssueDate(profileDocumentNewRequest.getIssueDate());
|
||||||
// profileDocument.setIssuePlace(profileDocumentNewRequest.getIssuePlace());
|
profileDocument.setIssuePlace(profileDocumentNewRequest.getIssuePlace());
|
||||||
// profileDocument.setIssuer(profileDocumentNewRequest.getIssuer());
|
profileDocument.setIssuer(profileDocumentNewRequest.getIssuer());
|
||||||
// profileDocument.setIssuerCode(profileDocumentNewRequest.getIssuerCode());
|
profileDocument.setIssuerCode(profileDocumentNewRequest.getIssuerCode());
|
||||||
// profileDocument.setName(profileDocumentNewRequest.getName());
|
profileDocument.setName(profileDocumentNewRequest.getName());
|
||||||
// profileDocument.setNumber(profileDocumentNewRequest.getNumber());
|
profileDocument.setNumber(profileDocumentNewRequest.getNumber());
|
||||||
// profileDocument.setPlace(profileDocumentNewRequest.getPlace());
|
profileDocument.setPlace(profileDocumentNewRequest.getPlace());
|
||||||
// profileDocument.setValidFromDate(profileDocumentNewRequest.getValidFromDate());
|
profileDocument.setValidFromDate(profileDocumentNewRequest.getValidFromDate());
|
||||||
// profileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate());
|
profileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate());
|
||||||
// profileDocument.setLink(profileDocumentNewRequest.getLink());
|
profileDocument.setLink(profileDocumentNewRequest.getLink());
|
||||||
// profileDocumentMap.insert(profileDocument);
|
profileDocumentMap.insert(profileDocument);
|
||||||
//
|
|
||||||
// if (DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
if (DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
||||||
// processXCNT(profileDocument);
|
processXCNT(profileDocument);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// private RequestInfoUpdate profileDocumentDelete(BaseRequest<CommonDeleteRequest> deleteRequest) {
|
private RequestInfoUpdate profileDocumentDelete(BaseRequest<CommonDeleteRequest> deleteRequest) {
|
||||||
// log.trace("Start processing CommonDeleteRequest!");
|
log.trace("Start processing CommonDeleteRequest!");
|
||||||
//
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(deleteRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(deleteRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(
|
requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||||
// deleteRequest, profileDocumentDeleteRequestValidator
|
deleteRequest, profileDocumentDeleteRequestValidator
|
||||||
// );
|
);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// CommonDeleteRequest profileDocumentDeleteRequest = deleteRequest.getRequestPayload();
|
CommonDeleteRequest profileDocumentDeleteRequest = deleteRequest.getRequestPayload();
|
||||||
// ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentDeleteRequest.getId());
|
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentDeleteRequest.getId());
|
||||||
// synchronized (companyService) {
|
synchronized (companyService) {
|
||||||
// Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
||||||
// if (existCompany == null) {
|
if (existCompany == null) {
|
||||||
// log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
||||||
// return requestHelper.makeErrorResponse(deleteRequest, CompanyErrors.CompanyNotFound, profileDocument.getCompanyId());
|
return requestHelper.makeErrorResponse(deleteRequest, CompanyErrors.CompanyNotFound, profileDocument.getCompanyId());
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// ImdgTransaction transaction = imdgProvider.newTransaction();
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
// transaction.beginTransaction();
|
transaction.beginTransaction();
|
||||||
// boolean txOk = false;
|
boolean txOk = false;
|
||||||
// try {
|
try {
|
||||||
// companyService.relationService.cancelingOfAgreementUpdateRelation(transaction, profileDocument.getCompanyId());
|
companyService.relationService.cancelingOfAgreementUpdateRelation(transaction, profileDocument.getCompanyId());
|
||||||
// Imdg<ProfileDocument> txProfileDocumentMap = transaction.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
Imdg<ProfileDocument> txProfileDocumentMap = transaction.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||||
// txProfileDocumentMap.delete(profileDocument);
|
txProfileDocumentMap.delete(profileDocument);
|
||||||
// txOk = true;
|
txOk = true;
|
||||||
// } finally {
|
} finally {
|
||||||
// if (txOk)
|
if (txOk)
|
||||||
// transaction.commitTransaction();
|
transaction.commitTransaction();
|
||||||
// else
|
else
|
||||||
// transaction.rollbackTransaction();
|
transaction.rollbackTransaction();
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// log.trace("successfully deleted, id {}", profileDocument.getId());
|
log.trace("successfully deleted, id {}", profileDocument.getId());
|
||||||
//
|
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
//
|
|
||||||
// public RequestInfoUpdate profileDocumentUpdate(BaseRequest<ProfileDocumentUpdateRequest> profileDocumentUpdateRequestBaseRequest) {
|
protected RequestInfoUpdate profileDocumentUpdate(BaseRequest<ProfileDocumentUpdateRequest> profileDocumentUpdateRequestBaseRequest) {
|
||||||
// log.trace("Start processing ProfileDocumentUpdateRequest!");
|
log.trace("Start processing ProfileDocumentUpdateRequest!");
|
||||||
//
|
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(profileDocumentUpdateRequestBaseRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(profileDocumentUpdateRequestBaseRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(
|
requestInfoUpdate = validationHelper.validateTillFirstError(
|
||||||
// profileDocumentUpdateRequestBaseRequest,
|
profileDocumentUpdateRequestBaseRequest,
|
||||||
// profileDocumentUpdateRequestValidator
|
profileDocumentUpdateRequestValidator
|
||||||
// );
|
);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
//
|
|
||||||
// ProfileDocumentUpdateRequest profileDocumentUpdateRequest = profileDocumentUpdateRequestBaseRequest.getRequestPayload();
|
ProfileDocumentUpdateRequest profileDocumentUpdateRequest = profileDocumentUpdateRequestBaseRequest.getRequestPayload();
|
||||||
// ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentUpdateRequest.getId());
|
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(profileDocumentUpdateRequest.getId());
|
||||||
//
|
|
||||||
// String prevDocType = profileDocument.getDocumentType();
|
String prevDocType = profileDocument.getDocumentType();
|
||||||
// if (profileDocumentUpdateRequest.getCompanyId() != null && !profileDocumentUpdateRequest.getCompanyId().equals(profileDocument.getCompanyId())) {
|
if (profileDocumentUpdateRequest.getCompanyId() != null && !profileDocumentUpdateRequest.getCompanyId().equals(profileDocument.getCompanyId())) {
|
||||||
// log.warn("profileDocumentUpdateRequest[{}] CompanyId {} not match", profileDocumentUpdateRequest.getId(), profileDocumentUpdateRequest.getCompanyId());
|
log.warn("profileDocumentUpdateRequest[{}] CompanyId {} not match", profileDocumentUpdateRequest.getId(), profileDocumentUpdateRequest.getCompanyId());
|
||||||
// return requestHelper.makeErrorResponse(profileDocumentUpdateRequestBaseRequest, CompanyErrors.WrongFieldValue, "companyId");
|
return requestHelper.makeErrorResponse(profileDocumentUpdateRequestBaseRequest, CompanyErrors.WrongFieldValue, "companyId");
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getDocumentType() != null)
|
if (profileDocumentUpdateRequest.getDocumentType() != null)
|
||||||
// profileDocument.setDocumentType(profileDocumentUpdateRequest.getDocumentType());
|
profileDocument.setDocumentType(profileDocumentUpdateRequest.getDocumentType());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getIssueDate() != null)
|
if (profileDocumentUpdateRequest.getIssueDate() != null)
|
||||||
// profileDocument.setIssueDate(profileDocumentUpdateRequest.getIssueDate());
|
profileDocument.setIssueDate(profileDocumentUpdateRequest.getIssueDate());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getIssuePlace() != null)
|
if (profileDocumentUpdateRequest.getIssuePlace() != null)
|
||||||
// profileDocument.setIssuePlace(profileDocumentUpdateRequest.getIssuePlace());
|
profileDocument.setIssuePlace(profileDocumentUpdateRequest.getIssuePlace());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getIssuer() != null)
|
if (profileDocumentUpdateRequest.getIssuer() != null)
|
||||||
// profileDocument.setIssuer(profileDocumentUpdateRequest.getIssuer());
|
profileDocument.setIssuer(profileDocumentUpdateRequest.getIssuer());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getIssuerCode() != null)
|
if (profileDocumentUpdateRequest.getIssuerCode() != null)
|
||||||
// profileDocument.setIssuerCode(profileDocumentUpdateRequest.getIssuerCode());
|
profileDocument.setIssuerCode(profileDocumentUpdateRequest.getIssuerCode());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getName() != null)
|
if (profileDocumentUpdateRequest.getName() != null)
|
||||||
// profileDocument.setName(profileDocumentUpdateRequest.getName());
|
profileDocument.setName(profileDocumentUpdateRequest.getName());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getNumber() != null)
|
if (profileDocumentUpdateRequest.getNumber() != null)
|
||||||
// profileDocument.setNumber(profileDocumentUpdateRequest.getNumber());
|
profileDocument.setNumber(profileDocumentUpdateRequest.getNumber());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getPlace() != null)
|
if (profileDocumentUpdateRequest.getPlace() != null)
|
||||||
// profileDocument.setPlace(profileDocumentUpdateRequest.getPlace());
|
profileDocument.setPlace(profileDocumentUpdateRequest.getPlace());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getValidFromDate() != null)
|
if (profileDocumentUpdateRequest.getValidFromDate() != null)
|
||||||
// profileDocument.setValidFromDate(profileDocumentUpdateRequest.getValidFromDate());
|
profileDocument.setValidFromDate(profileDocumentUpdateRequest.getValidFromDate());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getValidToDate() != null)
|
if (profileDocumentUpdateRequest.getValidToDate() != null)
|
||||||
// profileDocument.setValidToDate(profileDocumentUpdateRequest.getValidToDate());
|
profileDocument.setValidToDate(profileDocumentUpdateRequest.getValidToDate());
|
||||||
//
|
|
||||||
// if (profileDocumentUpdateRequest.getLink() != null)
|
if (profileDocumentUpdateRequest.getLink() != null)
|
||||||
// profileDocument.setLink(profileDocumentUpdateRequest.getLink());
|
profileDocument.setLink(profileDocumentUpdateRequest.getLink());
|
||||||
//
|
|
||||||
// profileDocumentMap.insert(profileDocument);
|
profileDocumentMap.insert(profileDocument);
|
||||||
//
|
|
||||||
// log.trace("successfully processed, id {}", profileDocument.getId());
|
log.trace("successfully processed, id {}", profileDocument.getId());
|
||||||
//
|
|
||||||
// if (!Objects.equals(prevDocType, profileDocument.getDocumentType()) &&
|
if (!Objects.equals(prevDocType, profileDocument.getDocumentType()) &&
|
||||||
// DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
||||||
// processXCNT(profileDocument);
|
processXCNT(profileDocument);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// protected void processXCNT(ProfileDocument profileDocument) {
|
protected void processXCNT(ProfileDocument profileDocument) {
|
||||||
// Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
||||||
// if (existCompany == null) {
|
if (existCompany == null) {
|
||||||
// log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
// if (!WorkflowStatus.Active.equalsByKey(existCompany.getWorkflowStatus())) {
|
if (!WorkflowStatus.Active.equalsByKey(existCompany.getWorkflowStatus())) {
|
||||||
// log.warn("Current workflowStatus {} for company {}. Do not termination account.",
|
log.warn("Current workflowStatus {} for company {}. Do not termination account.",
|
||||||
// existCompany.getWorkflowStatus(), existCompany.getId());
|
existCompany.getWorkflowStatus(), existCompany.getId());
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// CompanyErrors hasError = accountNotificationHelper.accountTerminationByDocumentNotification(profileDocument.getCompanyId(), profileDocument.getId());
|
CompanyErrors hasError = accountNotificationHelper.accountTerminationByDocumentNotification(profileDocument.getCompanyId(), profileDocument.getId());
|
||||||
// if (hasError != null) {
|
if (hasError != null) {
|
||||||
// log.error("Error at termination account of company {} by document {}: {}",
|
log.error("Error at termination account of company {} by document {}: {}",
|
||||||
// profileDocument.getCompanyId(), profileDocument.getId(), hasError + "(" + hasError.getId() + ")");
|
profileDocument.getCompanyId(), profileDocument.getId(), hasError + "(" + hasError.getId() + ")");
|
||||||
// }
|
}
|
||||||
// log.debug("Now wait notification from account-service.");
|
log.debug("Now wait notification from account-service.");
|
||||||
// /* processXCNT
|
/* processXCNT
|
||||||
// Дальнейшая обработка документа о расторжении, то есть обновление статусов в company и relation, возможна только после ответа об успешном обновлении статуса в account.
|
Дальнейшая обработка документа о расторжении, то есть обновление статусов в company и relation, возможна только после ответа об успешном обновлении статуса в account.
|
||||||
// ACCOUNT_TERMINATION -> ACCOUNT_TERMINATION_STEP2
|
ACCOUNT_TERMINATION -> ACCOUNT_TERMINATION_STEP2
|
||||||
// 1.2. Обновить статус в бизнес-объекте company [profileDocument.companyId=company.id] согласно описанию с тегом "При расторжении".
|
1.2. Обновить статус в бизнес-объекте company [profileDocument.companyId=company.id] согласно описанию с тегом "При расторжении".
|
||||||
// 1.3. Обновить статус в бизнес-объекте relation [profileDocument.companyId=relation.consumerId] согласно описанию с тегом "При расторжении".
|
1.3. Обновить статус в бизнес-объекте relation [profileDocument.companyId=relation.consumerId] согласно описанию с тегом "При расторжении".
|
||||||
// */
|
*/
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,5 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import static ru.spcex.platform.enumeration.Service.FOND;
|
|
||||||
import static ru.spcex.platform.enumeration.Service.MKR;
|
|
||||||
import static ru.spcex.platform.enumeration.ServiceStatus.Closed;
|
|
||||||
import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
|
|
@ -27,6 +15,7 @@ import ru.clearing.classes.statics.data.company.relation.Relation;
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
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.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
||||||
|
|
@ -47,7 +36,19 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.error.ValidationException;
|
import ru.spcex.platform.utils.error.ValidationException;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
@Deprecated
|
import java.time.Instant;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static ru.spcex.platform.enumeration.Service.FOND;
|
||||||
|
import static ru.spcex.platform.enumeration.Service.MKR;
|
||||||
|
import static ru.spcex.platform.enumeration.ServiceStatus.Closed;
|
||||||
|
import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class RelationService extends QueueConsumer implements InitializingBean {
|
public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
protected static final Long SPVB_ID = 1L; // СПВБ
|
protected static final Long SPVB_ID = 1L; // СПВБ
|
||||||
|
|
@ -103,16 +104,16 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
// this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
// this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||||
// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
|
||||||
// callback(RelationNewRequest.class)
|
callback(RelationNewRequest.class)
|
||||||
// .setFunction(this::relationNew)
|
.setFunction(this::relationNew)
|
||||||
// .forDestination(Consts.DESTINATION_RELATION_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_RELATION_NEW, callbacks::put);
|
||||||
// callback(RelationUpdateRequest.class)
|
callback(RelationUpdateRequest.class)
|
||||||
// .setFunction(this::relationUpdate)
|
.setFunction(this::relationUpdate)
|
||||||
// .forDestination(Consts.DESTINATION_RELATION_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_RELATION_UPDATE, callbacks::put);
|
||||||
// callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
// .setFunction(this::relationDelete)
|
.setFunction(this::relationDelete)
|
||||||
// .forDestination(Consts.DESTINATION_RELATION_DELETE, callbacks::put);
|
.forDestination(Consts.DESTINATION_RELATION_DELETE, callbacks::put);
|
||||||
// init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized RequestInfoUpdate relationNew(BaseRequest<RelationNewRequest> relationNewBaseRequest) {
|
private synchronized RequestInfoUpdate relationNew(BaseRequest<RelationNewRequest> relationNewBaseRequest) {
|
||||||
|
|
@ -561,7 +562,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
|
|
||||||
// --- internal API ---
|
// --- internal API ---
|
||||||
|
|
||||||
public void createNewRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
protected void createNewRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
||||||
Objects.requireNonNull(companyId, "companyId");
|
Objects.requireNonNull(companyId, "companyId");
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||||
Company company = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class).getFirstObjectByFieldValues(Map.of("id", companyId));
|
Company company = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class).getFirstObjectByFieldValues(Map.of("id", companyId));
|
||||||
|
|
@ -598,7 +599,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
/**
|
/**
|
||||||
* Приходит от ClearingMemberCategory
|
* Приходит от ClearingMemberCategory
|
||||||
*/
|
*/
|
||||||
public void cancelRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
protected void cancelRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
||||||
log.debug("Cancelling relations for companyId={} and clearingMemberCategory {}", companyId, clearingMemberCategory == null ? null : clearingMemberCategory.getClearingMemberCategory());
|
log.debug("Cancelling relations for companyId={} and clearingMemberCategory {}", companyId, clearingMemberCategory == null ? null : clearingMemberCategory.getClearingMemberCategory());
|
||||||
Objects.requireNonNull(companyId, "companyId");
|
Objects.requireNonNull(companyId, "companyId");
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||||
|
|
@ -641,7 +642,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cancelAllRelationForCompany(ImdgTransaction transaction, Long companyId) {
|
protected void cancelAllRelationForCompany(ImdgTransaction transaction, Long companyId) {
|
||||||
Objects.requireNonNull(companyId, "companyId");
|
Objects.requireNonNull(companyId, "companyId");
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||||
Collection<Relation> relations = relationMap.getCollectionObjectsByFieldValues(Map.of("consumerId", companyId));
|
Collection<Relation> relations = relationMap.getCollectionObjectsByFieldValues(Map.of("consumerId", companyId));
|
||||||
|
|
@ -656,7 +657,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
log.debug("Cancelled {} relation (of {}) by company {}", cancelledN, relations.size(), companyId);
|
log.debug("Cancelled {} relation (of {}) by company {}", cancelledN, relations.size(), companyId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cancelingOfAgreementUpdateRelation(ImdgTransaction transaction, Long companyId) {
|
protected void cancelingOfAgreementUpdateRelation(ImdgTransaction transaction, Long companyId) {
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||||
Relation relation = relationMap.getFirstObjectByFieldValues(Map.of("consumerId", companyId));
|
Relation relation = relationMap.getFirstObjectByFieldValues(Map.of("consumerId", companyId));
|
||||||
if (relation == null) {
|
if (relation == null) {
|
||||||
|
|
@ -688,7 +689,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void onChangeWorkflowStatusOnlyRelationChange(ImdgTransaction transaction, Company company, String newStatus) throws ValidationException {
|
protected synchronized void onChangeWorkflowStatusOnlyRelationChange(ImdgTransaction transaction, Company company, String newStatus) throws ValidationException {
|
||||||
assert Objects.equals(newStatus, company.getWorkflowStatus());
|
assert Objects.equals(newStatus, company.getWorkflowStatus());
|
||||||
String query = String.format("consumerId=%s", company.getId());
|
String query = String.format("consumerId=%s", company.getId());
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -10,21 +9,31 @@ 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.company.SettlementHouseProperties;
|
import ru.clearing.classes.statics.data.company.SettlementHouseProperties;
|
||||||
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
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.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
||||||
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.util.security.UserRoleVerification;
|
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
import ru.spcex.clearing.util.services.RequestHelper;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
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.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.error.ValidationException;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
@Deprecated
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class SettlementHousePropertiesService extends QueueConsumer implements InitializingBean {
|
public class SettlementHousePropertiesService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
@ -71,76 +80,76 @@ public class SettlementHousePropertiesService extends QueueConsumer implements I
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
// callback(SettlementHousePropertyNewRequest.class)
|
callback(SettlementHousePropertyNewRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::createSettlementHouseProperty, request))
|
.setFunction(request -> requestHelper.requestFunction(this::createSettlementHouseProperty, request))
|
||||||
// .forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW, callbacks::put);
|
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW, callbacks::put);
|
||||||
// callback(SettlementHousePropertyUpdateRequest.class)
|
callback(SettlementHousePropertyUpdateRequest.class)
|
||||||
// .setConsumer(request -> requestHelper.requestFunction(this::updateSettlementHouseProperty, request))
|
.setConsumer(request -> requestHelper.requestFunction(this::updateSettlementHouseProperty, request))
|
||||||
// .forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE, callbacks::put);
|
||||||
// callback(CommonDeleteRequest.class)
|
callback(CommonDeleteRequest.class)
|
||||||
// .setFunction(request -> requestHelper.requestFunction(this::deleteSettlementHouseProperty, request))
|
.setFunction(request -> requestHelper.requestFunction(this::deleteSettlementHouseProperty, request))
|
||||||
// .forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE
|
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE
|
||||||
// , callbacks::put);
|
, callbacks::put);
|
||||||
// init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
// private RequestInfoUpdate createSettlementHouseProperty(BaseRequest<SettlementHousePropertyNewRequest> settlementHousePropertyNewRequestBaseRequest) throws ValidationException {
|
private RequestInfoUpdate createSettlementHouseProperty(BaseRequest<SettlementHousePropertyNewRequest> settlementHousePropertyNewRequestBaseRequest) throws ValidationException {
|
||||||
// SettlementHousePropertyNewRequest req = settlementHousePropertyNewRequestBaseRequest.getRequestPayload();
|
SettlementHousePropertyNewRequest req = settlementHousePropertyNewRequestBaseRequest.getRequestPayload();
|
||||||
// log.debug("SettlementHouseProperty-new request received, BaseRequest.id = {}", settlementHousePropertyNewRequestBaseRequest.getId());
|
log.debug("SettlementHouseProperty-new request received, BaseRequest.id = {}", settlementHousePropertyNewRequestBaseRequest.getId());
|
||||||
// { // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyNewRequestBaseRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyNewRequestBaseRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyNewRequestBaseRequest, settlementHousePropertyNewRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyNewRequestBaseRequest, settlementHousePropertyNewRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
//
|
|
||||||
// SettlementHouseProperties shp = new SettlementHouseProperties();
|
SettlementHouseProperties shp = new SettlementHouseProperties();
|
||||||
// shp.setId(idSequence.nextId());
|
shp.setId(idSequence.nextId());
|
||||||
// shp.setCompanyId(req.getCompanyId());
|
shp.setCompanyId(req.getCompanyId());
|
||||||
// shp.setCurrencyCode(req.getCurrencyCode());
|
shp.setCurrencyCode(req.getCurrencyCode());
|
||||||
//
|
|
||||||
// settlementHousePropertiesMap.insert(shp);
|
settlementHousePropertiesMap.insert(shp);
|
||||||
// log.debug("New SettlementHouseProperties[{}] for company {}", shp.getId(), shp.getCompanyId());
|
log.debug("New SettlementHouseProperties[{}] for company {}", shp.getId(), shp.getCompanyId());
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// private RequestInfoUpdate updateSettlementHouseProperty(BaseRequest<SettlementHousePropertyUpdateRequest> settlementHousePropertyUpdateRequestBaseRequest) throws ValidationException {
|
private RequestInfoUpdate updateSettlementHouseProperty(BaseRequest<SettlementHousePropertyUpdateRequest> settlementHousePropertyUpdateRequestBaseRequest) throws ValidationException {
|
||||||
// SettlementHousePropertyUpdateRequest req = settlementHousePropertyUpdateRequestBaseRequest.getRequestPayload();
|
SettlementHousePropertyUpdateRequest req = settlementHousePropertyUpdateRequestBaseRequest.getRequestPayload();
|
||||||
// log.debug("SettlementHouseProperty-update request received, BaseRequest.id = {}", settlementHousePropertyUpdateRequestBaseRequest.getId());
|
log.debug("SettlementHouseProperty-update request received, BaseRequest.id = {}", settlementHousePropertyUpdateRequestBaseRequest.getId());
|
||||||
// { // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyUpdateRequestBaseRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyUpdateRequestBaseRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyUpdateRequestBaseRequest, settlementHousePropertyUpdateRequestRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyUpdateRequestBaseRequest, settlementHousePropertyUpdateRequestRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// SettlementHouseProperties shp = settlementHousePropertiesMap.getSingleObjectByID(req.getId());
|
SettlementHouseProperties shp = settlementHousePropertiesMap.getSingleObjectByID(req.getId());
|
||||||
//
|
|
||||||
// shp.setCompanyId(req.getCompanyId());
|
shp.setCompanyId(req.getCompanyId());
|
||||||
// shp.setCurrencyCode(req.getCurrencyCode());
|
shp.setCurrencyCode(req.getCurrencyCode());
|
||||||
//
|
|
||||||
// settlementHousePropertiesMap.update(shp);
|
settlementHousePropertiesMap.update(shp);
|
||||||
// log.debug("Update SettlementHouseProperty[{}] for company {}", shp.getId(), req.getCompanyId());
|
log.debug("Update SettlementHouseProperty[{}] for company {}", shp.getId(), req.getCompanyId());
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// private RequestInfoUpdate deleteSettlementHouseProperty(BaseRequest<CommonDeleteRequest> settlementHousePropertyDeleteRequest) throws ValidationException {
|
private RequestInfoUpdate deleteSettlementHouseProperty(BaseRequest<CommonDeleteRequest> settlementHousePropertyDeleteRequest) throws ValidationException {
|
||||||
// CommonDeleteRequest request = settlementHousePropertyDeleteRequest.getRequestPayload();
|
CommonDeleteRequest request = settlementHousePropertyDeleteRequest.getRequestPayload();
|
||||||
// log.debug("SettlementHousePropertyDeleteRequest received id = {}", request.getId());
|
log.debug("SettlementHousePropertyDeleteRequest received id = {}", request.getId());
|
||||||
// { // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyDeleteRequest);
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyDeleteRequest);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyDeleteRequest, settlementHousePropertiesDeleteRequestValidator);
|
requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyDeleteRequest, settlementHousePropertiesDeleteRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
// }
|
}
|
||||||
// SettlementHouseProperties settlementHouseProperty = settlementHousePropertiesMap.getSingleObjectByID(request.getId());
|
SettlementHouseProperties settlementHouseProperty = settlementHousePropertiesMap.getSingleObjectByID(request.getId());
|
||||||
// if (settlementHouseProperty == null) {
|
if (settlementHouseProperty == null) {
|
||||||
// return requestHelper.makeErrorResponse(settlementHousePropertyDeleteRequest, CompanyErrors.RecordNotFound, request.getId());
|
return requestHelper.makeErrorResponse(settlementHousePropertyDeleteRequest, CompanyErrors.RecordNotFound, request.getId());
|
||||||
// }
|
}
|
||||||
// settlementHousePropertiesMap.delete(settlementHouseProperty);
|
settlementHousePropertiesMap.delete(settlementHouseProperty);
|
||||||
// log.debug("SettlementHouseProperty {} for company {} delete", settlementHouseProperty.getId(), settlementHouseProperty.getCompanyId());
|
log.debug("SettlementHouseProperty {} for company {} delete", settlementHouseProperty.getId(), settlementHouseProperty.getCompanyId());
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,106 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.facade;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
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.imdg.api.ImdgTransaction;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ClearingMemberCategoryServiceFacade {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ImdgProvider imdgProvider;
|
|
||||||
private final ImdgId idSequence;
|
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryMap;
|
|
||||||
private final RelationServiceFacade relationServiceFacade;
|
|
||||||
|
|
||||||
public ClearingMemberCategoryServiceFacade(ImdgProvider imdgProvider,
|
|
||||||
RelationServiceFacade relationServiceFacade) {
|
|
||||||
this.imdgProvider = imdgProvider;
|
|
||||||
this.relationServiceFacade = relationServiceFacade;
|
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
|
||||||
this.clearingMemberCategoryMap = this.imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void create(ClearingMemberCategoryNewRequest request) {
|
|
||||||
ClearingMemberCategory newCategory = new ClearingMemberCategory();
|
|
||||||
newCategory.setId(idSequence.nextId());
|
|
||||||
newCategory.setCompanyId(request.getCompanyId());
|
|
||||||
newCategory.setClearingMemberCategory(request.getClearingMemberCategory());
|
|
||||||
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
if (IEnumKey.contains(newCategory.getClearingMemberCategory(), ClearingCategory.T, ClearingCategory.K)) {
|
|
||||||
log.debug("For category \"{}\" do not create relation.", newCategory.getClearingMemberCategory());
|
|
||||||
} else {
|
|
||||||
relationServiceFacade.createNewRelation(transaction, request.getCompanyId(), newCategory);
|
|
||||||
}
|
|
||||||
clearingMemberCategoryMap.insert(newCategory);
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
log.debug("Successfully processed, new category id {}", newCategory.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void update(ClearingMemberCategoryUpdateRequest request) {
|
|
||||||
ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(request.getId());
|
|
||||||
|
|
||||||
clearingMemberCategory.setClearingMemberCategory(request.getClearingMemberCategory());
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
//todo сложный кейс с возможным изменением релейшена или пересозданием. Скоро ТЗ доделают.
|
|
||||||
//companyService.relationService.updateExistRelation(transaction,clearingMemberCategory.getCompanyId(), oldClearingMemberCategory,
|
|
||||||
// clearingMemberCategory.getClearingMemberCategory());
|
|
||||||
relationServiceFacade.createNewRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
|
||||||
clearingMemberCategoryMap.insert(clearingMemberCategory);
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
|
|
||||||
log.debug("successfully processed, id {}", clearingMemberCategory.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(CommonDeleteRequest request) {
|
|
||||||
ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(request.getId());
|
|
||||||
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
clearingMemberCategoryMap.delete(clearingMemberCategory); // далить до cancelRelation внутри транзакции
|
|
||||||
if (clearingMemberCategory.getCompanyId() == null) { // never, только тестовые данные
|
|
||||||
log.warn("Deleted clearingMemberCategory[{}] has not companyId", clearingMemberCategory.getId());
|
|
||||||
} else {
|
|
||||||
relationServiceFacade.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory);
|
|
||||||
}
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
log.debug("clearingMemberCategory.id={} deleted.", clearingMemberCategory.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,93 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.facade;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.Objects;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
|
||||||
import ru.spcex.platform.utils.error.ValidationException;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanyInfoServiceFacade {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ImdgProvider imdgProvider;
|
|
||||||
private final Imdg<Company> companyMap;
|
|
||||||
private final RelationServiceFacade relationServiceFacade;
|
|
||||||
|
|
||||||
public CompanyInfoServiceFacade(ImdgProvider imdgProvider,
|
|
||||||
RelationServiceFacade relationServiceFacade) {
|
|
||||||
this.imdgProvider = imdgProvider;
|
|
||||||
this.relationServiceFacade = relationServiceFacade;
|
|
||||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors update(CompanyInfoUpdateRequest request) {
|
|
||||||
Company company = companyMap.getSingleObjectByID(request.getId());
|
|
||||||
if (company == null) {
|
|
||||||
log.trace("Company {} not found", request.getId());
|
|
||||||
return CompanyErrors.CompanyNotFound;
|
|
||||||
}
|
|
||||||
company.setUpdated(Instant.now());
|
|
||||||
if (StringUtils.isNotEmpty(request.getShortName()))
|
|
||||||
company.setShortName(request.getShortName());
|
|
||||||
if (StringUtils.isNotEmpty(request.getFullName()))
|
|
||||||
company.setFullName(request.getFullName());
|
|
||||||
CompanyInfo companyInfo = company.getProfile();
|
|
||||||
|
|
||||||
companyInfo.setCountryCode(request.getCountryCode());
|
|
||||||
companyInfo.setProfessionalSign(request.getProfessionalSign());
|
|
||||||
companyInfo.setLegalKind(request.getLegalKind());
|
|
||||||
companyInfo.setOrganizationType(request.getOrganizationType());
|
|
||||||
companyInfo.setResidence(request.getResidence());
|
|
||||||
|
|
||||||
companyInfo.setCorporationSoleType(request.getCorporationSoleType());
|
|
||||||
companyInfo.setDescription(request.getDescription());
|
|
||||||
companyInfo.setShortNameEng(request.getShortNameEng());
|
|
||||||
companyInfo.setFullNameEng(request.getFullNameEng());
|
|
||||||
|
|
||||||
boolean simpleUpdate = true;
|
|
||||||
if (request.getWorkflowStatus() != null) {
|
|
||||||
String prevStatus = company.getWorkflowStatus();
|
|
||||||
company.setWorkflowStatus(request.getWorkflowStatus());
|
|
||||||
if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
|
||||||
simpleUpdate = false;
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
relationServiceFacade.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
|
||||||
Imdg<Company> txCompanyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
txCompanyMap.update(company);
|
|
||||||
log.trace("Company {} updated", company.getId());
|
|
||||||
txOk = true;
|
|
||||||
} catch (ValidationException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.trace("Status was not changed");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.trace("Null new WorkflowStatus");
|
|
||||||
}
|
|
||||||
if (simpleUpdate) {
|
|
||||||
companyMap.update(company);
|
|
||||||
log.trace("Company {} updated", company.getId());
|
|
||||||
}
|
|
||||||
log.debug("successfully CompanyInfo processed, id {}", companyInfo.getId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,100 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.facade;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
|
||||||
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.imdg.api.predicate.ImdgPredicateBuilder;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanyRoleSetServiceFacade {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ImdgId idSequence;
|
|
||||||
private final Imdg<CompanyRoleSet> companyRoleSetMap;
|
|
||||||
|
|
||||||
public CompanyRoleSetServiceFacade(ImdgProvider imdgProvider) {
|
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
|
||||||
this.companyRoleSetMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors create(CompanyRoleSetNewRequest request) {
|
|
||||||
CompanyRoleSet existRole = companyRoleSetMap.getFirstObjectByFieldValues(Map.of(
|
|
||||||
"companyId", request.getCompanyId(),
|
|
||||||
"companyRole", request.getCompanyRole()
|
|
||||||
));
|
|
||||||
if (existRole != null) {
|
|
||||||
log.debug("Update exist CompanyRoleSet[{}] for company {}. Should use UPDATE method, action was rejected.",
|
|
||||||
existRole.getId(), request.getCompanyId());
|
|
||||||
return CompanyErrors.RecordAlreadyExist;
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyRoleSet newRole = new CompanyRoleSet();
|
|
||||||
newRole.setId(idSequence.nextId());
|
|
||||||
newRole.setCompanyId(request.getCompanyId());
|
|
||||||
newRole.setCompanyRole(request.getCompanyRole());
|
|
||||||
if (request.getWorkflowStatus() == null) {
|
|
||||||
newRole.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
} else {
|
|
||||||
newRole.setWorkflowStatus(request.getWorkflowStatus());
|
|
||||||
}
|
|
||||||
|
|
||||||
companyRoleSetMap.insert(newRole);
|
|
||||||
|
|
||||||
log.debug("New CompanyRoleSet[{}] for company {}", newRole.getId(), request.getCompanyId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors update(CompanyRoleSetUpdateRequest request) {
|
|
||||||
CompanyRoleSet role = companyRoleSetMap.getSingleObjectByID(request.getId());
|
|
||||||
|
|
||||||
if (!Objects.equals(role.getCompanyId(), request.getCompanyId()) || !Objects.equals(role.getCompanyRole(), request.getCompanyRole())) {
|
|
||||||
log.warn("By user request want change companyId or companyRole of CompanyRoleSet[{}]", request.getId());
|
|
||||||
ImdgPredicateBuilder p = companyRoleSetMap.predicateBuilder();
|
|
||||||
CompanyRoleSet existRole = companyRoleSetMap.getFirstObjectByPredicate(p.and(
|
|
||||||
p.equals("companyId", request.getCompanyId()),
|
|
||||||
p.equals("companyRole", request.getCompanyRole()),
|
|
||||||
p.not(p.equals("id", request.getId()))
|
|
||||||
));
|
|
||||||
if (existRole != null) {
|
|
||||||
log.debug("Role \"{}\" for company {} already exist with other id={}. Action was rejected.",
|
|
||||||
request.getCompanyRole(), request.getCompanyId(), existRole.getId());
|
|
||||||
return CompanyErrors.RecordAlreadyExist;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
role.setCompanyId(request.getCompanyId());
|
|
||||||
role.setCompanyRole(request.getCompanyRole());
|
|
||||||
if (request.getWorkflowStatus() != null) {
|
|
||||||
role.setWorkflowStatus(request.getWorkflowStatus());
|
|
||||||
}
|
|
||||||
|
|
||||||
companyRoleSetMap.update(role);
|
|
||||||
|
|
||||||
log.debug("Update CompanyRoleSet[{}] for company {}", role.getId(), request.getCompanyId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors delete(CommonDeleteRequest request) {
|
|
||||||
CompanyRoleSet role = companyRoleSetMap.getSingleObjectByID(request.getId());
|
|
||||||
|
|
||||||
if (role == null) {
|
|
||||||
return CompanyErrors.RecordNotFound;
|
|
||||||
}
|
|
||||||
|
|
||||||
companyRoleSetMap.delete(role);
|
|
||||||
|
|
||||||
log.debug("CompanyRoleSet {} for company {} delete", role.getId(), role.getCompanyId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,581 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.facade;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.function.BiFunction;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
|
||||||
import ru.clearing.classes.statics.data.profile.Contact;
|
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountTerminationRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyGatewayRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
|
||||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
|
||||||
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.imdg.api.ImdgTransaction;
|
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
|
||||||
import ru.spcex.platform.utils.error.ValidationException;
|
|
||||||
import ru.spcex.platform.utils.log.ExceptionUtils;
|
|
||||||
import ru.spcex.platform.utils.text.TextUtil;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanyServiceFacade {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final CompanyInfoServiceFacade companyInfoService;
|
|
||||||
private final ProfileDocumentServiceFacade profileDocumentService;
|
|
||||||
private final CompanySymbolServiceFacade companySymbolService;
|
|
||||||
private final ContactServiceFacade contactService;
|
|
||||||
private final ClearingMemberCategoryServiceFacade clearingMemberCategoryService;
|
|
||||||
private final IMessageResolver messageResolver;
|
|
||||||
|
|
||||||
private final ImdgProvider imdgProvider;
|
|
||||||
private final ImdgId idSequence;
|
|
||||||
private final Imdg<Company> companyImdg;
|
|
||||||
private final RelationServiceFacade relationServiceFacade;
|
|
||||||
final Imdg<CompanySymbols> companySymbolsImdg;
|
|
||||||
final Imdg<ProfileDocument> profileDocumentImdg;
|
|
||||||
final Imdg<Contact> contactImdg;
|
|
||||||
final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
|
||||||
|
|
||||||
public CompanyServiceFacade(CompanyInfoServiceFacade companyInfoService,
|
|
||||||
ProfileDocumentServiceFacade profileDocumentService,
|
|
||||||
CompanySymbolServiceFacade companySymbolService,
|
|
||||||
ContactServiceFacade contactService,
|
|
||||||
ClearingMemberCategoryServiceFacade clearingMemberCategoryService,
|
|
||||||
IMessageResolver messageResolver,
|
|
||||||
ImdgProvider imdgProvider,
|
|
||||||
RelationServiceFacade relationServiceFacade) {
|
|
||||||
this.companyInfoService = companyInfoService;
|
|
||||||
this.profileDocumentService = profileDocumentService;
|
|
||||||
this.companySymbolService = companySymbolService;
|
|
||||||
this.contactService = contactService;
|
|
||||||
this.clearingMemberCategoryService = clearingMemberCategoryService;
|
|
||||||
this.messageResolver = messageResolver;
|
|
||||||
this.imdgProvider = imdgProvider;
|
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
|
||||||
this.relationServiceFacade = relationServiceFacade;
|
|
||||||
|
|
||||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
|
||||||
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long create(CompanyNewRequest companyNewRequest) throws ValidationException {
|
|
||||||
log.debug("creating new company");
|
|
||||||
Instant now = Instant.now();
|
|
||||||
Company company = new Company();
|
|
||||||
company.setId(idSequence.nextId());
|
|
||||||
company.setCreated(now);
|
|
||||||
company.setUpdated(now);
|
|
||||||
company.setShortName(companyNewRequest.getShortName());
|
|
||||||
company.setFullName(companyNewRequest.getFullName());
|
|
||||||
company.setTradingCode(companyNewRequest.getTradingCode());
|
|
||||||
company.setClearingCode(companyNewRequest.getClearingCode());
|
|
||||||
company.setRegistrationCode(companyNewRequest.getRegistrationCode());
|
|
||||||
if (companyNewRequest.getWorkflowStatus() != null) {
|
|
||||||
company.setWorkflowStatus(companyNewRequest.getWorkflowStatus());
|
|
||||||
} else {
|
|
||||||
company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
}
|
|
||||||
if (company.getProfile() == null)
|
|
||||||
company.setProfile(new CompanyInfo());
|
|
||||||
CompanyInfo ci = company.getProfile();
|
|
||||||
ci.setId(company.getId());
|
|
||||||
ci.setCompanyId(company.getId());
|
|
||||||
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
if (companyNewRequest.getCompanySymbol() != null) {
|
|
||||||
CompanySymbols newSymbol = new CompanySymbols();
|
|
||||||
newSymbol.setId(idSequence.nextId());
|
|
||||||
newSymbol.setCompanyId(company.getId());
|
|
||||||
newSymbol.setCompanySymbol(companyNewRequest.getCompanySymbol());
|
|
||||||
newSymbol.setCompanySymbolValue(companyNewRequest.getCompanySymbolValue());
|
|
||||||
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), company.getId());
|
|
||||||
Imdg<CompanySymbols> companySymbolsImdg = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
companySymbolsImdg.insert(newSymbol);
|
|
||||||
log.debug("Creating companySymbols with id: {} by company.id: {} done", newSymbol.getId(), company.getId());
|
|
||||||
companySymbolService.updateCompanyBySymbol(company, newSymbol, false);
|
|
||||||
}
|
|
||||||
companyImdg.insert(company);
|
|
||||||
log.debug("company-new request processed, BaseRequest.id = {}, company.id={}",
|
|
||||||
companyNewRequest.getId(), company.getId());
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
return company.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void update(CompanyNewRequest updateRequest) throws ValidationException {
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
Company company = companyImdg.getSingleObjectByID(updateRequest.getId());
|
|
||||||
if (company == null) {
|
|
||||||
log.trace("Company {} not found", updateRequest.getId());
|
|
||||||
throw new ValidationException(new EnumMessage(CompanyErrors.CompanyNotFound));
|
|
||||||
}
|
|
||||||
// if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
|
||||||
// log.trace("Company {} not active: {}", company.getId(), company.getWorkflowStatus());
|
|
||||||
// return requestHelper.makeErrorResponse(companyUpdateRequestBaseRequest, CompanyErrors.CompanyDisabled, updateRequest.getId());
|
|
||||||
// }
|
|
||||||
|
|
||||||
company.setUpdated(Instant.now());
|
|
||||||
if (StringUtils.isNotEmpty(updateRequest.getShortName()))
|
|
||||||
company.setShortName(updateRequest.getShortName());
|
|
||||||
if (StringUtils.isNotEmpty(updateRequest.getFullName()))
|
|
||||||
company.setFullName(updateRequest.getFullName());
|
|
||||||
|
|
||||||
if (updateRequest.getCompanySymbol() != null || updateRequest.getCompanySymbolValue() != null) {
|
|
||||||
log.trace("Request field CompanySymbol, CompanySymbolValue ignore for update company request.");
|
|
||||||
}
|
|
||||||
|
|
||||||
String prevStatus = company.getWorkflowStatus();
|
|
||||||
if (updateRequest.getWorkflowStatus() != null) {
|
|
||||||
company.setWorkflowStatus(updateRequest.getWorkflowStatus());
|
|
||||||
if (!Objects.equals(prevStatus, company.getWorkflowStatus())) {
|
|
||||||
relationServiceFacade.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
|
||||||
} else {
|
|
||||||
log.trace("Status was not changed");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.trace("Null new WorkflowStatus");
|
|
||||||
}
|
|
||||||
companyImdg.update(company);
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors delete(CommonDeleteRequest deleteRequest) {
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
Company company = companyImdg.getSingleObjectByID(deleteRequest.getId());
|
|
||||||
if (company == null) {
|
|
||||||
return CompanyErrors.CompanyNotFound;
|
|
||||||
}
|
|
||||||
|
|
||||||
company.setUpdated(Instant.now());
|
|
||||||
|
|
||||||
String prevStatus = company.getWorkflowStatus();
|
|
||||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
|
||||||
|
|
||||||
relationServiceFacade.onChangeWorkflowStatus(transaction, company, prevStatus, company.getWorkflowStatus());
|
|
||||||
log.debug("Update company.id={}", company.getId());
|
|
||||||
companyImdg.update(company);
|
|
||||||
|
|
||||||
txOk = true;
|
|
||||||
} catch (ValidationException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors blockCompany(CommonDeleteRequest blockRequest) {
|
|
||||||
Company company = companyImdg.getSingleObjectByID(blockRequest.getId());
|
|
||||||
if (company == null) {
|
|
||||||
return CompanyErrors.CompanyNotFound;
|
|
||||||
}
|
|
||||||
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
|
||||||
return CompanyErrors.CompanyDisabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
|
|
||||||
company.setUpdated(Instant.now());
|
|
||||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
|
||||||
|
|
||||||
relationServiceFacade.onChangeWorkflowStatusOnlyRelationChange(transaction, company, company.getWorkflowStatus());
|
|
||||||
log.debug("Update company.id={}", company.getId());
|
|
||||||
companyMap.update(company);
|
|
||||||
|
|
||||||
txOk = true;
|
|
||||||
} catch (ValidationException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors terminateAccount(AccountTerminationRequest terminationRequest) {
|
|
||||||
log.debug("Finish block company {}", terminationRequest.getCompanyId());
|
|
||||||
ImdgTransaction tx = imdgProvider.newTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
tx.beginTransaction();
|
|
||||||
try {
|
|
||||||
Company company = companyImdg.getSingleObjectByID(terminationRequest.getCompanyId());
|
|
||||||
if (company == null) {
|
|
||||||
log.warn("Company {} not found", terminationRequest.getCompanyId());
|
|
||||||
//return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
|
||||||
}
|
|
||||||
if (WorkflowStatus.Blocked.equalsByKey(Objects.requireNonNull(company).getWorkflowStatus())) {
|
|
||||||
log.info("Company {} already blocked", company.getId());
|
|
||||||
//return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled);
|
|
||||||
} else {
|
|
||||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
|
||||||
company.setUpdated(Instant.now());
|
|
||||||
companyImdg.update(company);
|
|
||||||
}
|
|
||||||
|
|
||||||
relationServiceFacade.cancelAllRelationForCompany(tx, terminationRequest.getCompanyId());
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk) tx.commitTransaction();
|
|
||||||
else tx.rollbackTransaction();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean createUpdateMultiCompany(CompanyGatewayRequest createRequest) {
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
|
|
||||||
Long companyId = getCompanyIdForCompanySymbols(createRequest.getUuid(), createRequest.getCompany(), createRequest.getCompanySymbols());
|
|
||||||
|
|
||||||
try {
|
|
||||||
createRequest.setCompanySymbols(
|
|
||||||
Stream.concat(createRequest.getCompanySymbols().stream(), additionalSymbols(createRequest.getCompany())).collect(Collectors.toList())
|
|
||||||
);
|
|
||||||
|
|
||||||
log.debug("For request with uuid {} company {}.", createRequest.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId));
|
|
||||||
|
|
||||||
if (companyId == null) {
|
|
||||||
companyId = create(createRequest.getCompany());
|
|
||||||
log.debug("The companyId={}", companyId);
|
|
||||||
fillCompanyId(createRequest, companyId);
|
|
||||||
} else {
|
|
||||||
fillCompanyId(createRequest, companyId);
|
|
||||||
update(createRequest.getCompany());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (createRequest.getCompanyInfo() != null) {
|
|
||||||
log.trace("For company {} do update CompanyInfo", companyId);
|
|
||||||
companyInfoService.update(createRequest.getCompanyInfo());
|
|
||||||
// validateReply(companyId, "CompanyInfo", replyI);
|
|
||||||
}
|
|
||||||
createUpdateProfileDocument(createRequest, companyId);
|
|
||||||
createUpdateCompanySymbol(createRequest, companyId);
|
|
||||||
createUpdateContract(createRequest, companyId);
|
|
||||||
createUpdateClearingMemberCategory(createRequest, companyId);
|
|
||||||
|
|
||||||
log.debug("Create or update sendNewClientCode for company {}", companyId);
|
|
||||||
return true;
|
|
||||||
} catch (ValidationException vex) {
|
|
||||||
log.error("For gateway request.id={}, companyId={} error validate: {}", createRequest.getUuid(), companyId, messageResolver.resolve(vex.getEnumMsg()));
|
|
||||||
log.trace("For companyId={} error validation: {}", companyId, ExceptionUtils.getStackTrace(vex));
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createUpdateProfileDocument(CompanyGatewayRequest baseRequest, Long companyId) {
|
|
||||||
for (ProfileDocumentNewRequest partRequest : baseRequest.getProfileDocuments()) {
|
|
||||||
ProfileDocument existDocument = findCompanyDocument(partRequest);
|
|
||||||
if (existDocument == null) {
|
|
||||||
log.trace("For company[{}] do new profileDocument", companyId);
|
|
||||||
profileDocumentService.create(partRequest);
|
|
||||||
// validateReply(companyId, "profileDocumentNew", requestInfoUpdate);
|
|
||||||
} else {
|
|
||||||
log.trace("For company[{}] do update profileDocument[{}]", companyId, existDocument.getId());
|
|
||||||
ProfileDocumentUpdateRequest partUpdateRequest = ProfileDocumentUpdateRequest.builder()
|
|
||||||
.id(existDocument.getId())
|
|
||||||
.companyId(partRequest.getCompanyId())
|
|
||||||
.documentType(partRequest.getDocumentType())
|
|
||||||
.issueDate(partRequest.getIssueDate())
|
|
||||||
.issuePlace(partRequest.getIssuePlace())
|
|
||||||
.issuer(partRequest.getIssuer())
|
|
||||||
.issuerCode(partRequest.getIssuerCode())
|
|
||||||
.name(partRequest.getName())
|
|
||||||
.number(partRequest.getNumber())
|
|
||||||
.place(partRequest.getPlace())
|
|
||||||
.validFromDate(partRequest.getValidFromDate())
|
|
||||||
.validToDate(partRequest.getValidToDate())
|
|
||||||
.link(partRequest.getLink())
|
|
||||||
.build();
|
|
||||||
profileDocumentService.update(partUpdateRequest);
|
|
||||||
// validateReply(companyId, "profileDocumentUpdate", requestInfoUpdate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createUpdateCompanySymbol(CompanyGatewayRequest baseRequest, Long companyId) throws ValidationException {
|
|
||||||
for (CompanySymbolNewRequest partRequest : baseRequest.getCompanySymbols()) {
|
|
||||||
CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
|
||||||
if (existSymbol == null) {
|
|
||||||
log.trace("For company[{}] do new companySymbol", companyId);
|
|
||||||
companySymbolService.create(partRequest);
|
|
||||||
} else {
|
|
||||||
log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
|
||||||
CompanySymbolUpdateRequest partUpdateRequest = CompanySymbolUpdateRequest.builder()
|
|
||||||
.id(existSymbol.getId())
|
|
||||||
.companyId(partRequest.getCompanyId())
|
|
||||||
.companySymbol(partRequest.getCompanySymbol())
|
|
||||||
.companySymbolValue(partRequest.getCompanySymbolValue())
|
|
||||||
.build();
|
|
||||||
companySymbolService.update(partUpdateRequest);
|
|
||||||
// validateReply(companyId, "companySymbolUpdate", requestInfoUpdate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createUpdateContract(CompanyGatewayRequest baseRequest, Long companyId) {
|
|
||||||
for (ContactNewRequest partRequest : baseRequest.getContacts()) {
|
|
||||||
Contact existContact = findContact(partRequest);
|
|
||||||
if (existContact == null) {
|
|
||||||
log.trace("For company[{}] do new contact", companyId);
|
|
||||||
contactService.create(partRequest);
|
|
||||||
// validateReply(companyId, "contactNew", requestInfoUpdate);
|
|
||||||
} else {
|
|
||||||
log.trace("For company[{}] do update contact[{}]", companyId, existContact.getId());
|
|
||||||
ContactUpdateRequest partUpdateRequest = ContactUpdateRequest.builder()
|
|
||||||
.id(existContact.getId())
|
|
||||||
.contactType(partRequest.getContactType())
|
|
||||||
.contactValue(partRequest.getContactValue())
|
|
||||||
.build();
|
|
||||||
contactService.update(partUpdateRequest);
|
|
||||||
// validateReply(companyId, "contactUpdate", requestInfoUpdate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createUpdateClearingMemberCategory(CompanyGatewayRequest baseRequest, Long companyId) {
|
|
||||||
for (ClearingMemberCategoryNewRequest partRequest : baseRequest.getCategories()) {
|
|
||||||
ClearingMemberCategory existCategory = findCategory(partRequest);
|
|
||||||
if (existCategory == null) {
|
|
||||||
log.trace("For company[{}] do new category", companyId);
|
|
||||||
clearingMemberCategoryService.create(partRequest);
|
|
||||||
// validateReply(companyId, "contactNew", requestInfoUpdate);
|
|
||||||
} else {
|
|
||||||
log.trace("For company[{}] do update category[{}]", companyId, existCategory.getId());
|
|
||||||
ClearingMemberCategoryUpdateRequest partUpdateRequest = ClearingMemberCategoryUpdateRequest.builder()
|
|
||||||
.id(existCategory.getId())
|
|
||||||
.clearingMemberCategory(partRequest.getClearingMemberCategory())
|
|
||||||
.build();
|
|
||||||
clearingMemberCategoryService.update(partUpdateRequest);
|
|
||||||
// validateReply(companyId, "categoryUpdate", requestInfoUpdate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Stream<CompanySymbolNewRequest> additionalSymbols(CompanyNewRequest companyNewReq) {
|
|
||||||
BiFunction<String, String, Optional<CompanySymbolNewRequest>> symbolCreation = (companySymbol, companySymbolValue) -> {
|
|
||||||
if (companySymbolValue == null || TextUtil.isEmpty(companySymbolValue)) {
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
|
||||||
companySymbolNewRequest.setCompanySymbol(companySymbol);
|
|
||||||
companySymbolNewRequest.setCompanySymbolValue(companySymbolValue);
|
|
||||||
return Optional.of(companySymbolNewRequest);
|
|
||||||
};
|
|
||||||
return Stream.of(symbolCreation.apply(CompanySymbol.TRDC.getKey(), companyNewReq.getTradingCode()),
|
|
||||||
symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()),
|
|
||||||
symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()),
|
|
||||||
symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode()))
|
|
||||||
.filter(Optional::isPresent)
|
|
||||||
.map(Optional::get);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProfileDocument findCompanyDocument(ProfileDocumentNewRequest partRequest) {
|
|
||||||
Map<String, Comparable<?>> query = new HashMap<>();
|
|
||||||
query.put("companyId", partRequest.getCompanyId());
|
|
||||||
query.put("documentType", partRequest.getDocumentType());
|
|
||||||
query.put("issueDate", partRequest.getIssueDate()); // может быть null
|
|
||||||
Collection<ProfileDocument> allDoc = profileDocumentImdg.getCollectionObjectsByFieldValues(query);
|
|
||||||
if (allDoc.isEmpty())
|
|
||||||
return null;
|
|
||||||
if (allDoc.size() > 1)
|
|
||||||
log.warn("Fount {} ProfileDocument by: {}", allDoc.size(), query);
|
|
||||||
return allDoc.iterator().next();
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanySymbols findCompanySymbols(CompanySymbolNewRequest partRequest) {
|
|
||||||
Map<String, Comparable<?>> query = new HashMap<>();
|
|
||||||
query.put("companyId", partRequest.getCompanyId());
|
|
||||||
query.put("companySymbol", partRequest.getCompanySymbol());
|
|
||||||
Collection<CompanySymbols> allCS = companySymbolsImdg.getCollectionObjectsByFieldValues(query);
|
|
||||||
if (allCS.isEmpty())
|
|
||||||
return null;
|
|
||||||
if (allCS.size() > 1)
|
|
||||||
log.warn("Fount {} CompanySymbols by: {}", allCS.size(), query);
|
|
||||||
return allCS.iterator().next();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Contact findContact(ContactNewRequest partRequest) {
|
|
||||||
Map<String, Comparable<?>> query = new HashMap<>();
|
|
||||||
query.put("companyId", partRequest.getCompanyId());
|
|
||||||
query.put("contactType", partRequest.getContactType());
|
|
||||||
Collection<Contact> allCS = contactImdg.getCollectionObjectsByFieldValues(query);
|
|
||||||
if (allCS.isEmpty())
|
|
||||||
return null;
|
|
||||||
if (allCS.size() > 1)
|
|
||||||
log.warn("Fount {} Contact by: {}", allCS.size(), query);
|
|
||||||
return allCS.iterator().next();
|
|
||||||
}
|
|
||||||
|
|
||||||
private ClearingMemberCategory findCategory(ClearingMemberCategoryNewRequest partRequest) {
|
|
||||||
Map<String, Comparable<?>> query = new HashMap<>();
|
|
||||||
query.put("companyId", partRequest.getCompanyId());
|
|
||||||
query.put("clearingMemberCategory", partRequest.getClearingMemberCategory());
|
|
||||||
Collection<ClearingMemberCategory> allCS = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(query);
|
|
||||||
if (allCS.isEmpty())
|
|
||||||
return null;
|
|
||||||
if (allCS.size() > 1)
|
|
||||||
log.warn("Fount {} ClearingMemberCategory by: {}", allCS.size(), query);
|
|
||||||
return allCS.iterator().next();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr, Collection<CompanySymbolNewRequest> companySymbols) {
|
|
||||||
CompanySymbols companySymbol = null;
|
|
||||||
if (StringUtils.isNotEmpty(uuid)) {
|
|
||||||
log.trace("Search company by companySymbol uuid={}", uuid);
|
|
||||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
|
||||||
Map.of(
|
|
||||||
"companySymbol", CompanySymbol.UUID.getKey(),
|
|
||||||
"companySymbolValue", uuid
|
|
||||||
)
|
|
||||||
);
|
|
||||||
if (!companySymbolsFromImdg.isEmpty()) {
|
|
||||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
|
||||||
if (companySymbolsFromImdg.size() > 1) {
|
|
||||||
log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbol.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue())
|
|
||||||
&& IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.UUID, CompanySymbol.INN, CompanySymbol.CIO)) { // вероятно там будет только UUID
|
|
||||||
{
|
|
||||||
String companySymbolType = cnr.getCompanySymbol();
|
|
||||||
log.debug("Company not found by UUID=\"{}\", try find by {}={}",
|
|
||||||
uuid, companySymbolType, cnr.getCompanySymbolValue());
|
|
||||||
log.trace("Search company by companySymbol {}={}", companySymbolType, cnr.getCompanySymbolValue());
|
|
||||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
|
||||||
Map.of(
|
|
||||||
"companySymbol", companySymbolType,
|
|
||||||
"companySymbolValue", cnr.getCompanySymbolValue()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
if (!companySymbolsFromImdg.isEmpty()) {
|
|
||||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
|
||||||
if (companySymbolsFromImdg.size() > 1) {
|
|
||||||
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cnr.getCompanySymbolValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (companySymbol == null && companySymbols != null) {
|
|
||||||
for (CompanySymbolNewRequest cSymbolReq : companySymbols) {
|
|
||||||
if (IEnumKey.contains(cSymbolReq.getCompanySymbol(), CompanySymbol.INN, CompanySymbol.CIO)) {
|
|
||||||
String companySymbolType = cSymbolReq.getCompanySymbol();
|
|
||||||
log.debug("Company not found by UUID=\"{}\", try find by {}", uuid, companySymbolType);
|
|
||||||
log.trace("Search company by companySymbol {}={}", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
|
||||||
Collection<CompanySymbols> companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
|
||||||
Map.of(
|
|
||||||
"companySymbol", companySymbolType,
|
|
||||||
"companySymbolValue", cSymbolReq.getCompanySymbolValue()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
if (!companySymbolsFromImdg.isEmpty()) {
|
|
||||||
companySymbol = companySymbolsFromImdg.iterator().next();
|
|
||||||
if (companySymbolsFromImdg.size() > 1) {
|
|
||||||
log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cSymbolReq.getCompanySymbolValue());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (companySymbol != null)
|
|
||||||
return companySymbol.getCompanyId();
|
|
||||||
else
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void fillCompanyId(CompanyGatewayRequest req, Long companyId) {
|
|
||||||
if (req.getCompany() != null) {
|
|
||||||
req.getCompany().setId(companyId);
|
|
||||||
}
|
|
||||||
if (req.getCompanyInfo() != null) {
|
|
||||||
req.getCompanyInfo().setId(companyId);
|
|
||||||
}
|
|
||||||
if (req.getCompanySymbols() == null) req.setCompanySymbols(new ArrayList<>());
|
|
||||||
if (req.getClientCodes() == null) req.setClientCodes(new ArrayList<>());
|
|
||||||
if (req.getProfileDocuments() == null) req.setProfileDocuments(new ArrayList<>());
|
|
||||||
if (req.getContacts() == null) req.setContacts(new ArrayList<>());
|
|
||||||
for (CompanySymbolNewRequest cs : req.getCompanySymbols()) {
|
|
||||||
cs.setCompanyId(companyId);
|
|
||||||
}
|
|
||||||
for (ClientCodeNewRequest cc : req.getClientCodes()) {
|
|
||||||
cc.setCompanyId(companyId);
|
|
||||||
}
|
|
||||||
for (ProfileDocumentNewRequest pd : req.getProfileDocuments()) {
|
|
||||||
pd.setCompanyId(companyId);
|
|
||||||
}
|
|
||||||
for (ContactNewRequest c : req.getContacts()) {
|
|
||||||
c.setCompanyId(companyId);
|
|
||||||
}
|
|
||||||
for (ClearingMemberCategoryNewRequest c : req.getCategories()) {
|
|
||||||
c.setCompanyId(companyId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,158 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.facade;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
|
||||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
|
||||||
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.imdg.api.ImdgTransaction;
|
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
|
||||||
import ru.spcex.platform.utils.error.ClearingBaseException;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanySymbolServiceFacade {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ImdgProvider imdgProvider;
|
|
||||||
private final ImdgId idSequence;
|
|
||||||
private final Imdg<CompanySymbols> companySymbolsTMap;
|
|
||||||
private final Imdg<Company> companyMap;
|
|
||||||
|
|
||||||
|
|
||||||
public CompanySymbolServiceFacade(ImdgProvider imdgProvider) {
|
|
||||||
this.imdgProvider = imdgProvider;
|
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
|
||||||
this.companySymbolsTMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void create(CompanySymbolNewRequest request) {
|
|
||||||
CompanySymbols newSymbol = new CompanySymbols();
|
|
||||||
newSymbol.setId(idSequence.nextId());
|
|
||||||
newSymbol.setCompanyId(request.getCompanyId());
|
|
||||||
newSymbol.setCompanySymbol(request.getCompanySymbol());
|
|
||||||
newSymbol.setCompanySymbolValue(request.getCompanySymbolValue());
|
|
||||||
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), request.getCompanyId());
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
companySymbolsTMap.update(newSymbol);
|
|
||||||
|
|
||||||
Company company = companyMap.getSingleObjectByID(newSymbol.getCompanyId());
|
|
||||||
updateCompanyBySymbol(company, newSymbol, false);
|
|
||||||
companyMap.update(company);
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnumMessage update(CompanySymbolUpdateRequest request) {
|
|
||||||
CompanySymbols companySymbols;
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
companySymbols = companySymbolsTMap.getSingleObjectByID(request.getId());
|
|
||||||
if (companySymbols == null) {
|
|
||||||
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, request.getId()));
|
|
||||||
}
|
|
||||||
if (request.getCompanySymbol() != null && !companySymbols.getCompanySymbol().equalsIgnoreCase(request.getCompanySymbol())) {
|
|
||||||
log.debug("Change CompanySymbol[{}].CompanySymbol from \"{}\" to \"{}\"",
|
|
||||||
companySymbols.getId(), companySymbols.getCompanySymbol(), request.getCompanySymbol());
|
|
||||||
updateCompanyBySymbol(companySymbols, true);
|
|
||||||
companySymbols.setCompanySymbol(request.getCompanySymbol());
|
|
||||||
}
|
|
||||||
companySymbols.setCompanySymbolValue(request.getCompanySymbolValue());
|
|
||||||
companySymbolsTMap.update(companySymbols);
|
|
||||||
updateCompanyBySymbol(companySymbols, false);
|
|
||||||
txOk = true;
|
|
||||||
} catch (ClearingBaseException e) {
|
|
||||||
return e.getEnumMsg();
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
|
|
||||||
log.debug("successfully processed, id {}", companySymbols.getId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnumMessage delete(CommonDeleteRequest request) {
|
|
||||||
CompanySymbols companySymbols;
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
companySymbols = companySymbolsTMap.getSingleObjectByID(request.getId());
|
|
||||||
if (companySymbols == null) {
|
|
||||||
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, request.getId()));
|
|
||||||
}
|
|
||||||
companySymbolsTMap.delete(companySymbols);
|
|
||||||
updateCompanyBySymbol(companySymbols, true);
|
|
||||||
txOk = true;
|
|
||||||
} catch (ClearingBaseException e) {
|
|
||||||
return e.getEnumMsg();
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
|
|
||||||
log.debug("successfully processed, id {}", companySymbols.getId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateCompanyBySymbol(CompanySymbols companySymbol, boolean shouldBeDeleted) throws ClearingBaseException {
|
|
||||||
if (companySymbol.getCompanyId() == null) {
|
|
||||||
throw new IllegalArgumentException("Required companySymbol.companyId");
|
|
||||||
}
|
|
||||||
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())
|
|
||||||
|| CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())
|
|
||||||
|| CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
|
||||||
|
|
||||||
Company company = companyMap.getSingleObjectByID(companySymbol.getCompanyId());
|
|
||||||
if (company == null) {
|
|
||||||
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyNotFound, companySymbol.getCompanyId()));
|
|
||||||
}
|
|
||||||
updateCompanyBySymbol(company, companySymbol, shouldBeDeleted);
|
|
||||||
company.setUpdated(Instant.now());
|
|
||||||
companyMap.update(company);
|
|
||||||
log.debug("Company {} updated by change CompanySymbols {} ({})",
|
|
||||||
company.getId(), companySymbol.getId(), companySymbol.getCompanySymbol());
|
|
||||||
} else {
|
|
||||||
log.trace("No need update company {} by changed companySymbols {}",
|
|
||||||
companySymbol.getCompanyId(), companySymbol.getCompanySymbol());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void updateCompanyBySymbol(Company company, CompanySymbols companySymbol, boolean shouldBeDeleted) {
|
|
||||||
assert company.getId().equals(companySymbol.getCompanyId());
|
|
||||||
String setUpValue = shouldBeDeleted ? "" : companySymbol.getCompanySymbolValue();
|
|
||||||
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
|
|
||||||
company.setTradingCode(setUpValue);
|
|
||||||
}
|
|
||||||
if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
|
||||||
company.setClearingCode(setUpValue);
|
|
||||||
}
|
|
||||||
if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
|
||||||
company.setRegistrationCode(setUpValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.facade;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.profile.Contact;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ContactServiceFacade {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final Imdg<Contact> contactMap;
|
|
||||||
|
|
||||||
public ContactServiceFacade(ImdgProvider imdgProvider) {
|
|
||||||
this.contactMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void create(ContactNewRequest request) {
|
|
||||||
Contact contact = new Contact();
|
|
||||||
contact.setCompanyId(request.getCompanyId());
|
|
||||||
contact.setContactType(request.getContactType());
|
|
||||||
contact.setContactValue(request.getContactValue());
|
|
||||||
Long id = contactMap.insert(contact);
|
|
||||||
|
|
||||||
log.debug("successfully processed, id {}", id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void update(ContactUpdateRequest request) {
|
|
||||||
Contact contact = contactMap.getSingleObjectByID(request.getId());
|
|
||||||
contact.setContactValue(request.getContactValue());
|
|
||||||
|
|
||||||
contactMap.update(contact);
|
|
||||||
log.debug("successfully processed, id {}", contact.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(CommonDeleteRequest request) {
|
|
||||||
Contact contact = contactMap.getSingleObjectByID(request.getId());
|
|
||||||
|
|
||||||
contactMap.delete(contact);
|
|
||||||
log.debug("successfully deleted, id {}", contact.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,164 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.facade;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ProfileDocumentServiceFacade {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ImdgProvider imdgProvider;
|
|
||||||
private final Imdg<ProfileDocument> profileDocumentMap;
|
|
||||||
private final Imdg<Company> companyMap;
|
|
||||||
private final AccountNotificationHelper accountNotificationHelper;
|
|
||||||
private final RelationServiceFacade relationServiceFacade;
|
|
||||||
|
|
||||||
public ProfileDocumentServiceFacade(ImdgProvider imdgProvider,
|
|
||||||
AccountNotificationHelper accountNotificationHelper,
|
|
||||||
RelationServiceFacade relationServiceFacade) {
|
|
||||||
this.imdgProvider = imdgProvider;
|
|
||||||
this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
|
||||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
this.accountNotificationHelper = accountNotificationHelper;
|
|
||||||
this.relationServiceFacade = relationServiceFacade;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void create(ProfileDocumentNewRequest request) {
|
|
||||||
ProfileDocument profileDocument = new ProfileDocument();
|
|
||||||
profileDocument.setCompanyId(request.getCompanyId());
|
|
||||||
profileDocument.setDocumentType(request.getDocumentType());
|
|
||||||
profileDocument.setIssueDate(request.getIssueDate());
|
|
||||||
profileDocument.setIssuePlace(request.getIssuePlace());
|
|
||||||
profileDocument.setIssuer(request.getIssuer());
|
|
||||||
profileDocument.setIssuerCode(request.getIssuerCode());
|
|
||||||
profileDocument.setName(request.getName());
|
|
||||||
profileDocument.setNumber(request.getNumber());
|
|
||||||
profileDocument.setPlace(request.getPlace());
|
|
||||||
profileDocument.setValidFromDate(request.getValidFromDate());
|
|
||||||
profileDocument.setValidToDate(request.getValidToDate());
|
|
||||||
profileDocument.setLink(request.getLink());
|
|
||||||
profileDocumentMap.insert(profileDocument);
|
|
||||||
|
|
||||||
if (DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
|
||||||
processXCNT(profileDocument);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors delete(CommonDeleteRequest request) {
|
|
||||||
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(request.getId());
|
|
||||||
Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
|
||||||
if (existCompany == null) {
|
|
||||||
log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
|
||||||
return CompanyErrors.CompanyNotFound;
|
|
||||||
}
|
|
||||||
|
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
transaction.beginTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
relationServiceFacade.cancelingOfAgreementUpdateRelation(transaction, profileDocument.getCompanyId());
|
|
||||||
Imdg<ProfileDocument> txProfileDocumentMap = transaction.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
|
||||||
txProfileDocumentMap.delete(profileDocument);
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
transaction.commitTransaction();
|
|
||||||
else
|
|
||||||
transaction.rollbackTransaction();
|
|
||||||
}
|
|
||||||
log.trace("successfully deleted, id {}", profileDocument.getId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors update(ProfileDocumentUpdateRequest request) {
|
|
||||||
ProfileDocument profileDocument = profileDocumentMap.getSingleObjectByID(request.getId());
|
|
||||||
|
|
||||||
String prevDocType = profileDocument.getDocumentType();
|
|
||||||
if (request.getCompanyId() != null && !request.getCompanyId().equals(profileDocument.getCompanyId())) {
|
|
||||||
log.warn("profileDocumentUpdateRequest[{}] CompanyId {} not match", request.getId(), request.getCompanyId());
|
|
||||||
return CompanyErrors.WrongFieldValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (request.getDocumentType() != null)
|
|
||||||
profileDocument.setDocumentType(request.getDocumentType());
|
|
||||||
|
|
||||||
if (request.getIssueDate() != null)
|
|
||||||
profileDocument.setIssueDate(request.getIssueDate());
|
|
||||||
|
|
||||||
if (request.getIssuePlace() != null)
|
|
||||||
profileDocument.setIssuePlace(request.getIssuePlace());
|
|
||||||
|
|
||||||
if (request.getIssuer() != null)
|
|
||||||
profileDocument.setIssuer(request.getIssuer());
|
|
||||||
|
|
||||||
if (request.getIssuerCode() != null)
|
|
||||||
profileDocument.setIssuerCode(request.getIssuerCode());
|
|
||||||
|
|
||||||
if (request.getName() != null)
|
|
||||||
profileDocument.setName(request.getName());
|
|
||||||
|
|
||||||
if (request.getNumber() != null)
|
|
||||||
profileDocument.setNumber(request.getNumber());
|
|
||||||
|
|
||||||
if (request.getPlace() != null)
|
|
||||||
profileDocument.setPlace(request.getPlace());
|
|
||||||
|
|
||||||
if (request.getValidFromDate() != null)
|
|
||||||
profileDocument.setValidFromDate(request.getValidFromDate());
|
|
||||||
|
|
||||||
if (request.getValidToDate() != null)
|
|
||||||
profileDocument.setValidToDate(request.getValidToDate());
|
|
||||||
|
|
||||||
if (request.getLink() != null)
|
|
||||||
profileDocument.setLink(request.getLink());
|
|
||||||
|
|
||||||
profileDocumentMap.insert(profileDocument);
|
|
||||||
|
|
||||||
log.trace("successfully processed, id {}", profileDocument.getId());
|
|
||||||
|
|
||||||
if (!Objects.equals(prevDocType, profileDocument.getDocumentType()) &&
|
|
||||||
DocumentTypes.xcnt.getKey().equalsIgnoreCase(profileDocument.getDocumentType())) {
|
|
||||||
processXCNT(profileDocument);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void processXCNT(ProfileDocument profileDocument) {
|
|
||||||
Company existCompany = profileDocument.getCompanyId() == null ? null : companyMap.getSingleObjectByID(profileDocument.getCompanyId());
|
|
||||||
if (existCompany == null) {
|
|
||||||
log.warn("Company {} not found by profileDocument {}", profileDocument.getCompanyId(), profileDocument.getId());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!WorkflowStatus.Active.equalsByKey(existCompany.getWorkflowStatus())) {
|
|
||||||
log.warn("Current workflowStatus {} for company {}. Do not termination account.",
|
|
||||||
existCompany.getWorkflowStatus(), existCompany.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyErrors hasError = accountNotificationHelper.accountTerminationByDocumentNotification(profileDocument.getCompanyId(), profileDocument.getId());
|
|
||||||
if (hasError != null) {
|
|
||||||
log.error("Error at termination account of company {} by document {}: {}",
|
|
||||||
profileDocument.getCompanyId(), profileDocument.getId(), hasError + "(" + hasError.getId() + ")");
|
|
||||||
}
|
|
||||||
log.debug("Now wait notification from account-service.");
|
|
||||||
/* processXCNT
|
|
||||||
Дальнейшая обработка документа о расторжении, то есть обновление статусов в company и relation, возможна только после ответа об успешном обновлении статуса в account.
|
|
||||||
ACCOUNT_TERMINATION -> ACCOUNT_TERMINATION_STEP2
|
|
||||||
1.2. Обновить статус в бизнес-объекте company [profileDocument.companyId=company.id] согласно описанию с тегом "При расторжении".
|
|
||||||
1.3. Обновить статус в бизнес-объекте relation [profileDocument.companyId=relation.consumerId] согласно описанию с тегом "При расторжении".
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,615 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.facade;
|
|
||||||
|
|
||||||
import static ru.spcex.platform.enumeration.Service.FOND;
|
|
||||||
import static ru.spcex.platform.enumeration.Service.MKR;
|
|
||||||
import static ru.spcex.platform.enumeration.ServiceStatus.Closed;
|
|
||||||
import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
import ru.spcex.platform.enumeration.ServiceProduct;
|
|
||||||
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.ImdgId;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|
||||||
import ru.spcex.platform.utils.error.ValidationException;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class RelationServiceFacade {
|
|
||||||
private static final Long SPVB_ID = 1L; // СПВБ
|
|
||||||
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ImdgProvider imdgProvider;
|
|
||||||
private final ImdgId idSequence;
|
|
||||||
private final Imdg<Relation> relationMap;
|
|
||||||
private final Imdg<Company> companyMap;
|
|
||||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
|
||||||
private final AccountNotificationHelper accountNotification;
|
|
||||||
|
|
||||||
public RelationServiceFacade(ImdgProvider imdgProvider,
|
|
||||||
AccountNotificationHelper accountNotification) {
|
|
||||||
this.imdgProvider = imdgProvider;
|
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
|
||||||
relationMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
|
||||||
companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
clearingMemberCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
|
||||||
|
|
||||||
this.accountNotification = accountNotification;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors create(RelationNewRequest request) {
|
|
||||||
String serviceStatus = request.getServiceStatus();
|
|
||||||
if (serviceStatus == null || serviceStatus.isEmpty()) {
|
|
||||||
Company company = companyMap.getSingleObjectByID(request.getCompanyId());
|
|
||||||
if (company != null) {
|
|
||||||
request.setServiceStatus(company.getWorkflowStatus());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Company company = companyMap.getSingleObjectByID(request.getCompanyId());
|
|
||||||
|
|
||||||
Relation existRelation = searchRelation(request.getClearingMemberCategory(), request.getCompanyId());
|
|
||||||
boolean isClosedRelation = existRelation != null && IEnumKey.contains
|
|
||||||
(existRelation.getServiceStatus(), Closed, ServiceStatus.Blocked, ServiceStatus.Suspended);
|
|
||||||
if (existRelation != null && !isClosedRelation) {
|
|
||||||
if (MKR.equalsByKey(existRelation.getService())) {
|
|
||||||
return CompanyErrors.ClearingMemberCategoryOnMKRAlreadyExist;
|
|
||||||
} else if (ru.spcex.platform.enumeration.Service.FOND.equalsByKey(existRelation.getService())) {
|
|
||||||
return CompanyErrors.ClearingMemberCategoryOnFONDAlreadyExist;
|
|
||||||
} else {
|
|
||||||
log.warn("Unknown relation[{}] service={}", existRelation.getId(), existRelation.getService());
|
|
||||||
return CompanyErrors.GeneralError;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Relation relation;
|
|
||||||
if (existRelation == null) {
|
|
||||||
relation = new Relation();
|
|
||||||
relation.setId(idSequence.nextId());
|
|
||||||
relation.setCreated(Instant.now());
|
|
||||||
relation.setUpdated(relation.getCreated());
|
|
||||||
log.debug("New relation.id={}", relation.getId());
|
|
||||||
} else {
|
|
||||||
log.info("Found exist relation id={}, it will be update.", existRelation.getId());
|
|
||||||
relation = existRelation;
|
|
||||||
relation.setUpdated(Instant.now());
|
|
||||||
}
|
|
||||||
|
|
||||||
relation.setConsumerId(request.getCompanyId());
|
|
||||||
relation.setSupplierId(SPVB_ID); // 1 СПВБ
|
|
||||||
if (request.getServiceStatus() != null) {
|
|
||||||
relation.setServiceStatus(request.getServiceStatus());
|
|
||||||
} else {
|
|
||||||
if (existRelation != null) {
|
|
||||||
relation.setServiceStatus(ServiceStatus.Reopened.getKey());
|
|
||||||
log.debug("Request has no status. Set status by resume: {}", relation.getServiceStatus());
|
|
||||||
} else {
|
|
||||||
String toStatus = WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? ServiceStatus.Active.getKey() :
|
|
||||||
WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() :
|
|
||||||
null;
|
|
||||||
log.debug("Request has no status. Set status by company[{}].status={}. Relation[{}].serviceSStatus={}",
|
|
||||||
company.getId(), company.getWorkflowStatus(), relation.getId(), toStatus);
|
|
||||||
relation.setServiceStatus(toStatus);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String service = serviceForCMC(request.getClearingMemberCategory());
|
|
||||||
relation.setService(service); // MKR
|
|
||||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
|
||||||
relation.setComment(request.getComment());
|
|
||||||
|
|
||||||
relationMap.insert(relation);
|
|
||||||
|
|
||||||
log.debug("New Relation[{}] created.", relation.getId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void update(RelationUpdateRequest request) {
|
|
||||||
Relation relation = relationMap.getSingleObjectByID(request.getId());
|
|
||||||
|
|
||||||
final Long companyId = relation.getConsumerId();
|
|
||||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(companyId);
|
|
||||||
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
|
||||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
|
||||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey());
|
|
||||||
String firstCMC = companyCMC.isEmpty() ? null : companyCMC.iterator().next();
|
|
||||||
|
|
||||||
ImdgTransaction tx = imdgProvider.newTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
tx.beginTransaction();
|
|
||||||
//relationUpdate0(tx, req, relation); // первоначальное ТЗ.
|
|
||||||
|
|
||||||
boolean needAddNewRelation = false; // call relationNew0(req, companyId, firstCMC);
|
|
||||||
if (ru.spcex.platform.enumeration.Service.MKR.equalsByKey(relation.getService())) { // relation B or I or V
|
|
||||||
if (companyCMCisCF) {
|
|
||||||
// 4.1. Если clearingMemberCategory = B or I or V и для этой компании установлены clearingMemberCategory = C or F:
|
|
||||||
Relation relation1 = selectRelation(companyId, MKR.getKey(), false);
|
|
||||||
if (relation1 != null) {
|
|
||||||
relationUpdate0WithResume(request, relation1);
|
|
||||||
} else {
|
|
||||||
needAddNewRelation = true;
|
|
||||||
}
|
|
||||||
Relation relation2 = selectRelation(companyId, MKR.getKey(), true);
|
|
||||||
if (relation2 != null) {
|
|
||||||
// nothing
|
|
||||||
} else {
|
|
||||||
needAddNewRelation = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!companyCMCisCF) {
|
|
||||||
// 4.3. Если clearingMemberCategory = B or I or V и для этой компании не установлены clearingMemberCategory = C or F:
|
|
||||||
Relation relation1 = selectRelation(companyId, MKR.getKey(), false);
|
|
||||||
if (relation1 != null) {
|
|
||||||
relationUpdate0WithResume(request, relation1);
|
|
||||||
} else {
|
|
||||||
needAddNewRelation = true;
|
|
||||||
}
|
|
||||||
Relation relation2 = selectRelation(companyId, MKR.getKey(), true);
|
|
||||||
if (relation2 != null) {
|
|
||||||
// nothing
|
|
||||||
} else {
|
|
||||||
needAddNewRelation = true;
|
|
||||||
}
|
|
||||||
Relation relation3 = selectRelation(companyId, FOND.getKey(), null);
|
|
||||||
if (relation3 != null) {
|
|
||||||
// nothing
|
|
||||||
relationClose0(relation3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (FOND.equalsByKey(relation.getService())) { // relation C or F
|
|
||||||
if (companyCMCisBIV) {
|
|
||||||
// 4.2. Если clearingMemberCategory = C or F и для этой компании установлены clearingMemberCategory = B or I or V:
|
|
||||||
Relation relation1 = selectRelation(companyId, FOND.getKey(), false);
|
|
||||||
if (relation1 != null) {
|
|
||||||
relationUpdate0WithResume(request, relation1);
|
|
||||||
} else {
|
|
||||||
needAddNewRelation = true;
|
|
||||||
}
|
|
||||||
Relation relation2 = selectRelation(companyId, FOND.getKey(), true);
|
|
||||||
if (relation2 != null) {
|
|
||||||
// nothing
|
|
||||||
} else {
|
|
||||||
needAddNewRelation = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!companyCMCisBIV) {
|
|
||||||
// 4.4. Если clearingMemberCategory = C or F и для этой компании установлены не clearingMemberCategory = B or I or V:
|
|
||||||
Relation relation1 = selectRelation(companyId, FOND.getKey(), false);
|
|
||||||
if (relation1 != null) {
|
|
||||||
relationUpdate0WithResume(request, relation1);
|
|
||||||
} else {
|
|
||||||
needAddNewRelation = true;
|
|
||||||
}
|
|
||||||
Relation relation2 = selectRelation(companyId, FOND.getKey(), true);
|
|
||||||
if (relation2 != null) {
|
|
||||||
// nothing
|
|
||||||
} else {
|
|
||||||
needAddNewRelation = true;
|
|
||||||
}
|
|
||||||
Relation relation3 = selectRelation(companyId, MKR.getKey(), null);
|
|
||||||
if (relation3 != null) {
|
|
||||||
relationClose0(relation3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// unknown type
|
|
||||||
relationUpdate0(request, relation);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (needAddNewRelation) {
|
|
||||||
relationNew0(request, companyId, firstCMC);
|
|
||||||
}
|
|
||||||
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk) {
|
|
||||||
tx.commitTransaction();
|
|
||||||
} else {
|
|
||||||
tx.rollbackTransaction();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void delete(CommonDeleteRequest request) {
|
|
||||||
Relation relation = relationMap.getSingleObjectByID(request.getId());
|
|
||||||
|
|
||||||
Long companyId = relation.getConsumerId();
|
|
||||||
|
|
||||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(companyId);
|
|
||||||
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
|
||||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
|
||||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey());
|
|
||||||
|
|
||||||
if (companyCMCisBIV && MKR.equalsByKey(relation.getService())) {
|
|
||||||
// relation не изменяем
|
|
||||||
} else if (companyCMCisCF && FOND.equalsByKey(relation.getService())) {
|
|
||||||
// relation не изменяем
|
|
||||||
} else {
|
|
||||||
// удалить.
|
|
||||||
}
|
|
||||||
// else
|
|
||||||
{
|
|
||||||
ImdgTransaction tx = imdgProvider.newTransaction();
|
|
||||||
boolean txOk = false;
|
|
||||||
try {
|
|
||||||
tx.beginTransaction();
|
|
||||||
if (!companyCMCisBIV) {
|
|
||||||
Relation relation1 = selectRelation(companyId, MKR.getKey(), false);
|
|
||||||
if (relation1 != null) relationClose0(relation1);
|
|
||||||
}
|
|
||||||
if (!companyCMCisCF) {
|
|
||||||
Relation relation1 = selectRelation(companyId, FOND.getKey(), false);
|
|
||||||
if (relation1 != null) relationClose0(relation1);
|
|
||||||
}
|
|
||||||
txOk = true;
|
|
||||||
} finally {
|
|
||||||
if (txOk)
|
|
||||||
tx.commitTransaction();
|
|
||||||
else
|
|
||||||
tx.rollbackTransaction();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WorkflowStatus.Blocked.equalsByKey(relation.getServiceStatus())) {
|
|
||||||
log.warn("Relation {} already blocked.", relation.getId());
|
|
||||||
} else {
|
|
||||||
relation.setUpdated(Instant.now());
|
|
||||||
relation.setServiceStatus(WorkflowStatus.Blocked.getKey());
|
|
||||||
|
|
||||||
relationMap.insert(relation);
|
|
||||||
log.debug("Relation[{}] block.", relation.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void createNewRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
|
||||||
Objects.requireNonNull(companyId, "companyId");
|
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
|
||||||
Company company = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class).getFirstObjectByFieldValues(Map.of("id", companyId));
|
|
||||||
|
|
||||||
WorkflowStatus workflowStatus = getEnumByKey(WorkflowStatus.class, company.getWorkflowStatus());
|
|
||||||
String serviceStatus = null;
|
|
||||||
if (clearingMemberCategory == null) {
|
|
||||||
log.warn("clearingMemberCategory not set for companyId={}", companyId);
|
|
||||||
} else {
|
|
||||||
ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
|
|
||||||
serviceStatus = serviceForCMC(clearingCategory).getKey();
|
|
||||||
}
|
|
||||||
|
|
||||||
Relation relation = searchRelation(transaction, clearingMemberCategory.getClearingMemberCategory(), companyId);
|
|
||||||
if (relation == null) {
|
|
||||||
relation = new Relation();
|
|
||||||
relation.setId(idSequence.nextId());
|
|
||||||
relation.setCreated(Instant.now());
|
|
||||||
relation.setUpdated(relation.getCreated());
|
|
||||||
log.debug("Create new relation.id={}", relation.getId());
|
|
||||||
} else {
|
|
||||||
relation.setUpdated(Instant.now());
|
|
||||||
log.debug("Update exist relation.id={}", relation.getId());
|
|
||||||
}
|
|
||||||
relation.setConsumerId(companyId);
|
|
||||||
relation.setSupplierId(SPVB_ID); // 1 СПВБ
|
|
||||||
relation.setServiceStatus(Objects.requireNonNull(workflowStatus).getKey());
|
|
||||||
relation.setService(serviceStatus);
|
|
||||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
|
||||||
log.debug("New Relation[{}] created by clearingMemberCategory[{}].", relation.getId(), clearingMemberCategory.getId());
|
|
||||||
relationMap.insert(relation);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Приходит от ClearingMemberCategory
|
|
||||||
*/
|
|
||||||
public void cancelRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) {
|
|
||||||
log.debug("Cancelling relations for companyId={} and clearingMemberCategory {}", companyId, clearingMemberCategory == null ? null : clearingMemberCategory.getClearingMemberCategory());
|
|
||||||
|
|
||||||
Objects.requireNonNull(companyId, "companyId");
|
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
|
||||||
// String serviceStatus = null;
|
|
||||||
// if (clearingMemberCategory == null) {
|
|
||||||
// log.warn("clearingMemberCategory not set for companyId={}", companyId);
|
|
||||||
// } else {
|
|
||||||
// ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory());
|
|
||||||
// serviceStatus = serviceForCMC(clearingCategory).getKey();
|
|
||||||
// }
|
|
||||||
|
|
||||||
Collection<String> companyCMC = selectCompanyClearingMemberCategory(companyId);
|
|
||||||
if (companyCMC.contains(clearingMemberCategory.getClearingMemberCategory())) {
|
|
||||||
// never
|
|
||||||
log.warn("ClearingMemberCategory \"{}\" already exist in set for company {}.", clearingMemberCategory.getClearingMemberCategory(), companyId);
|
|
||||||
}
|
|
||||||
boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey())
|
|
||||||
|| companyCMC.contains(ClearingCategory.V.getKey());
|
|
||||||
boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey());
|
|
||||||
|
|
||||||
|
|
||||||
Relation relation = searchRelation(transaction, clearingMemberCategory.getClearingMemberCategory(), companyId);
|
|
||||||
if (relation == null) {
|
|
||||||
log.debug("Relation for clearingMemberCategory.id={} {} not found", clearingMemberCategory.getId(), clearingMemberCategory.getClearingMemberCategory());
|
|
||||||
} else {
|
|
||||||
if (companyCMCisBIV && MKR.equalsByKey(relation.getService())) {
|
|
||||||
// relation не изменяем
|
|
||||||
log.debug("Relation {} {} lost for ClearingMemberCategory \"{}\".", relation.getId(), relation.getService(), clearingMemberCategory.getClearingMemberCategory());
|
|
||||||
} else if (companyCMCisCF && FOND.equalsByKey(relation.getService())) {
|
|
||||||
// relation не изменяем
|
|
||||||
log.debug("Relation {} {} lost for ClearingMemberCategory \"{}\".", relation.getId(), relation.getService(), clearingMemberCategory.getClearingMemberCategory());
|
|
||||||
} else {
|
|
||||||
// удалить.
|
|
||||||
log.debug("Block exist relation.id={}", relation.getId());
|
|
||||||
relation.setUpdated(Instant.now());
|
|
||||||
relation.setServiceStatus(Closed.getKey());
|
|
||||||
relationMap.update(relation);
|
|
||||||
log.debug("Relation[{}] updated (closed) by clearingMemberCategory[{}].", relation.getId(), clearingMemberCategory.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cancelAllRelationForCompany(ImdgTransaction transaction, Long companyId) {
|
|
||||||
Objects.requireNonNull(companyId, "companyId");
|
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
|
||||||
Collection<Relation> relations = relationMap.getCollectionObjectsByFieldValues(Map.of("consumerId", companyId));
|
|
||||||
|
|
||||||
int cancelledN = 0;
|
|
||||||
for (Relation relation : relations) {
|
|
||||||
if (!Closed.equalsByKey(relation.getServiceStatus())) {
|
|
||||||
relation.setServiceStatus(Closed.getKey());
|
|
||||||
relationMap.update(relation);
|
|
||||||
cancelledN++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
log.debug("Cancelled {} relation (of {}) by company {}", cancelledN, relations.size(), companyId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cancelingOfAgreementUpdateRelation(ImdgTransaction transaction, Long companyId) {
|
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
|
||||||
Relation relation = relationMap.getFirstObjectByFieldValues(Map.of("consumerId", companyId));
|
|
||||||
|
|
||||||
if (relation == null) {
|
|
||||||
log.warn("Relation with consumerId={} not found", companyId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
relation.setServiceStatus(Closed.getKey());
|
|
||||||
relationMap.update(relation);
|
|
||||||
|
|
||||||
log.debug("New Relation[{}] updated.", relation.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param company
|
|
||||||
* @param oldStatus
|
|
||||||
* @param newStatus WorkflowStatus.Active - при возобналвении; WorkflowStatus.Blocked - при блокировки/расторжении
|
|
||||||
*/
|
|
||||||
public void onChangeWorkflowStatus(ImdgTransaction transaction, Company company, String oldStatus, String newStatus) throws ValidationException {
|
|
||||||
log.debug("Company id={} status changed from {} to {}",
|
|
||||||
company.getId(), oldStatus, company.getWorkflowStatus());
|
|
||||||
onChangeWorkflowStatusOnlyRelationChange(transaction, company, newStatus);
|
|
||||||
|
|
||||||
if (WorkflowStatus.Blocked.equalsByKey(newStatus)) {
|
|
||||||
// IV - сообщения на добавления документа расторжения договора
|
|
||||||
CompanyErrors hasError = accountNotification.accountTerminationNotification(company.getId());
|
|
||||||
if (hasError != null) {
|
|
||||||
log.warn("Can not block company, cause error {}", hasError);
|
|
||||||
throw new ValidationException(hasError);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void onChangeWorkflowStatusOnlyRelationChange(ImdgTransaction transaction, Company company, String newStatus) throws ValidationException {
|
|
||||||
assert Objects.equals(newStatus, company.getWorkflowStatus());
|
|
||||||
String query = String.format("consumerId=%s", company.getId());
|
|
||||||
Imdg<Relation> relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
|
||||||
Collection<Relation> relations = relationMap.getCollectionObjectsBySQL(query);
|
|
||||||
|
|
||||||
log.trace("Selected {} Relation by query: {}", relations.size(), query);
|
|
||||||
Instant now = Instant.now();
|
|
||||||
|
|
||||||
for (Relation relation : relations) {
|
|
||||||
boolean modified = false;
|
|
||||||
if (WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) {
|
|
||||||
if (!ServiceStatus.Reopened.equalsByKey(relation.getServiceStatus())) {
|
|
||||||
relation.setServiceStatus(ServiceStatus.Reopened.getKey());
|
|
||||||
modified = true;
|
|
||||||
}
|
|
||||||
} else if (WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus())) {
|
|
||||||
if (!Closed.equalsByKey(relation.getServiceStatus())) {
|
|
||||||
relation.setServiceStatus(Closed.getKey());
|
|
||||||
modified = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (modified) {
|
|
||||||
relation.setUpdated(now);
|
|
||||||
log.debug("Relation id={} updated", relation.getId());
|
|
||||||
relationMap.update(relation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Relation selectRelation(Long companyId, String service, Boolean statusActive) {
|
|
||||||
Objects.requireNonNull(companyId, "companyId");
|
|
||||||
Objects.requireNonNull(service, "service");
|
|
||||||
Collection<Relation> relations = relationMap.getCollectionObjectsByFieldValues(Map.of("consumerId", companyId, "service", service));
|
|
||||||
Optional<Relation> r = relations.stream()
|
|
||||||
.filter(rel -> {
|
|
||||||
if (statusActive == null) return true;
|
|
||||||
boolean wasClosed = IEnumKey.contains(rel.getServiceStatus(),
|
|
||||||
Closed, ServiceStatus.Suspended, ServiceStatus.Blocked);
|
|
||||||
return statusActive != wasClosed;
|
|
||||||
}).findFirst();
|
|
||||||
if (r.isPresent()) {
|
|
||||||
log.trace("Found relation[{}] by consumerId={} and service={} and active={}",
|
|
||||||
r.get().getId(), companyId, service, statusActive);
|
|
||||||
return r.get();
|
|
||||||
} else {
|
|
||||||
log.trace("Relation not found by consumerId={} and service={} and active={}",
|
|
||||||
companyId, service, statusActive);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Relation searchRelation(ImdgTransaction tx, String clearingMemberCategory, Long consumerId) {
|
|
||||||
String svc = serviceForCMC(clearingMemberCategory);
|
|
||||||
if (svc == null) {
|
|
||||||
log.warn("Unexpected relation clearingMemberCategory={}", clearingMemberCategory);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
Imdg<Relation> currentRelationMap = tx == null ? relationMap : tx.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
|
||||||
Relation existRelation = currentRelationMap.getFirstObjectByFieldValues(Map.of(
|
|
||||||
"consumerId", consumerId,
|
|
||||||
"service", svc
|
|
||||||
));
|
|
||||||
if (existRelation == null)
|
|
||||||
log.trace("Relation with consumerId={} and service={} not exist.", consumerId, svc);
|
|
||||||
else
|
|
||||||
log.trace("Exist relation.id={}", existRelation.getId());
|
|
||||||
return existRelation;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Relation searchRelation(String clearingMemberCategory, Long consumerId) {
|
|
||||||
return searchRelation(null, clearingMemberCategory, consumerId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String serviceForCMC(String clearingMemberCategory) {
|
|
||||||
String svc = null;
|
|
||||||
if (ClearingCategory.B.equalsByKey(clearingMemberCategory)
|
|
||||||
|| ClearingCategory.I.equalsByKey(clearingMemberCategory)
|
|
||||||
|| ClearingCategory.V.equalsByKey(clearingMemberCategory)
|
|
||||||
) {
|
|
||||||
svc = MKR.getKey();
|
|
||||||
} else if (ClearingCategory.C.equalsByKey(clearingMemberCategory)
|
|
||||||
|| ClearingCategory.F.equalsByKey(clearingMemberCategory)
|
|
||||||
) {
|
|
||||||
svc = ru.spcex.platform.enumeration.Service.FOND.getKey();
|
|
||||||
}
|
|
||||||
return svc;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ru.spcex.platform.enumeration.Service serviceForCMC(ClearingCategory clearingCategory) {
|
|
||||||
return switch (Objects.requireNonNull(clearingCategory)) {
|
|
||||||
case B, I, V -> MKR;
|
|
||||||
case C, F -> FOND;
|
|
||||||
default -> throw new IllegalStateException("Illegal state of clearingCategory " + clearingCategory);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
private Collection<String> selectCompanyClearingMemberCategory(Long companyId) {
|
|
||||||
Collection<ClearingMemberCategory> companyCategory = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(
|
|
||||||
Map.of("companyId", companyId)
|
|
||||||
);
|
|
||||||
return companyCategory.stream()
|
|
||||||
.map(ClearingMemberCategory::getClearingMemberCategory)
|
|
||||||
.filter(StringUtils::isNotEmpty)
|
|
||||||
.distinct()
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
private Relation relationNew0(RelationUpdateRequest req, Long companyId, String clearingMemberCategory) {
|
|
||||||
Company company = companyMap.getSingleObjectByID(companyId);
|
|
||||||
|
|
||||||
Relation relation = new Relation();
|
|
||||||
relation.setId(idSequence.nextId());
|
|
||||||
relation.setCreated(Instant.now());
|
|
||||||
relation.setUpdated(relation.getCreated());
|
|
||||||
log.debug("New relation.id={}", relation.getId());
|
|
||||||
|
|
||||||
relation.setConsumerId(companyId);
|
|
||||||
relation.setSupplierId(SPVB_ID); // 1 СПВБ
|
|
||||||
if (req.getServiceStatus() != null) {
|
|
||||||
relation.setServiceStatus(req.getServiceStatus());
|
|
||||||
} else {
|
|
||||||
String toStatus = WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? ServiceStatus.Active.getKey() :
|
|
||||||
WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() :
|
|
||||||
null;
|
|
||||||
log.debug("Request has no status. Set status by company[{}].status={}. Relation[{}].serviceSStatus={}",
|
|
||||||
company.getId(), company.getWorkflowStatus(), relation.getId(), toStatus);
|
|
||||||
relation.setServiceStatus(toStatus);
|
|
||||||
}
|
|
||||||
String service = serviceForCMC(clearingMemberCategory);
|
|
||||||
relation.setService(service); // MKR
|
|
||||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
|
||||||
relation.setComment(req.getComment());
|
|
||||||
|
|
||||||
relationMap.insert(relation);
|
|
||||||
log.debug("New Relation[{}] created.", relation.getId());
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Relation relationUpdate0(RelationUpdateRequest req, Relation relation) {
|
|
||||||
if (req.getServiceStatus() != null) {
|
|
||||||
log.debug("To relation {} set serivceStatus=\"{}\" by user request.", relation.getId(), req.getServiceStatus());
|
|
||||||
relation.setServiceStatus(req.getServiceStatus());
|
|
||||||
} else { // never - см. валидатор relationUpdateRequestValidator
|
|
||||||
if (relation.getConsumerId() == null) {
|
|
||||||
log.warn("Relation[{}]. consumerId was null", relation.getId());
|
|
||||||
}
|
|
||||||
Company company = companyMap.getSingleObjectByID(relation.getConsumerId());
|
|
||||||
String toStatus = WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? ServiceStatus.Active.getKey() :
|
|
||||||
WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() :
|
|
||||||
null;
|
|
||||||
if (ServiceStatus.Active.equalsByKey(toStatus) && Closed.equalsByKey(relation.getServiceStatus())) {
|
|
||||||
relation.setServiceStatus(ServiceStatus.Reopened.getKey());
|
|
||||||
log.debug("Set status by resume: {}", relation.getServiceStatus());
|
|
||||||
} else {
|
|
||||||
relation.setServiceStatus(toStatus);
|
|
||||||
log.debug("Request has no status. Set status by company[{}].status={}. Relation[{}].serviceSStatus={}",
|
|
||||||
company.getId(), company.getWorkflowStatus(), toStatus, relation.getServiceStatus());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
relation.setComment(req.getComment());
|
|
||||||
relation.setUpdated(Instant.now());
|
|
||||||
|
|
||||||
relationMap.update(relation);
|
|
||||||
log.debug("Update Relation[{}].", relation.getId());
|
|
||||||
return relation;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Relation relationUpdate0WithResume(RelationUpdateRequest req, Relation relation) {
|
|
||||||
if (ServiceStatus.Reopened.equalsByKey(relation.getServiceStatus())) {
|
|
||||||
log.debug("Relation {} already reopened(resumed)", relation.getId());
|
|
||||||
return relation;
|
|
||||||
}
|
|
||||||
if (req.getComment() != null) {
|
|
||||||
relation.setComment(req.getComment());
|
|
||||||
}
|
|
||||||
relation.setServiceStatus(ServiceStatus.Reopened.getKey());
|
|
||||||
relation.setUpdated(Instant.now());
|
|
||||||
|
|
||||||
relationMap.update(relation);
|
|
||||||
log.debug("Update Relation[{}] - resume.", relation.getId());
|
|
||||||
return relation;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void relationClose0(Relation relation) {
|
|
||||||
if (ServiceStatus.Closed.equalsByKey((relation.getServiceStatus()))) {
|
|
||||||
log.debug("Relation {} already closed.", relation.getId());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
relation.setServiceStatus(Closed.getKey());
|
|
||||||
relation.setUpdated(Instant.now());
|
|
||||||
|
|
||||||
relationMap.update(relation);
|
|
||||||
log.debug("Relation[{}] was closed.", relation.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.facade;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.statics.data.company.SettlementHouseProperties;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class SettlementHousePropertiesServiceFacade {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final Imdg<SettlementHouseProperties> settlementHousePropertiesMap;
|
|
||||||
private final ImdgId idSequence;
|
|
||||||
|
|
||||||
public SettlementHousePropertiesServiceFacade(ImdgProvider imdgProvider) {
|
|
||||||
this.settlementHousePropertiesMap = imdgProvider.getImdg(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class);
|
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void create(SettlementHousePropertyNewRequest request) {
|
|
||||||
SettlementHouseProperties shp = new SettlementHouseProperties();
|
|
||||||
shp.setId(idSequence.nextId());
|
|
||||||
shp.setCompanyId(request.getCompanyId());
|
|
||||||
shp.setCurrencyCode(request.getCurrencyCode());
|
|
||||||
|
|
||||||
settlementHousePropertiesMap.insert(shp);
|
|
||||||
log.debug("New SettlementHouseProperties[{}] for company {}", shp.getId(), shp.getCompanyId());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void update(SettlementHousePropertyUpdateRequest request) {
|
|
||||||
SettlementHouseProperties shp = settlementHousePropertiesMap.getSingleObjectByID(request.getId());
|
|
||||||
|
|
||||||
shp.setCompanyId(request.getCompanyId());
|
|
||||||
shp.setCurrencyCode(request.getCurrencyCode());
|
|
||||||
|
|
||||||
settlementHousePropertiesMap.update(shp);
|
|
||||||
log.debug("Update SettlementHouseProperty[{}] for company {}", shp.getId(), request.getCompanyId());
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanyErrors delete(CommonDeleteRequest request) {
|
|
||||||
SettlementHouseProperties settlementHouseProperty = settlementHousePropertiesMap.getSingleObjectByID(request.getId());
|
|
||||||
if (settlementHouseProperty == null) {
|
|
||||||
return CompanyErrors.RecordNotFound;
|
|
||||||
}
|
|
||||||
settlementHousePropertiesMap.delete(settlementHouseProperty);
|
|
||||||
log.debug("SettlementHouseProperty {} for company {} delete", settlementHouseProperty.getId(), settlementHouseProperty.getCompanyId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.listeners;
|
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.ClearingMemberCategoryServiceValidator;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ClearingMemberCategoryServiceListener extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ClearingMemberCategoryServiceFacade clearingMemberCategoryServiceFacade;
|
|
||||||
private final ClearingMemberCategoryServiceValidator clearingMemberCategoryServiceValidator;
|
|
||||||
|
|
||||||
public ClearingMemberCategoryServiceListener(Consumer<String, Object> kafkaQueue,
|
|
||||||
Producer<String, Object> kafkaResponseQueue,
|
|
||||||
ClearingMemberCategoryServiceFacade clearingMemberCategoryServiceFacade,
|
|
||||||
ClearingMemberCategoryServiceValidator clearingMemberCategoryServiceValidator) {
|
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
|
||||||
this.clearingMemberCategoryServiceFacade = clearingMemberCategoryServiceFacade;
|
|
||||||
this.clearingMemberCategoryServiceValidator = clearingMemberCategoryServiceValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
|
||||||
callback(ClearingMemberCategoryNewRequest.class)
|
|
||||||
.setFunction(this::processNewClearingMemberCategoryRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_NEW, callbacks::put);
|
|
||||||
callback(ClearingMemberCategoryUpdateRequest.class)
|
|
||||||
.setFunction(this::processUpdateClearingMemberCategoryRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE, callbacks::put);
|
|
||||||
callback(CommonDeleteRequest.class)
|
|
||||||
.setFunction(this::processDeleteClearingMemberCategoryRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE, callbacks::put);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processNewClearingMemberCategoryRequest(BaseRequest<ClearingMemberCategoryNewRequest> request) {
|
|
||||||
log.debug("ClearingMemberCategoryNewRequest received {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = clearingMemberCategoryServiceValidator.createRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
clearingMemberCategoryServiceFacade.create(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processUpdateClearingMemberCategoryRequest(BaseRequest<ClearingMemberCategoryUpdateRequest> request) {
|
|
||||||
log.debug("ClearingMemberCategoryUpdateRequest received {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = clearingMemberCategoryServiceValidator.updateRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
clearingMemberCategoryServiceFacade.update(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processDeleteClearingMemberCategoryRequest(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
log.debug("CommonDeleteRequest received {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = clearingMemberCategoryServiceValidator.deleteRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
clearingMemberCategoryServiceFacade.delete(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.listeners;
|
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.CompanyInfoServiceValidator;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanyInfoServiceListener extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final RequestHelper requestHelper;
|
|
||||||
private final CompanyInfoServiceFacade companyInfoServiceFacade;
|
|
||||||
private final CompanyInfoServiceValidator companyInfoServiceValidator;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public CompanyInfoServiceListener(Consumer<String, Object> kafkaQueue,
|
|
||||||
Producer<String, Object> kafkaProducer,
|
|
||||||
RequestHelper requestHelper,
|
|
||||||
CompanyInfoServiceFacade companyInfoServiceFacade,
|
|
||||||
CompanyInfoServiceValidator companyInfoServiceValidator) {
|
|
||||||
super(kafkaQueue, kafkaProducer);
|
|
||||||
this.requestHelper = requestHelper;
|
|
||||||
this.companyInfoServiceFacade = companyInfoServiceFacade;
|
|
||||||
this.companyInfoServiceValidator = companyInfoServiceValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() {
|
|
||||||
callback(CompanyInfoUpdateRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processNewCompanyInfoUpdateRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_INFO_UPDATE, callbacks::put);
|
|
||||||
callback(CompanyInfoUpdateRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processNewCompanyInfoUpdateRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); // логика заполнения одинакова с companyInfoUpdate
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public RequestInfoUpdate processNewCompanyInfoUpdateRequest(BaseRequest<CompanyInfoUpdateRequest> request) {
|
|
||||||
log.debug("{} received", request.getRequestPayload().getClass().getSimpleName());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyInfoServiceValidator.updateRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyErrors result = companyInfoServiceFacade.update(request.getRequestPayload());
|
|
||||||
if (result.equals(CompanyErrors.CompanyNotFound)) {
|
|
||||||
log.warn("Company {} not found", request.getRequestPayload().getId());
|
|
||||||
return requestHelper.makeErrorResponse(request, CompanyErrors.CompanyNotFound, request.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.listeners;
|
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyRoleSetServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.CompanyRoleSetServiceValidator;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanyRoleSetServiceListener extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final CompanyRoleSetServiceFacade companyRoleSetServiceFacade;
|
|
||||||
private final CompanyRoleSetServiceValidator companyRoleSetServiceValidator;
|
|
||||||
private final RequestHelper requestHelper;
|
|
||||||
|
|
||||||
public CompanyRoleSetServiceListener(Consumer<String, Object> kafkaQueue,
|
|
||||||
Producer<String, Object> kafkaResponseQueue,
|
|
||||||
CompanyRoleSetServiceFacade companyRoleSetServiceFacade,
|
|
||||||
CompanyRoleSetServiceValidator companyRoleSetServiceValidator,
|
|
||||||
RequestHelper requestHelper) {
|
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
|
||||||
this.companyRoleSetServiceFacade = companyRoleSetServiceFacade;
|
|
||||||
this.companyRoleSetServiceValidator = companyRoleSetServiceValidator;
|
|
||||||
this.requestHelper = requestHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
|
||||||
callback(CompanyRoleSetNewRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processNewCompanyRoleSetRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_NEW, callbacks::put);
|
|
||||||
callback(CompanyRoleSetUpdateRequest.class)
|
|
||||||
.setConsumer(request -> requestHelper.requestFunction(this::processUpdateCompanyRoleSetRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE, callbacks::put);
|
|
||||||
callback(CommonDeleteRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processDeleteCompanyRoleSetRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE, callbacks::put);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processNewCompanyRoleSetRequest(BaseRequest<CompanyRoleSetNewRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyRoleSetServiceValidator.createRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyErrors result = companyRoleSetServiceFacade.create(request.getRequestPayload());
|
|
||||||
if (result != null) {
|
|
||||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processUpdateCompanyRoleSetRequest(BaseRequest<CompanyRoleSetUpdateRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyRoleSetServiceValidator.updateRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyErrors result = companyRoleSetServiceFacade.update(request.getRequestPayload());
|
|
||||||
if (result != null) {
|
|
||||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processDeleteCompanyRoleSetRequest(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyRoleSetServiceValidator.deleteRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyErrors result = companyRoleSetServiceFacade.delete(request.getRequestPayload());
|
|
||||||
if (result != null) {
|
|
||||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,159 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.listeners;
|
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.CompanyServiceValidator;
|
|
||||||
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;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountTerminationRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyGatewayRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
|
||||||
import ru.spcex.platform.utils.error.ValidationException;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanyServiceListener extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final CompanyServiceFacade companyServiceFacade;
|
|
||||||
private final CompanyServiceValidator companyServiceValidator;
|
|
||||||
private final RequestHelper requestHelper;
|
|
||||||
private final AccountNotificationHelper accountNotificationHelper;
|
|
||||||
|
|
||||||
public CompanyServiceListener(Consumer<String, Object> kafkaQueue,
|
|
||||||
Producer<String, Object> kafkaResponseQueue,
|
|
||||||
CompanyServiceFacade companyServiceFacade,
|
|
||||||
CompanyServiceValidator companyServiceValidator,
|
|
||||||
RequestHelper requestHelper,
|
|
||||||
AccountNotificationHelper accountNotificationHelper) {
|
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
|
||||||
this.companyServiceFacade = companyServiceFacade;
|
|
||||||
this.companyServiceValidator = companyServiceValidator;
|
|
||||||
this.requestHelper = requestHelper;
|
|
||||||
this.accountNotificationHelper = accountNotificationHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
|
||||||
callback(CompanyNewRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processNewCompanyRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_NEW, callbacks::put);
|
|
||||||
callback(CompanyNewRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processUpdateCompanyRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_UPDATE, callbacks::put);
|
|
||||||
callback(CommonDeleteRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processDeleteCompanyRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_DELETE, callbacks::put);
|
|
||||||
callback(CommonDeleteRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processBlockCompanyRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_BLOCK, callbacks::put);
|
|
||||||
callback(AccountTerminationRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processAccountTerminationRequest, request))
|
|
||||||
.forDestination(Consts.ACCOUNT_TERMINATION_STEP2, callbacks::put);
|
|
||||||
callback(CompanyGatewayRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processMultiCompanyRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, callbacks::put);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processNewCompanyRequest(BaseRequest<?> request) throws ValidationException {
|
|
||||||
log.debug("CompanyNewRequest received id = {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
companyServiceValidator.createRequestValidation((CompanyNewRequest) request.getRequestPayload());
|
|
||||||
companyServiceFacade.create((CompanyNewRequest) request.getRequestPayload());
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processUpdateCompanyRequest(BaseRequest<?> request) throws ValidationException {
|
|
||||||
log.debug("CompanyNewRequest received id = {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
companyServiceValidator.updateRequestValidation((CompanyNewRequest) request.getRequestPayload());
|
|
||||||
companyServiceFacade.update((CompanyNewRequest) request.getRequestPayload());
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processDeleteCompanyRequest(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) {
|
|
||||||
log.debug("CommonDeleteRequest (block request) received id = {}", companyBlockRequestBaseRequest.getRequestPayload().getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.deleteRequestValidation(companyBlockRequestBaseRequest);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyErrors result = companyServiceFacade.delete(companyBlockRequestBaseRequest.getRequestPayload());
|
|
||||||
if (result.equals(CompanyErrors.CompanyNotFound)) {
|
|
||||||
log.warn("Company {} not found", companyBlockRequestBaseRequest.getRequestPayload().getId());
|
|
||||||
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound, companyBlockRequestBaseRequest.getRequestPayload().getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processBlockCompanyRequest(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) {
|
|
||||||
log.debug("CommonDeleteRequest (block request) received id = {}", companyBlockRequestBaseRequest.getRequestPayload().getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(companyBlockRequestBaseRequest);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyErrors result = companyServiceFacade.blockCompany(companyBlockRequestBaseRequest.getRequestPayload());
|
|
||||||
if (result.equals(CompanyErrors.CompanyNotFound)) {
|
|
||||||
log.warn("Company {} not found", companyBlockRequestBaseRequest.getRequestPayload().getId());
|
|
||||||
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound);
|
|
||||||
} else if (result.equals(CompanyErrors.CompanyDisabled)) {
|
|
||||||
log.info("Company {} already blocked", companyBlockRequestBaseRequest.getRequestPayload().getId());
|
|
||||||
return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled, companyBlockRequestBaseRequest.getRequestPayload().getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processAccountTerminationRequest(BaseRequest<AccountTerminationRequest> accountTerminationRequestBaseRequest) {
|
|
||||||
log.debug("AccountTerminationRequest (block request) received id = {}", accountTerminationRequestBaseRequest.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(accountTerminationRequestBaseRequest);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
companyServiceFacade.terminateAccount(accountTerminationRequestBaseRequest.getRequestPayload());
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processMultiCompanyRequest(BaseRequest<CompanyGatewayRequest> baseRequest) {
|
|
||||||
log.debug("company-batch-new request received, BaseRequest.id = {}", baseRequest.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companyServiceValidator.baseRequestValidation(baseRequest);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean result = companyServiceFacade.createUpdateMultiCompany(baseRequest.getRequestPayload());
|
|
||||||
if (result) {
|
|
||||||
for (ClientCodeNewRequest partRequest : baseRequest.getRequestPayload().getClientCodes()) {
|
|
||||||
accountNotificationHelper.clientCodeNew(partRequest); // Consts.DESTINATION_CLIENT_CODE_NEW Consts.DESTINATION_CLIENT_CODE_UPDATE
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,99 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.listeners;
|
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.CompanySymbolServiceValidator;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanySymbolServiceListener extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final CompanySymbolServiceFacade companySymbolServiceFacade;
|
|
||||||
private final CompanySymbolServiceValidator companySymbolServiceValidator;
|
|
||||||
|
|
||||||
public CompanySymbolServiceListener(Consumer<String, Object> kafkaQueue,
|
|
||||||
Producer<String, Object> kafkaResponseQueue,
|
|
||||||
CompanySymbolServiceFacade companySymbolServiceFacade,
|
|
||||||
CompanySymbolServiceValidator companySymbolServiceValidator) {
|
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
|
||||||
this.companySymbolServiceFacade = companySymbolServiceFacade;
|
|
||||||
this.companySymbolServiceValidator = companySymbolServiceValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
|
||||||
callback(CompanySymbolNewRequest.class)
|
|
||||||
.setFunction(this::processNewCompanySymbolRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_NEW, callbacks::put);
|
|
||||||
callback(CompanySymbolUpdateRequest.class)
|
|
||||||
.setFunction(this::processUpdateCompanySymbolRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put);
|
|
||||||
callback(CommonDeleteRequest.class)
|
|
||||||
.setFunction(this::processDeleteCompanySymbolRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_DELETE, callbacks::put);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processNewCompanySymbolRequest(BaseRequest<CompanySymbolNewRequest> request) {
|
|
||||||
log.debug("CompanySymbolNewRequest received");
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companySymbolServiceValidator.createRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
companySymbolServiceFacade.create(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processUpdateCompanySymbolRequest(BaseRequest<CompanySymbolUpdateRequest> request) {
|
|
||||||
log.debug("CompanySymbolUpdateRequest received, id={}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companySymbolServiceValidator.updateRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
EnumMessage message = companySymbolServiceFacade.update(request.getRequestPayload());
|
|
||||||
if (message != null) {
|
|
||||||
requestInfoUpdate = new RequestInfoUpdate();
|
|
||||||
requestInfoUpdate.setStatus(Status.Error);
|
|
||||||
requestInfoUpdate.setMessage(message.toString());
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processDeleteCompanySymbolRequest(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
log.debug("CommonDeleteRequest for CompanySymbol received, id={}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = companySymbolServiceValidator.deleteRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
EnumMessage message = companySymbolServiceFacade.delete(request.getRequestPayload());
|
|
||||||
if (message != null) {
|
|
||||||
requestInfoUpdate = new RequestInfoUpdate();
|
|
||||||
requestInfoUpdate.setStatus(Status.Error);
|
|
||||||
requestInfoUpdate.setMessage(message.toString());
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.listeners;
|
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.ContactServiceValidator;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ContactServiceListener extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ContactServiceFacade contactServiceFacade;
|
|
||||||
private final ContactServiceValidator contactServiceValidator;
|
|
||||||
|
|
||||||
public ContactServiceListener(Consumer<String, Object> kafkaQueue,
|
|
||||||
Producer<String, Object> kafkaResponseQueue,
|
|
||||||
ContactServiceFacade contactServiceFacade,
|
|
||||||
ContactServiceValidator contactServiceValidator) {
|
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
|
||||||
this.contactServiceFacade = contactServiceFacade;
|
|
||||||
this.contactServiceValidator = contactServiceValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
|
||||||
callback(ContactNewRequest.class)
|
|
||||||
.setFunction(this::processNewContactRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_CONTACT_NEW, callbacks::put);
|
|
||||||
callback(ContactUpdateRequest.class)
|
|
||||||
.setFunction(this::processUpdateContactRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_CONTACT_UPDATE, callbacks::put);
|
|
||||||
callback(CommonDeleteRequest.class)
|
|
||||||
.setFunction(this::processDeleteContactRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_CONTACT_DELETE, callbacks::put);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processNewContactRequest(BaseRequest<ContactNewRequest> request) {
|
|
||||||
log.debug("ContactNewRequest received");
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = contactServiceValidator.createRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
contactServiceFacade.create(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processUpdateContactRequest(BaseRequest<ContactUpdateRequest> request) {
|
|
||||||
log.debug("ContactUpdateRequest received");
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = contactServiceValidator.updateRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
contactServiceFacade.update(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processDeleteContactRequest(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
log.debug("CommonDeleteRequest received for contact service.");
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = contactServiceValidator.deleteRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
contactServiceFacade.delete(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,88 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.listeners;
|
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.ProfileDocumentServiceValidator;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ProfileDocumentServiceListener extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ProfileDocumentServiceFacade profileDocumentServiceFacade;
|
|
||||||
private final ProfileDocumentServiceValidator profileDocumentServiceValidator;
|
|
||||||
private final RequestHelper requestHelper;
|
|
||||||
|
|
||||||
public ProfileDocumentServiceListener(Consumer<String, Object> kafkaQueue,
|
|
||||||
Producer<String, Object> kafkaResponseQueue,
|
|
||||||
ProfileDocumentServiceFacade profileDocumentServiceFacade,
|
|
||||||
ProfileDocumentServiceValidator profileDocumentServiceValidator,
|
|
||||||
RequestHelper requestHelper) {
|
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
|
||||||
this.profileDocumentServiceFacade = profileDocumentServiceFacade;
|
|
||||||
this.profileDocumentServiceValidator = profileDocumentServiceValidator;
|
|
||||||
this.requestHelper = requestHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
|
||||||
callback(ProfileDocumentNewRequest.class)
|
|
||||||
.setFunction(this::processNewProfileDocumentRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, callbacks::put);
|
|
||||||
callback(ProfileDocumentUpdateRequest.class)
|
|
||||||
.setFunction(this::processUpdateProfileDocumentRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE, callbacks::put);
|
|
||||||
callback(CommonDeleteRequest.class)
|
|
||||||
.setFunction(this::processDeleteProfileDocumentRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_PROFILE_DOCUMENT_DELETE, callbacks::put);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processNewProfileDocumentRequest(BaseRequest<ProfileDocumentNewRequest> request) {
|
|
||||||
log.trace("Start processing ProfileDocumentNewRequest!");
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = profileDocumentServiceValidator.createRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
profileDocumentServiceFacade.create(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processUpdateProfileDocumentRequest(BaseRequest<ProfileDocumentUpdateRequest> request) {
|
|
||||||
log.trace("Start processing ProfileDocumentUpdateRequest!");
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = profileDocumentServiceValidator.updateRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
CompanyErrors result = profileDocumentServiceFacade.update(request.getRequestPayload());
|
|
||||||
if (result != null) {
|
|
||||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processDeleteProfileDocumentRequest(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
log.trace("Start processing CommonDeleteRequest!");
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = profileDocumentServiceValidator.deleteRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
CompanyErrors result = profileDocumentServiceFacade.delete(request.getRequestPayload());
|
|
||||||
if (result != null) {
|
|
||||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.listeners;
|
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.RelationServiceValidator;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class RelationServiceListener extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final RelationServiceFacade relationServiceFacade;
|
|
||||||
private final RelationServiceValidator relationServiceValidator;
|
|
||||||
private final RequestHelper requestHelper;
|
|
||||||
|
|
||||||
public RelationServiceListener(Consumer<String, Object> kafkaQueue,
|
|
||||||
Producer<String, Object> kafkaResponseQueue,
|
|
||||||
RelationServiceFacade relationServiceFacade,
|
|
||||||
RelationServiceValidator relationServiceValidator,
|
|
||||||
RequestHelper requestHelper) {
|
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
|
||||||
this.relationServiceFacade = relationServiceFacade;
|
|
||||||
this.relationServiceValidator = relationServiceValidator;
|
|
||||||
this.requestHelper = requestHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
|
||||||
callback(RelationNewRequest.class)
|
|
||||||
.setFunction(this::processNewRelationRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_RELATION_NEW, callbacks::put);
|
|
||||||
callback(RelationUpdateRequest.class)
|
|
||||||
.setFunction(this::processUpdateRelationRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_RELATION_UPDATE, callbacks::put);
|
|
||||||
callback(CommonDeleteRequest.class)
|
|
||||||
.setFunction(this::processDeleteRelationRequest)
|
|
||||||
.forDestination(Consts.DESTINATION_RELATION_DELETE, callbacks::put);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processNewRelationRequest(BaseRequest<RelationNewRequest> request) {
|
|
||||||
log.debug("relation-new request received, BaseRequest.id = {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = relationServiceValidator.createRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyErrors result = relationServiceFacade.create(request.getRequestPayload());
|
|
||||||
if (result != null) {
|
|
||||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processUpdateRelationRequest(BaseRequest<RelationUpdateRequest> request) {
|
|
||||||
log.debug("relation-update request received, BaseRequest.id = {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = relationServiceValidator.updateRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
relationServiceFacade.update(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processDeleteRelationRequest(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
log.debug("relation-delete request received, BaseRequest.id = {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = relationServiceValidator.deleteRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
relationServiceFacade.delete(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,92 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.listeners;
|
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.Consumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.SettlementHousePropertiesServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.SettlementHousePropertiesServiceValidator;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.services.RequestHelper;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class SettlementHousePropertiesServiceListener extends QueueConsumer implements InitializingBean {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final SettlementHousePropertiesServiceFacade settlementHousePropertiesServiceFacade;
|
|
||||||
private final SettlementHousePropertiesServiceValidator settlementHousePropertiesServiceValidator;
|
|
||||||
private final RequestHelper requestHelper;
|
|
||||||
|
|
||||||
public SettlementHousePropertiesServiceListener(Consumer<String, Object> kafkaQueue,
|
|
||||||
Producer<String, Object> kafkaResponseQueue,
|
|
||||||
SettlementHousePropertiesServiceFacade settlementHousePropertiesServiceFacade,
|
|
||||||
SettlementHousePropertiesServiceValidator settlementHousePropertiesServiceValidator,
|
|
||||||
RequestHelper requestHelper) {
|
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
|
||||||
this.settlementHousePropertiesServiceFacade = settlementHousePropertiesServiceFacade;
|
|
||||||
this.settlementHousePropertiesServiceValidator = settlementHousePropertiesServiceValidator;
|
|
||||||
this.requestHelper = requestHelper;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
|
||||||
callback(SettlementHousePropertyNewRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processNewSettlementHousePropertyRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW, callbacks::put);
|
|
||||||
callback(SettlementHousePropertyUpdateRequest.class)
|
|
||||||
.setConsumer(request -> requestHelper.requestFunction(this::processUpdateSettlementHousePropertyRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE, callbacks::put);
|
|
||||||
callback(CommonDeleteRequest.class)
|
|
||||||
.setFunction(request -> requestHelper.requestFunction(this::processDeleteSettlementHousePropertyRequest, request))
|
|
||||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE
|
|
||||||
, callbacks::put);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processNewSettlementHousePropertyRequest(BaseRequest<SettlementHousePropertyNewRequest> request) {
|
|
||||||
log.debug("SettlementHouseProperty-new request received, BaseRequest.id = {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = settlementHousePropertiesServiceValidator.createRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
settlementHousePropertiesServiceFacade.create(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processUpdateSettlementHousePropertyRequest(BaseRequest<SettlementHousePropertyUpdateRequest> request) {
|
|
||||||
log.debug("SettlementHouseProperty-update request received, BaseRequest.id = {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = settlementHousePropertiesServiceValidator.updateRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
settlementHousePropertiesServiceFacade.update(request.getRequestPayload());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate processDeleteSettlementHousePropertyRequest(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
log.debug("SettlementHousePropertyDeleteRequest received id = {}", request.getId());
|
|
||||||
|
|
||||||
RequestInfoUpdate requestInfoUpdate = settlementHousePropertiesServiceValidator.deleteRequestValidation(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
CompanyErrors result = settlementHousePropertiesServiceFacade.delete(request.getRequestPayload());
|
|
||||||
if (result != null) {
|
|
||||||
return requestHelper.makeErrorResponse(request, result, request.getId());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.validators;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ClearingMemberCategoryServiceValidator {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ValidationHelper validationHelper;
|
|
||||||
private final UserRoleVerification userRoleVerification;
|
|
||||||
private final Function<ClearingMemberCategoryNewRequest, IValidator> clearingMemberCategoryNewRequestValidator;
|
|
||||||
private final Function<ClearingMemberCategoryUpdateRequest, IValidator> clearingMemberCategoryUpdateRequestValidator;
|
|
||||||
private final Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator;
|
|
||||||
|
|
||||||
public ClearingMemberCategoryServiceValidator(ValidationHelper validationHelper,
|
|
||||||
UserRoleVerification userRoleVerification,
|
|
||||||
@Qualifier("clearingMemberCategoryNewRequestValidator")
|
|
||||||
Function<ClearingMemberCategoryNewRequest, IValidator> clearingMemberCategoryNewRequestValidator,
|
|
||||||
@Qualifier("clearingMemberCategoryUpdateRequestValidator")
|
|
||||||
Function<ClearingMemberCategoryUpdateRequest, IValidator> clearingMemberCategoryUpdateRequestValidator,
|
|
||||||
@Qualifier("clearingMemberCategoryDeleteRequestValidator")
|
|
||||||
Function<CommonDeleteRequest, IValidator> clearingMemberCategoryDeleteRequestValidator) {
|
|
||||||
this.validationHelper = validationHelper;
|
|
||||||
this.userRoleVerification = userRoleVerification;
|
|
||||||
this.clearingMemberCategoryNewRequestValidator = clearingMemberCategoryNewRequestValidator;
|
|
||||||
this.clearingMemberCategoryUpdateRequestValidator = clearingMemberCategoryUpdateRequestValidator;
|
|
||||||
this.clearingMemberCategoryDeleteRequestValidator = clearingMemberCategoryDeleteRequestValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate createRequestValidation(BaseRequest<ClearingMemberCategoryNewRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, clearingMemberCategoryNewRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<ClearingMemberCategoryUpdateRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, clearingMemberCategoryUpdateRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, clearingMemberCategoryDeleteRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.validators;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanyInfoServiceValidator {
|
|
||||||
private final UserRoleVerification userRoleVerification;
|
|
||||||
private final ValidationHelper validationHelper;
|
|
||||||
private final Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator;
|
|
||||||
|
|
||||||
public CompanyInfoServiceValidator(UserRoleVerification userRoleVerification,
|
|
||||||
ValidationHelper validationHelper,
|
|
||||||
@Qualifier("CompanyInfoUpdateRequestValidator")
|
|
||||||
Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator) {
|
|
||||||
this.userRoleVerification = userRoleVerification;
|
|
||||||
this.validationHelper = validationHelper;
|
|
||||||
this.companyInfoUpdateRequestValidator = companyInfoUpdateRequestValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyInfoReq);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(companyInfoReq, companyInfoUpdateRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.validators;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanyRoleSetServiceValidator {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final UserRoleVerification userRoleVerification;
|
|
||||||
private final ValidationHelper validationHelper;
|
|
||||||
private final Function<CompanyRoleSetNewRequest, IValidator> companyRoleSetNewRequestValidator;
|
|
||||||
private final Function<CompanyRoleSetUpdateRequest, IValidator> companyRoleSetUpdateRequestValidator;
|
|
||||||
private final Function<CommonDeleteRequest, IValidator> companyRoleSetDeleteRequestValidator;
|
|
||||||
|
|
||||||
public CompanyRoleSetServiceValidator(UserRoleVerification userRoleVerification,
|
|
||||||
ValidationHelper validationHelper,
|
|
||||||
@Qualifier("CompanyRoleSetNewRequestValidator")
|
|
||||||
Function<CompanyRoleSetNewRequest, IValidator> companyRoleSetNewRequestValidator,
|
|
||||||
@Qualifier("CompanyRoleSetUpdateRequestValidator")
|
|
||||||
Function<CompanyRoleSetUpdateRequest, IValidator> companyRoleSetUpdateRequestValidator,
|
|
||||||
@Qualifier("CompanyRoleSetDeleteRequestValidator")
|
|
||||||
Function<CommonDeleteRequest, IValidator> companyRoleSetDeleteRequestValidator) {
|
|
||||||
this.userRoleVerification = userRoleVerification;
|
|
||||||
this.validationHelper = validationHelper;
|
|
||||||
this.companyRoleSetNewRequestValidator = companyRoleSetNewRequestValidator;
|
|
||||||
this.companyRoleSetUpdateRequestValidator = companyRoleSetUpdateRequestValidator;
|
|
||||||
this.companyRoleSetDeleteRequestValidator = companyRoleSetDeleteRequestValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate createRequestValidation(BaseRequest<CompanyRoleSetNewRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companyRoleSetNewRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<CompanyRoleSetUpdateRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companyRoleSetUpdateRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companyRoleSetDeleteRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.validators;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
|
||||||
import ru.spcex.platform.utils.error.ValidationException;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanyServiceValidator {
|
|
||||||
private final ValidationHelper validationHelper;
|
|
||||||
private final Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
|
|
||||||
private final Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator;
|
|
||||||
private final Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator;
|
|
||||||
private final UserRoleVerification userRoleVerification;
|
|
||||||
|
|
||||||
public CompanyServiceValidator(ValidationHelper validationHelper,
|
|
||||||
@Qualifier("companyNewRequestValidator")
|
|
||||||
Function<CompanyNewRequest, IValidator> companyNewRequestValidator,
|
|
||||||
@Qualifier("companyUpdateRequestValidator")
|
|
||||||
Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator,
|
|
||||||
@Qualifier("CompanyDeleteRequestValidator")
|
|
||||||
Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator,
|
|
||||||
UserRoleVerification userRoleVerification) {
|
|
||||||
this.validationHelper = validationHelper;
|
|
||||||
this.companyNewRequestValidator = companyNewRequestValidator;
|
|
||||||
this.companyUpdateRequestValidator = companyUpdateRequestValidator;
|
|
||||||
this.companyDeleteRequestValidator = companyDeleteRequestValidator;
|
|
||||||
this.userRoleVerification = userRoleVerification;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate baseRequestValidation(BaseRequest<?> request) {
|
|
||||||
return userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void createRequestValidation(CompanyNewRequest companyNewRequest) throws ValidationException {
|
|
||||||
IValidator validator = companyNewRequestValidator.apply(companyNewRequest);
|
|
||||||
Optional<EnumMessage> error = validator.tillFirstError();
|
|
||||||
if (error.isPresent()) {
|
|
||||||
throw new ValidationException(error.get());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateRequestValidation(CompanyNewRequest updateRequest) throws ValidationException {
|
|
||||||
IValidator validator = companyUpdateRequestValidator.apply(updateRequest);
|
|
||||||
Optional<EnumMessage> error = validator.tillFirstError();
|
|
||||||
if (error.isPresent()) {
|
|
||||||
throw new ValidationException(error.get());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> companyBlockRequestBaseRequest) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,66 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.validators;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class CompanySymbolServiceValidator {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ValidationHelper validationHelper;
|
|
||||||
private final UserRoleVerification userRoleVerification;
|
|
||||||
private final Function<CompanySymbolNewRequest, IValidator> companySymbolNewRequestValidator;
|
|
||||||
private final Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator;
|
|
||||||
private final Function<CommonDeleteRequest, IValidator> companySymbolDeleteRequestValidator;
|
|
||||||
|
|
||||||
public CompanySymbolServiceValidator(ValidationHelper validationHelper,
|
|
||||||
UserRoleVerification userRoleVerification,
|
|
||||||
@Qualifier("companySymbolNewRequestValidator")
|
|
||||||
Function<CompanySymbolNewRequest, IValidator> companySymbolNewRequestValidator,
|
|
||||||
@Qualifier("companySymbolDeleteRequestValidator")
|
|
||||||
Function<CommonDeleteRequest, IValidator> companySymbolDeleteRequestValidator,
|
|
||||||
@Qualifier("companySymbolUpdateRequestValidator")
|
|
||||||
Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator) {
|
|
||||||
this.validationHelper = validationHelper;
|
|
||||||
this.userRoleVerification = userRoleVerification;
|
|
||||||
this.companySymbolNewRequestValidator = companySymbolNewRequestValidator;
|
|
||||||
this.companySymbolUpdateRequestValidator = companySymbolUpdateRequestValidator;
|
|
||||||
this.companySymbolDeleteRequestValidator = companySymbolDeleteRequestValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate createRequestValidation(BaseRequest<CompanySymbolNewRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) {
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companySymbolNewRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<CompanySymbolUpdateRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companySymbolUpdateRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, companySymbolDeleteRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.validators;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ContactServiceValidator {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final ValidationHelper validationHelper;
|
|
||||||
private final UserRoleVerification userRoleVerification;
|
|
||||||
private final Function<ContactNewRequest, IValidator> contactNewRequestValidator;
|
|
||||||
private final Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator;
|
|
||||||
private final Function<CommonDeleteRequest, IValidator> contactDeleteRequestValidator;
|
|
||||||
|
|
||||||
public ContactServiceValidator(ValidationHelper validationHelper,
|
|
||||||
UserRoleVerification userRoleVerification,
|
|
||||||
@Qualifier("contactNewRequestValidator")
|
|
||||||
Function<ContactNewRequest, IValidator> contactNewRequestValidator,
|
|
||||||
@Qualifier("contactDeleteRequestValidator")
|
|
||||||
Function<CommonDeleteRequest, IValidator> contactDeleteRequestValidator,
|
|
||||||
@Qualifier("contactUpdateRequestValidator")
|
|
||||||
Function<ContactUpdateRequest, IValidator> contactUpdateRequestValidator) {
|
|
||||||
this.validationHelper = validationHelper;
|
|
||||||
this.userRoleVerification = userRoleVerification;
|
|
||||||
this.contactNewRequestValidator = contactNewRequestValidator;
|
|
||||||
this.contactUpdateRequestValidator = contactUpdateRequestValidator;
|
|
||||||
this.contactDeleteRequestValidator = contactDeleteRequestValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate createRequestValidation(BaseRequest<ContactNewRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, contactNewRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<ContactUpdateRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, contactUpdateRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, contactDeleteRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.validators;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class ProfileDocumentServiceValidator {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final UserRoleVerification userRoleVerification;
|
|
||||||
private final ValidationHelper validationHelper;
|
|
||||||
private final Function<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator;
|
|
||||||
private final Function<ProfileDocumentUpdateRequest, IValidator> profileDocumentUpdateRequestValidator;
|
|
||||||
private final Function<CommonDeleteRequest, IValidator> profileDocumentDeleteRequestValidator;
|
|
||||||
|
|
||||||
public ProfileDocumentServiceValidator(UserRoleVerification userRoleVerification,
|
|
||||||
ValidationHelper validationHelper,
|
|
||||||
@Qualifier("profileDocumentNewRequestValidation")
|
|
||||||
Function<ProfileDocumentNewRequest, IValidator> profileDocumentNewRequestValidator,
|
|
||||||
@Qualifier("profileDocumentUpdateRequestValidation")
|
|
||||||
Function<ProfileDocumentUpdateRequest, IValidator> profileDocumentUpdateRequestValidator,
|
|
||||||
@Qualifier("profileDocumentDeleteRequestValidation")
|
|
||||||
Function<CommonDeleteRequest, IValidator> profileDocumentDeleteRequestValidator) {
|
|
||||||
this.userRoleVerification = userRoleVerification;
|
|
||||||
this.validationHelper = validationHelper;
|
|
||||||
this.profileDocumentNewRequestValidator = profileDocumentNewRequestValidator;
|
|
||||||
this.profileDocumentUpdateRequestValidator = profileDocumentUpdateRequestValidator;
|
|
||||||
this.profileDocumentDeleteRequestValidator = profileDocumentDeleteRequestValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate createRequestValidation(BaseRequest<ProfileDocumentNewRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
return validationHelper.validateTillFirstError(request, profileDocumentNewRequestValidator);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<ProfileDocumentUpdateRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
return validationHelper.validateTillFirstError(request, profileDocumentUpdateRequestValidator);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
return validationHelper.validateTillFirstError(request, profileDocumentDeleteRequestValidator);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.validators;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class RelationServiceValidator {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final UserRoleVerification userRoleVerification;
|
|
||||||
private final ValidationHelper validationHelper;
|
|
||||||
private final Function<RelationNewRequest, IValidator> relationNewRequestValidator;
|
|
||||||
private final Function<RelationUpdateRequest, IValidator> relationUpdateRequestValidator;
|
|
||||||
private final Function<CommonDeleteRequest, IValidator> relationDeleteRequestValidator;
|
|
||||||
|
|
||||||
public RelationServiceValidator(UserRoleVerification userRoleVerification,
|
|
||||||
ValidationHelper validationHelper,
|
|
||||||
@Qualifier("relationNewRequestValidation")
|
|
||||||
Function<RelationNewRequest, IValidator> relationNewRequestValidator,
|
|
||||||
@Qualifier("relationUpdateRequestValidation")
|
|
||||||
Function<RelationUpdateRequest, IValidator> relationUpdateRequestValidator,
|
|
||||||
@Qualifier("relationDeleteRequestValidation")
|
|
||||||
Function<CommonDeleteRequest, IValidator> relationDeleteRequestValidator) {
|
|
||||||
this.userRoleVerification = userRoleVerification;
|
|
||||||
this.validationHelper = validationHelper;
|
|
||||||
this.relationNewRequestValidator = relationNewRequestValidator;
|
|
||||||
this.relationUpdateRequestValidator = relationUpdateRequestValidator;
|
|
||||||
this.relationDeleteRequestValidator = relationDeleteRequestValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate createRequestValidation(BaseRequest<RelationNewRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, relationNewRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<RelationUpdateRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, relationUpdateRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, relationDeleteRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2.validators;
|
|
||||||
|
|
||||||
import java.util.function.Function;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class SettlementHousePropertiesServiceValidator {
|
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
|
||||||
private final UserRoleVerification userRoleVerification;
|
|
||||||
private final ValidationHelper validationHelper;
|
|
||||||
private final Function<SettlementHousePropertyNewRequest, IValidator> settlementHousePropertyNewRequestValidator;
|
|
||||||
private final Function<SettlementHousePropertyUpdateRequest, IValidator> settlementHousePropertyUpdateRequestRequestValidator;
|
|
||||||
private final Function<CommonDeleteRequest, IValidator> settlementHousePropertiesDeleteRequestValidator;
|
|
||||||
|
|
||||||
public SettlementHousePropertiesServiceValidator(UserRoleVerification userRoleVerification,
|
|
||||||
ValidationHelper validationHelper,
|
|
||||||
@Qualifier("SettlementHousePropertyNewRequestValidator")
|
|
||||||
Function<SettlementHousePropertyNewRequest, IValidator> settlementHousePropertyNewRequestValidator,
|
|
||||||
@Qualifier("SettlementHousePropertyUpdateRequestValidator")
|
|
||||||
Function<SettlementHousePropertyUpdateRequest, IValidator> settlementHousePropertyUpdateRequestRequestValidator,
|
|
||||||
@Qualifier("SettlementHousePropertiesDeleteRequestValidator")
|
|
||||||
Function<CommonDeleteRequest, IValidator> settlementHousePropertiesDeleteRequestValidator) {
|
|
||||||
this.userRoleVerification = userRoleVerification;
|
|
||||||
this.validationHelper = validationHelper;
|
|
||||||
this.settlementHousePropertyNewRequestValidator = settlementHousePropertyNewRequestValidator;
|
|
||||||
this.settlementHousePropertyUpdateRequestRequestValidator = settlementHousePropertyUpdateRequestRequestValidator;
|
|
||||||
this.settlementHousePropertiesDeleteRequestValidator = settlementHousePropertiesDeleteRequestValidator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate createRequestValidation(BaseRequest<SettlementHousePropertyNewRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, settlementHousePropertyNewRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate updateRequestValidation(BaseRequest<SettlementHousePropertyUpdateRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, settlementHousePropertyUpdateRequestRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate deleteRequestValidation(BaseRequest<CommonDeleteRequest> request) {
|
|
||||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request);
|
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
|
||||||
|
|
||||||
requestInfoUpdate = validationHelper.validateTillFirstError(request, settlementHousePropertiesDeleteRequestValidator);
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -3,7 +3,6 @@ package ru.spcex.clearing.company.service;
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -36,8 +35,6 @@ import static ru.spcex.clearing.test.TestUtils.*;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
BeanConfiguration.class,
|
BeanConfiguration.class,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -34,8 +33,6 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
||||||
import static ru.spcex.clearing.test.TestUtils.*;
|
import static ru.spcex.clearing.test.TestUtils.*;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
CompanyInfoService.class,
|
CompanyInfoService.class,
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,6 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
||||||
import static ru.spcex.clearing.test.TestUtils.*;
|
import static ru.spcex.clearing.test.TestUtils.*;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
CompanyRoleSetService.class,
|
CompanyRoleSetService.class,
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package ru.spcex.clearing.company.service;
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -42,8 +41,6 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
||||||
import static ru.spcex.clearing.test.TestUtils.*;
|
import static ru.spcex.clearing.test.TestUtils.*;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
CompanyService.class,
|
CompanyService.class,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -34,8 +33,6 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
||||||
import static ru.spcex.clearing.test.TestUtils.*;
|
import static ru.spcex.clearing.test.TestUtils.*;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
CompanySymbolService.class,
|
CompanySymbolService.class,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -34,8 +33,6 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
||||||
import static ru.spcex.clearing.test.TestUtils.*;
|
import static ru.spcex.clearing.test.TestUtils.*;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
BeanConfiguration.class,
|
BeanConfiguration.class,
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,37 @@
|
||||||
package ru.spcex.clearing.company.service;
|
package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||||
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
|
import ru.clearing.classes.statics.data.profile.Contact;
|
||||||
|
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||||
|
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||||
import ru.spcex.clearing.company.config.validation.ClearingMemberCategoryValidationConfig;
|
import ru.spcex.clearing.company.config.validation.*;
|
||||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.*;
|
||||||
import ru.spcex.clearing.company.config.validation.ContactValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ProfileDocumentValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||||
|
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||||
|
import ru.spcex.platform.enumeration.ContactTypes;
|
||||||
|
import ru.spcex.platform.enumeration.DocumentTypes;
|
||||||
|
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
MultiCompanyService.class,
|
MultiCompanyService.class,
|
||||||
|
|
@ -42,158 +57,158 @@ import ru.spcex.clearing.test.config.KafkaTestConfig;
|
||||||
ImdgTestConfig.class,
|
ImdgTestConfig.class,
|
||||||
BeanConfiguration.class})
|
BeanConfiguration.class})
|
||||||
class MultiCompanyServiceTest {
|
class MultiCompanyServiceTest {
|
||||||
// final Long COMPANY_ID = 123L;
|
final Long COMPANY_ID = 123L;
|
||||||
//
|
|
||||||
// @Autowired
|
@Autowired
|
||||||
// protected MultiCompanyService multiCompanyService;
|
protected MultiCompanyService multiCompanyService;
|
||||||
//
|
|
||||||
// @Autowired
|
@Autowired
|
||||||
// @Qualifier("hazelcastServiceTest")
|
@Qualifier("hazelcastServiceTest")
|
||||||
// private ImdgProvider hazelcastServiceTest;
|
private ImdgProvider hazelcastServiceTest;
|
||||||
//
|
|
||||||
// @PostConstruct
|
@PostConstruct
|
||||||
// private void init() {
|
private void init() {
|
||||||
// waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||||
// Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
// Imdg<CompanySymbols> companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
Imdg<CompanySymbols> companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
//
|
|
||||||
// Company company = new Company();
|
Company company = new Company();
|
||||||
// company.setId(COMPANY_ID);
|
company.setId(COMPANY_ID);
|
||||||
// company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||||
// company.setFullName("Test company prime");
|
company.setFullName("Test company prime");
|
||||||
// companyImdg.insert(company);
|
companyImdg.insert(company);
|
||||||
//
|
|
||||||
//
|
|
||||||
// Imdg<CompanySymbolDictionary> companySymbolDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
Imdg<CompanySymbolDictionary> companySymbolDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
||||||
// {
|
{
|
||||||
// CompanySymbolDictionary cSymbol = new CompanySymbolDictionary();
|
CompanySymbolDictionary cSymbol = new CompanySymbolDictionary();
|
||||||
// cSymbol.setId(11L);
|
cSymbol.setId(11L);
|
||||||
// cSymbol.setCode(CompanySymbol.CLRC.getKey());
|
cSymbol.setCode(CompanySymbol.CLRC.getKey());
|
||||||
// cSymbol.setName(CompanySymbol.CLRC.getKey());
|
cSymbol.setName(CompanySymbol.CLRC.getKey());
|
||||||
// cSymbol.setShortname(" CLRC key");
|
cSymbol.setShortname(" CLRC key");
|
||||||
// companySymbolDictionaryImdg.insert(cSymbol);
|
companySymbolDictionaryImdg.insert(cSymbol);
|
||||||
// CompanySymbolDictionary cioSymbol = new CompanySymbolDictionary();
|
CompanySymbolDictionary cioSymbol = new CompanySymbolDictionary();
|
||||||
// cioSymbol.setId(22L);
|
cioSymbol.setId(22L);
|
||||||
// cioSymbol.setCode(CompanySymbol.CIO.getKey());
|
cioSymbol.setCode(CompanySymbol.CIO.getKey());
|
||||||
// cioSymbol.setName(CompanySymbol.CIO.getKey());
|
cioSymbol.setName(CompanySymbol.CIO.getKey());
|
||||||
// companySymbolDictionaryImdg.insert(cioSymbol);
|
companySymbolDictionaryImdg.insert(cioSymbol);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// Imdg<Contact> contactImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
Imdg<Contact> contactImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||||
// Contact contact = new Contact();
|
Contact contact = new Contact();
|
||||||
// contact.setId(100L);
|
contact.setId(100L);
|
||||||
// contact.setCompanyId(company.getId());
|
contact.setCompanyId(company.getId());
|
||||||
// contact.setContactType(ContactTypes.adrs.getKey());
|
contact.setContactType(ContactTypes.adrs.getKey());
|
||||||
// contact.setContactValue("UAR, st.Uarus, anystreet st., house 1");
|
contact.setContactValue("UAR, st.Uarus, anystreet st., house 1");
|
||||||
// contactImdg.insert(contact);
|
contactImdg.insert(contact);
|
||||||
//
|
|
||||||
// CompanySymbols companySymbol = new CompanySymbols();
|
CompanySymbols companySymbol = new CompanySymbols();
|
||||||
// companySymbol.setId(222L);
|
companySymbol.setId(222L);
|
||||||
// companySymbol.setCompanyId(company.getId());
|
companySymbol.setCompanyId(company.getId());
|
||||||
// companySymbol.setCompanySymbol(CompanySymbol.INN.getKey());
|
companySymbol.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||||
// companySymbol.setCompanySymbolValue("INN-VALUE");
|
companySymbol.setCompanySymbolValue("INN-VALUE");
|
||||||
// companySymbolsImdg.insert(companySymbol);
|
companySymbolsImdg.insert(companySymbol);
|
||||||
//
|
|
||||||
// Imdg<ProfileDocument> profileDocumentImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
Imdg<ProfileDocument> profileDocumentImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||||
// ProfileDocument doc = new ProfileDocument();
|
ProfileDocument doc = new ProfileDocument();
|
||||||
// doc.setId(10002L);
|
doc.setId(10002L);
|
||||||
// doc.setCompanyId(COMPANY_ID);
|
doc.setCompanyId(COMPANY_ID);
|
||||||
// doc.setDocumentType(DocumentTypes.form.getKey());
|
doc.setDocumentType(DocumentTypes.form.getKey());
|
||||||
// doc.setIssueDate(LocalDate.now()); // тест может показать ложное срабатывание в 00:00:00.001
|
doc.setIssueDate(LocalDate.now()); // тест может показать ложное срабатывание в 00:00:00.001
|
||||||
// profileDocumentImdg.insert(doc);
|
profileDocumentImdg.insert(doc);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @Test
|
@Test
|
||||||
// void findCompanyDocument() {
|
void findCompanyDocument() {
|
||||||
// ProfileDocumentNewRequest req = new ProfileDocumentNewRequest();
|
ProfileDocumentNewRequest req = new ProfileDocumentNewRequest();
|
||||||
// req.setCompanyId(COMPANY_ID);
|
req.setCompanyId(COMPANY_ID);
|
||||||
// req.setDocumentType(DocumentTypes.form.getKey());
|
req.setDocumentType(DocumentTypes.form.getKey());
|
||||||
// req.setIssueDate(LocalDate.now());
|
req.setIssueDate(LocalDate.now());
|
||||||
// ProfileDocument doc = multiCompanyService.findCompanyDocument(req);
|
ProfileDocument doc = multiCompanyService.findCompanyDocument(req);
|
||||||
// assertNotNull(doc);
|
assertNotNull(doc);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @Test
|
@Test
|
||||||
// void findCompanySymbols() {
|
void findCompanySymbols() {
|
||||||
// CompanySymbolNewRequest req = new CompanySymbolNewRequest();
|
CompanySymbolNewRequest req = new CompanySymbolNewRequest();
|
||||||
// req.setCompanyId(COMPANY_ID);
|
req.setCompanyId(COMPANY_ID);
|
||||||
// req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||||
// req.setCompanySymbolValue("CL-VALUE-2");
|
req.setCompanySymbolValue("CL-VALUE-2");
|
||||||
// assertNull(multiCompanyService.findCompanySymbols(req));
|
assertNull(multiCompanyService.findCompanySymbols(req));
|
||||||
//
|
|
||||||
// req.setCompanySymbol(CompanySymbol.INN.getKey());
|
req.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||||
// req.setCompanySymbolValue("INN-VALUE");
|
req.setCompanySymbolValue("INN-VALUE");
|
||||||
// CompanySymbols symbol = multiCompanyService.findCompanySymbols(req);
|
CompanySymbols symbol = multiCompanyService.findCompanySymbols(req);
|
||||||
// assertNotNull(symbol);
|
assertNotNull(symbol);
|
||||||
// assertEquals("INN-VALUE", symbol.getCompanySymbolValue());
|
assertEquals("INN-VALUE", symbol.getCompanySymbolValue());
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @Test
|
@Test
|
||||||
// void findContact() {
|
void findContact() {
|
||||||
// ContactNewRequest req = new ContactNewRequest();
|
ContactNewRequest req = new ContactNewRequest();
|
||||||
// req.setCompanyId(COMPANY_ID);
|
req.setCompanyId(COMPANY_ID);
|
||||||
// req.setContactType(ContactTypes.adrs.getKey());
|
req.setContactType(ContactTypes.adrs.getKey());
|
||||||
// req.setContactValue("UAR, st.Uarus, anystreet st., house 2");
|
req.setContactValue("UAR, st.Uarus, anystreet st., house 2");
|
||||||
// Contact contact = multiCompanyService.findContact(req);
|
Contact contact = multiCompanyService.findContact(req);
|
||||||
// assertNotNull(contact);
|
assertNotNull(contact);
|
||||||
// assertNotEquals(req.getContactValue(), contact.getContactValue());
|
assertNotEquals(req.getContactValue(), contact.getContactValue());
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @Test
|
@Test
|
||||||
// void getCompanyIdForCompanySymbols() {
|
void getCompanyIdForCompanySymbols() {
|
||||||
// CompanyNewRequest req = new CompanyNewRequest();
|
CompanyNewRequest req = new CompanyNewRequest();
|
||||||
// req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||||
// req.setCompanySymbolValue("CL-VALUE");
|
req.setCompanySymbolValue("CL-VALUE");
|
||||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||||
//
|
|
||||||
// req.setCompanySymbolValue("INN-VALUE");
|
req.setCompanySymbolValue("INN-VALUE");
|
||||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||||
// req.setCompanySymbol(CompanySymbol.INN.getKey());
|
req.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||||
// assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
||||||
// req.setCompanySymbol(null);
|
req.setCompanySymbol(null);
|
||||||
// req.setCompanySymbolValue(null);
|
req.setCompanySymbolValue(null);
|
||||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null));
|
assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null));
|
||||||
// List<CompanySymbolNewRequest> csReq=new ArrayList<>();
|
List<CompanySymbolNewRequest> csReq=new ArrayList<>();
|
||||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null));
|
assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null));
|
||||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||||
// {
|
{
|
||||||
// CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
||||||
// cs.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
cs.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
||||||
// cs.setCompanySymbolValue("INN-VALUE");
|
cs.setCompanySymbolValue("INN-VALUE");
|
||||||
// csReq.add(cs);
|
csReq.add(cs);
|
||||||
// }
|
}
|
||||||
// assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||||
// {
|
{
|
||||||
// CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
||||||
// cs.setCompanySymbol(CompanySymbol.INN.getKey());
|
cs.setCompanySymbol(CompanySymbol.INN.getKey());
|
||||||
// cs.setCompanySymbolValue("INN-VALUE");
|
cs.setCompanySymbolValue("INN-VALUE");
|
||||||
// csReq.add(cs);
|
csReq.add(cs);
|
||||||
// }
|
}
|
||||||
// assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq));
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @Test
|
@Test
|
||||||
// void fillCompanyId() {
|
void fillCompanyId() {
|
||||||
// {
|
{
|
||||||
// CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
||||||
// testReq.setCompany(new CompanyNewRequest());
|
testReq.setCompany(new CompanyNewRequest());
|
||||||
// testReq.setProfileDocuments(null);
|
testReq.setProfileDocuments(null);
|
||||||
// testReq.setCompanySymbols(null);
|
testReq.setCompanySymbols(null);
|
||||||
// testReq.setContacts(null);
|
testReq.setContacts(null);
|
||||||
// testReq.setClientCodes(null);
|
testReq.setClientCodes(null);
|
||||||
// multiCompanyService.fillCompanyId(testReq, COMPANY_ID);
|
multiCompanyService.fillCompanyId(testReq, COMPANY_ID);
|
||||||
// assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
||||||
// assertNotNull(testReq.getProfileDocuments());
|
assertNotNull(testReq.getProfileDocuments());
|
||||||
// assertNotNull(testReq.getCompanySymbols());
|
assertNotNull(testReq.getCompanySymbols());
|
||||||
// assertNotNull(testReq.getContacts());
|
assertNotNull(testReq.getContacts());
|
||||||
// assertNotNull(testReq.getClientCodes());
|
assertNotNull(testReq.getClientCodes());
|
||||||
// }
|
}
|
||||||
// {
|
{
|
||||||
// CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
||||||
// testReq.setCompany(new CompanyNewRequest());
|
testReq.setCompany(new CompanyNewRequest());
|
||||||
// testReq.setCompanyInfo(new CompanyInfoUpdateRequest());
|
testReq.setCompanyInfo(new CompanyInfoUpdateRequest());
|
||||||
// multiCompanyService.fillCompanyId(testReq, COMPANY_ID);
|
multiCompanyService.fillCompanyId(testReq, COMPANY_ID);
|
||||||
// assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3,7 +3,6 @@ package ru.spcex.clearing.company.service;
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -38,8 +37,6 @@ import static ru.spcex.clearing.test.TestUtils.*;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
BeanConfiguration.class,
|
BeanConfiguration.class,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package ru.spcex.clearing.company.service;
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -38,8 +37,6 @@ import static ru.spcex.clearing.test.TestUtils.*;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
BeanConfiguration.class,
|
BeanConfiguration.class,
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package ru.spcex.clearing.company.service;
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
@ -45,8 +44,6 @@ import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparato
|
||||||
import static ru.spcex.clearing.test.TestUtils.*;
|
import static ru.spcex.clearing.test.TestUtils.*;
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
@Disabled
|
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
SettlementHousePropertiesService.class,
|
SettlementHousePropertiesService.class,
|
||||||
|
|
|
||||||
|
|
@ -1,210 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForDelete;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.platform.dictionary.ClearingCategoryDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ClearingMemberCategoryValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.ClearingMemberCategoryServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.ClearingMemberCategoryServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ClearingMemberCategoryUpdateRequest;
|
|
||||||
import ru.spcex.clearing.test.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
BeanConfiguration.class,
|
|
||||||
ValidationConfig.class,
|
|
||||||
ClearingMemberCategoryServiceListener.class,
|
|
||||||
ClearingMemberCategoryServiceFacade.class,
|
|
||||||
ClearingMemberCategoryServiceValidator.class,
|
|
||||||
ClearingMemberCategoryValidationConfig.class,
|
|
||||||
|
|
||||||
CompanyInfoServiceFacade.class,
|
|
||||||
ProfileDocumentServiceFacade.class,
|
|
||||||
ContactServiceFacade.class,
|
|
||||||
|
|
||||||
CompanyServiceFacade.class, CompanyValidationConfig.class,
|
|
||||||
CompanySymbolServiceFacade.class, CompanySymbolValidationConfig.class,
|
|
||||||
AccountNotificationHelper.class,
|
|
||||||
RelationServiceFacade.class, RelationValidationConfig.class,
|
|
||||||
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class})
|
|
||||||
class ClearingMemberCategoryServiceListenerTest {
|
|
||||||
|
|
||||||
public static final MatcherFactory.Matcher<ClearingMemberCategory> MEMBER_CATEGORY_MATCHER = usingIgnoringFieldsComparator();
|
|
||||||
private static final int PARTITION = 0;
|
|
||||||
private static final String TOPIC_MEMBER_CATEGORY_NEW = Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_NEW;
|
|
||||||
private static final String TOPIC_MEMBER_CATEGORY_UPDATE = Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE;
|
|
||||||
private static final String TOPIC_MEMBER_CATEGORY_DELETE = Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE;
|
|
||||||
private static final Long ID = currentID.incrementAndGet();
|
|
||||||
@Autowired
|
|
||||||
ClearingMemberCategoryServiceListener clearingMemberCategoryServiceListener;
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
private Imdg<ClearingMemberCategory> memberCategoryImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("mockProducer")
|
|
||||||
protected Producer<String, Object> mockProducer;
|
|
||||||
|
|
||||||
private long COMPANY_ID;
|
|
||||||
private Company TEST_COMPANY;
|
|
||||||
|
|
||||||
private final String CLEARING_CATEGORY_DICT_CODE = ClearingCategory.B.getKey();
|
|
||||||
private ClearingCategoryDictionary clearingCategoryDictionary;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
memberCategoryImdg = hazelcastServiceTest.getImdg(
|
|
||||||
IMDGDistributedNames.Map_ClearingMemberCategory,
|
|
||||||
ClearingMemberCategory.class
|
|
||||||
);
|
|
||||||
Imdg<ClearingCategoryDictionary> clearingCategoryDictionaryImdg = hazelcastServiceTest.getImdg(
|
|
||||||
IMDGDistributedNames.Map_ClearingCategoryDictionary,
|
|
||||||
ClearingCategoryDictionary.class
|
|
||||||
);
|
|
||||||
|
|
||||||
Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
TEST_COMPANY = new Company();
|
|
||||||
TEST_COMPANY.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
COMPANY_ID = companyImdg.insert(TEST_COMPANY);
|
|
||||||
|
|
||||||
clearingCategoryDictionary = new ClearingCategoryDictionary();
|
|
||||||
clearingCategoryDictionary.setCode(CLEARING_CATEGORY_DICT_CODE);
|
|
||||||
clearingCategoryDictionaryImdg.insert(clearingCategoryDictionary);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void clearingMemberCategoryNew() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
String clearingMemberCategory = CLEARING_CATEGORY_DICT_CODE;
|
|
||||||
ClearingMemberCategoryNewRequest memberCategoryNewRequest = new ClearingMemberCategoryNewRequest();
|
|
||||||
memberCategoryNewRequest.setClearingMemberCategory(clearingMemberCategory);
|
|
||||||
memberCategoryNewRequest.setCompanyId(TEST_COMPANY.getId());
|
|
||||||
|
|
||||||
ClearingMemberCategory predictableClearingMemberCategory = new ClearingMemberCategory();
|
|
||||||
predictableClearingMemberCategory.setCompanyId(COMPANY_ID);
|
|
||||||
predictableClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForNew(memberCategoryNewRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) clearingMemberCategoryServiceListener.getConsumer(), TOPIC_MEMBER_CATEGORY_NEW, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
ClearingMemberCategory resultNew = memberCategoryImdg.getFirstObjectBySQL(String.format("clearingMemberCategory = %s", clearingMemberCategory));
|
|
||||||
predictableClearingMemberCategory.setId(resultNew.getId());
|
|
||||||
MEMBER_CATEGORY_MATCHER.assertMatch(resultNew, predictableClearingMemberCategory);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link ClearingMemberCategoryServiceListener#processUpdateClearingMemberCategoryRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* Тест проверяет обновление сущности {@link ClearingMemberCategory} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link ClearingMemberCategoryUpdateRequest}:<br>
|
|
||||||
* {@link ClearingMemberCategoryUpdateRequest#id} - Идентификатор записи<br>
|
|
||||||
* {@link ClearingMemberCategoryUpdateRequest#getClearingMemberCategory()} - 1234<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void clearingMemberCategoryUpdate() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
String clearingMemberCategory = CLEARING_CATEGORY_DICT_CODE;
|
|
||||||
ClearingMemberCategory existsClearingMemberCategory = new ClearingMemberCategory();
|
|
||||||
existsClearingMemberCategory.setClearingMemberCategory("0000");
|
|
||||||
existsClearingMemberCategory.setCompanyId(COMPANY_ID);
|
|
||||||
Long id = memberCategoryImdg.insert(existsClearingMemberCategory);
|
|
||||||
|
|
||||||
ClearingMemberCategoryUpdateRequest memberCategoryUpdateRequest = new ClearingMemberCategoryUpdateRequest();
|
|
||||||
memberCategoryUpdateRequest.setId(id);
|
|
||||||
memberCategoryUpdateRequest.setClearingMemberCategory(clearingMemberCategory);
|
|
||||||
|
|
||||||
ClearingMemberCategory predictableClearingMemberCategory = new ClearingMemberCategory();
|
|
||||||
predictableClearingMemberCategory.setCompanyId(COMPANY_ID);
|
|
||||||
predictableClearingMemberCategory.setId(id);
|
|
||||||
predictableClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(memberCategoryUpdateRequest, id);
|
|
||||||
addRecordToKafka((MockConsumer) clearingMemberCategoryServiceListener.getConsumer(), TOPIC_MEMBER_CATEGORY_UPDATE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(id, mockProducer);
|
|
||||||
|
|
||||||
ClearingMemberCategory resultUpdating = memberCategoryImdg.getSingleObjectByID(id);
|
|
||||||
MEMBER_CATEGORY_MATCHER.assertMatch(resultUpdating, predictableClearingMemberCategory);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link ClearingMemberCategoryServiceListener#processDeleteClearingMemberCategoryRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* Тест проверяет удаление сущности {@link ClearingMemberCategory} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
|
||||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void clearingMemberCategoryDelete() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
String clearingMemberCategory = "0000";
|
|
||||||
ClearingMemberCategory existsClearingMemberCategory = new ClearingMemberCategory();
|
|
||||||
existsClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory);
|
|
||||||
existsClearingMemberCategory.setCompanyId(COMPANY_ID);
|
|
||||||
Long id = memberCategoryImdg.insert(existsClearingMemberCategory);
|
|
||||||
|
|
||||||
CommonDeleteRequest memberCategoryDeleteRequest = new CommonDeleteRequest();
|
|
||||||
memberCategoryDeleteRequest.setId(id);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForDelete(memberCategoryDeleteRequest, id);
|
|
||||||
addRecordToKafka((MockConsumer) clearingMemberCategoryServiceListener.getConsumer(), TOPIC_MEMBER_CATEGORY_DELETE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(id, mockProducer);
|
|
||||||
|
|
||||||
ClearingMemberCategory resultDeleting = memberCategoryImdg.getFirstObjectBySQL(String.format("clearingMemberCategory = %s", clearingMemberCategory));
|
|
||||||
Assertions.assertNull(resultDeleting);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,194 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
|
||||||
import ru.clearing.platform.dictionary.AbstractDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.AllowedDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.CorporationSoleTypeDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.CountryCodeDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.LegalKindDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.OrganizationTypeDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.CompanyInfoServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.CompanyInfoServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
|
||||||
import ru.spcex.clearing.test.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
CompanyInfoServiceListener.class,
|
|
||||||
CompanyInfoServiceFacade.class,
|
|
||||||
CompanyInfoServiceValidator.class,
|
|
||||||
CompanyValidationConfig.class,
|
|
||||||
CompanySymbolValidationConfig.class,
|
|
||||||
|
|
||||||
ProfileDocumentServiceFacade.class,
|
|
||||||
ContactServiceFacade.class,
|
|
||||||
ClearingMemberCategoryServiceFacade.class,
|
|
||||||
|
|
||||||
CompanyServiceFacade.class,
|
|
||||||
CompanyValidationConfig.class,
|
|
||||||
ValidationConfig.class,
|
|
||||||
CompanySymbolServiceFacade.class,
|
|
||||||
AccountNotificationHelper.class,
|
|
||||||
RelationServiceFacade.class,
|
|
||||||
RelationValidationConfig.class,
|
|
||||||
BeanConfiguration.class,
|
|
||||||
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class})
|
|
||||||
class CompanyInfoServiceListenerTest {
|
|
||||||
public static final MatcherFactory.Matcher<CompanyInfo> COMPANY_INFO_MATCHER = usingIgnoringFieldsComparator();
|
|
||||||
private static final int PARTITION = 0;
|
|
||||||
private static final String TOPIC_COMPANY_INFO_UPDATE = Consts.DESTINATION_COMPANY_INFO_UPDATE;
|
|
||||||
private static final Long ID = 0L;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
CompanyInfoServiceListener companyInfoService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("mockProducer")
|
|
||||||
protected Producer<String, Object> mockProducer;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
|
|
||||||
// Словари для теста, применяются в ValidationConfig
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CorporationSoleTypeDictionary, new CorporationSoleTypeDictionary(), "GDIR");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CountryCodeDictionary, new CountryCodeDictionary(), "RUS");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_AllowedDictionary, new AllowedDictionary(), "ALWD");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_LegalKindDictionary, new LegalKindDictionary(), "JURD");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_OrganizationTypeDictionary, new OrganizationTypeDictionary(), "NCRD");
|
|
||||||
}
|
|
||||||
|
|
||||||
private <D extends AbstractDictionary /*SpcexObjectBase & Dictionary*/> void putToDictionary(String mapName, D object, String code) {
|
|
||||||
Imdg<D> dMap = (Imdg) hazelcastServiceTest.getImdg(mapName, object.getClass());
|
|
||||||
object.setId(2L);
|
|
||||||
object.setCode(code);
|
|
||||||
object.setName("name of " + code);
|
|
||||||
dMap.insert(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link CompanyInfoServiceListener#processNewCompanyInfoUpdateRequest(BaseRequest)}<br>
|
|
||||||
* Тест проверяет обновление сущности {@link CompanyInfo} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link CompanyInfoUpdateRequest}:<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#id} - Идентификатор записи<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#getCorporationSoleType()} - GDIR<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#getCountryCode()} - RUS<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#getDescription()} - updated description<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#getProfessionalSign()} - ALWD<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#getLegalKind()} - JURD<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#getOrganizationType()} - NCRD<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#getResidence()} - RUS<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#getShortName()} - updated shortNameEng<br>
|
|
||||||
* {@link CompanyInfoUpdateRequest#getFullName()} - updated fullNameEng<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void processNewCompanyInfoUpdateRequest() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
CompanyInfo existsCompanyInfo = new CompanyInfo();
|
|
||||||
existsCompanyInfo.setId(ID);
|
|
||||||
existsCompanyInfo.setCompanyId(ID);
|
|
||||||
existsCompanyInfo.setCorporationSoleType("0000");
|
|
||||||
existsCompanyInfo.setCountryCode("0000");
|
|
||||||
existsCompanyInfo.setDescription("exists description");
|
|
||||||
existsCompanyInfo.setProfessionalSign("0000");
|
|
||||||
existsCompanyInfo.setLegalKind("0000");
|
|
||||||
existsCompanyInfo.setOrganizationType("0000");
|
|
||||||
existsCompanyInfo.setResidence("0000");
|
|
||||||
existsCompanyInfo.setShortNameEng("exists shortNameEng");
|
|
||||||
existsCompanyInfo.setFullNameEng("exists fullNameEng");
|
|
||||||
Company existsCompany = new Company();
|
|
||||||
existsCompany.setId(ID);
|
|
||||||
existsCompany.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
existsCompany.setProfile(existsCompanyInfo);
|
|
||||||
existsCompany.setShortName("exists shortName");
|
|
||||||
existsCompany.setFullName("exists fullName");
|
|
||||||
companyImdg.insert(existsCompany);
|
|
||||||
|
|
||||||
CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest();
|
|
||||||
companyInfoUpdateRequest.setId(ID);
|
|
||||||
companyInfoUpdateRequest.setCorporationSoleType("GDIR");
|
|
||||||
companyInfoUpdateRequest.setCountryCode("RUS");
|
|
||||||
companyInfoUpdateRequest.setDescription("updated description");
|
|
||||||
companyInfoUpdateRequest.setProfessionalSign("ALWD");
|
|
||||||
companyInfoUpdateRequest.setLegalKind("JURD");
|
|
||||||
companyInfoUpdateRequest.setOrganizationType("NCRD");
|
|
||||||
companyInfoUpdateRequest.setResidence("RUS");
|
|
||||||
companyInfoUpdateRequest.setShortNameEng("updated shortNameEng");
|
|
||||||
companyInfoUpdateRequest.setFullNameEng("updated fullNameEng");
|
|
||||||
companyInfoUpdateRequest.setShortName("updated shortName");
|
|
||||||
companyInfoUpdateRequest.setFullName("updated fullName");
|
|
||||||
|
|
||||||
CompanyInfo predictableCompanyInfo = new CompanyInfo();
|
|
||||||
predictableCompanyInfo.setId(ID);
|
|
||||||
predictableCompanyInfo.setCompanyId(ID);
|
|
||||||
predictableCompanyInfo.setCorporationSoleType("GDIR");
|
|
||||||
predictableCompanyInfo.setCountryCode("RUS");
|
|
||||||
predictableCompanyInfo.setDescription("updated description");
|
|
||||||
predictableCompanyInfo.setProfessionalSign("ALWD");
|
|
||||||
predictableCompanyInfo.setLegalKind("JURD");
|
|
||||||
predictableCompanyInfo.setOrganizationType("NCRD");
|
|
||||||
predictableCompanyInfo.setResidence("RUS");
|
|
||||||
predictableCompanyInfo.setShortNameEng("updated shortNameEng");
|
|
||||||
predictableCompanyInfo.setFullNameEng("updated fullNameEng");
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(companyInfoUpdateRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) companyInfoService.getConsumer(), TOPIC_COMPANY_INFO_UPDATE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
Company resultUpdating = companyImdg.getSingleObjectByID(ID);
|
|
||||||
COMPANY_INFO_MATCHER.assertMatch(resultUpdating.getProfile(), predictableCompanyInfo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,268 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForDelete;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.Map;
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
|
||||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
|
||||||
import ru.clearing.platform.dictionary.AbstractDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.AllowedDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.CompanyRoleDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyRoleSetValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyRoleSetServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.CompanyRoleSetServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.CompanyRoleSetServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyRoleSetUpdateRequest;
|
|
||||||
import ru.spcex.clearing.test.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.CompanyRole;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
CompanyRoleSetServiceListener.class,
|
|
||||||
CompanyRoleSetServiceFacade.class,
|
|
||||||
CompanyRoleSetServiceValidator.class,
|
|
||||||
CompanyRoleSetValidationConfig.class,
|
|
||||||
|
|
||||||
ValidationConfig.class,
|
|
||||||
BeanConfiguration.class,
|
|
||||||
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class})
|
|
||||||
class CompanyRoleSetServiceListenerTest {
|
|
||||||
public static final MatcherFactory.Matcher<CompanyRoleSet> COMPANY_ROLE_SET_MATCHER = usingIgnoringFieldsComparator();
|
|
||||||
private static final int PARTITION = 0;
|
|
||||||
private static final Long COMPANY_ID = 105L;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
CompanyRoleSetServiceListener companyRoleSetServiceListener;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<CompanyRoleSet> companyRoleSetImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("mockProducer")
|
|
||||||
protected Producer<String, Object> mockProducer;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
companyRoleSetImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
|
||||||
|
|
||||||
// Словари для теста, применяются в ValidationConfig
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_AllowedDictionary, new AllowedDictionary(), "ALWD");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CompanyRoleDictionary, new CompanyRoleDictionary(), "RPRT");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CompanyRoleDictionary, new CompanyRoleDictionary(), "SETH");
|
|
||||||
|
|
||||||
Company comp = new Company();
|
|
||||||
comp.setId(COMPANY_ID);
|
|
||||||
comp.setCreated(Instant.now());
|
|
||||||
comp.setFullName("Test LLC inc");
|
|
||||||
comp.setShortName("Test LLC");
|
|
||||||
comp.setProfile(new CompanyInfo());
|
|
||||||
comp.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
companyImdg.insert(comp);
|
|
||||||
}
|
|
||||||
|
|
||||||
private <D extends AbstractDictionary /*SpcexObjectBase & Dictionary*/> void putToDictionary(String mapName, D object, String code) {
|
|
||||||
Imdg<D> dMap = (Imdg<D>) hazelcastServiceTest.getImdg(mapName, object.getClass());
|
|
||||||
object.setId(1000L + code.hashCode() % 1000);
|
|
||||||
object.setCode(code);
|
|
||||||
object.setName("name of " + code);
|
|
||||||
// assert dMap.getSingleObjectByID(object.getId()) == null;
|
|
||||||
dMap.insert(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link CompanyRoleSetServiceListener#processNewCompanyRoleSetRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* * Тест проверяет создание сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.<br>
|
|
||||||
* * Входной запрос {@link CompanyRoleSetNewRequest}:<br>
|
|
||||||
* * {@link CompanyRoleSetNewRequest#getCompanyId()} - COMPANY_ID (105)<br>
|
|
||||||
* * {@link CompanyRoleSetNewRequest#getCompanyRole()} - SETH<br>
|
|
||||||
* * {@link CompanyRoleSetNewRequest#getWorkflowStatus()} - ACTV<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void companyRoleSetNew1() {
|
|
||||||
//ARRANGE
|
|
||||||
final Long ID = 102L;
|
|
||||||
final String DESTINATION_NEW = Consts.DESTINATION_COMPANY_ROLE_SETS_NEW;
|
|
||||||
companyImdg.size();
|
|
||||||
|
|
||||||
CompanyRoleSetNewRequest newRequest = new CompanyRoleSetNewRequest();
|
|
||||||
newRequest.setCompanyId(COMPANY_ID);
|
|
||||||
newRequest.setCompanyRole(CompanyRole.SETH.getKey());
|
|
||||||
newRequest.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForNew(newRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) companyRoleSetServiceListener.getConsumer(), DESTINATION_NEW, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
CompanyRoleSet resultNew = companyRoleSetImdg.getFirstObjectByFieldValues(Map.of("companyId", COMPANY_ID));
|
|
||||||
Assertions.assertNotNull(resultNew);
|
|
||||||
Assertions.assertEquals("SETH", resultNew.getCompanyRole());
|
|
||||||
Assertions.assertEquals(WorkflowStatus.Active.getKey(), resultNew.getWorkflowStatus());
|
|
||||||
|
|
||||||
// CLEAN UP
|
|
||||||
companyRoleSetImdg.delete(resultNew);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link CompanyRoleSetServiceListener#processNewCompanyRoleSetRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* * Тест проверяет создание сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.<br>
|
|
||||||
* * Входной запрос {@link CompanyRoleSetNewRequest}:<br>
|
|
||||||
* * {@link CompanyRoleSetNewRequest#getCompanyId()} - COMPANY_ID (105)<br>
|
|
||||||
* * {@link CompanyRoleSetNewRequest#getCompanyRole()} - SETH<br>
|
|
||||||
* * {@link CompanyRoleSetNewRequest#getWorkflowStatus()} - null<br>
|
|
||||||
*/
|
|
||||||
@Disabled
|
|
||||||
@Test
|
|
||||||
void companyRoleSetNew2() {
|
|
||||||
//ARRANGE
|
|
||||||
final Long ID = 103L;
|
|
||||||
final String DESTINATION_NEW = Consts.DESTINATION_COMPANY_ROLE_SETS_NEW;
|
|
||||||
companyImdg.size();
|
|
||||||
|
|
||||||
CompanyRoleSetNewRequest newRequest = new CompanyRoleSetNewRequest();
|
|
||||||
newRequest.setCompanyId(COMPANY_ID);
|
|
||||||
newRequest.setCompanyRole(CompanyRole.SETH.getKey());
|
|
||||||
newRequest.setWorkflowStatus(null);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForNew(newRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) companyRoleSetServiceListener.getConsumer(), DESTINATION_NEW, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
CompanyRoleSet resultNew = companyRoleSetImdg.getFirstObjectByFieldValues(Map.of("companyId", COMPANY_ID));
|
|
||||||
Assertions.assertNotNull(resultNew);
|
|
||||||
Assertions.assertEquals("SETH", resultNew.getCompanyRole());
|
|
||||||
Assertions.assertEquals(WorkflowStatus.Active.getKey(), resultNew.getWorkflowStatus());
|
|
||||||
|
|
||||||
// CLEAN UP
|
|
||||||
companyRoleSetImdg.delete(resultNew);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link CompanyRoleSetServiceListener#processUpdateCompanyRoleSetRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* * Тест проверяет обновление сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.<br>
|
|
||||||
* * Входной запрос {@link CompanyRoleSetUpdateRequest}:<br>
|
|
||||||
* * {@link CompanyRoleSetUpdateRequest#getId()} - ID<br>
|
|
||||||
* * {@link CompanyRoleSetUpdateRequest#getCompanyId()} - COMPANY_ID<br>
|
|
||||||
* * {@link CompanyRoleSetUpdateRequest#getCompanyRole()} - SETH<br>
|
|
||||||
* * {@link CompanyRoleSetUpdateRequest#getWorkflowStatus()} - null<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void companyRoleSetUpdate() {
|
|
||||||
final Long ID = 104L;
|
|
||||||
final String DESTINATION_UPDATE = Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE;
|
|
||||||
//ARRANGE
|
|
||||||
CompanyRoleSet existsCompanyRoleSet = new CompanyRoleSet();
|
|
||||||
existsCompanyRoleSet.setId(ID);
|
|
||||||
existsCompanyRoleSet.setCompanyId(COMPANY_ID);
|
|
||||||
existsCompanyRoleSet.setCompanyRole("ODEP");
|
|
||||||
companyRoleSetImdg.insert(existsCompanyRoleSet);
|
|
||||||
|
|
||||||
CompanyRoleSetUpdateRequest companyRoleSetUpdateRequest = new CompanyRoleSetUpdateRequest();
|
|
||||||
companyRoleSetUpdateRequest.setId(ID);
|
|
||||||
companyRoleSetUpdateRequest.setCompanyId(COMPANY_ID);
|
|
||||||
companyRoleSetUpdateRequest.setCompanyRole("SETH");
|
|
||||||
companyRoleSetUpdateRequest.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
|
|
||||||
CompanyRoleSet predictableCompanyRS = new CompanyRoleSet();
|
|
||||||
predictableCompanyRS.setId(ID);
|
|
||||||
predictableCompanyRS.setCompanyId(COMPANY_ID);
|
|
||||||
predictableCompanyRS.setCompanyRole("SETH");
|
|
||||||
predictableCompanyRS.setWorkflowStatus("ACTV");
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(companyRoleSetUpdateRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) companyRoleSetServiceListener.getConsumer(), DESTINATION_UPDATE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
CompanyRoleSet resultUpdating = companyRoleSetImdg.getSingleObjectByID(ID);
|
|
||||||
COMPANY_ROLE_SET_MATCHER.assertMatch(resultUpdating, predictableCompanyRS);
|
|
||||||
|
|
||||||
// CLEAN UP
|
|
||||||
companyRoleSetImdg.delete(existsCompanyRoleSet);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link CompanyRoleSetServiceListener#processDeleteCompanyRoleSetRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* Тест проверяет удаление сущности {@link CompanyRoleSet} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
|
||||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void deleteCRS() {
|
|
||||||
//ARRANGE
|
|
||||||
final Long ID = 101L;
|
|
||||||
CompanyRoleSet existsCompanyRoleSet = new CompanyRoleSet();
|
|
||||||
existsCompanyRoleSet.setId(ID);
|
|
||||||
existsCompanyRoleSet.setCompanyId(COMPANY_ID);
|
|
||||||
existsCompanyRoleSet.setCompanyRole("ODEP");
|
|
||||||
companyRoleSetImdg.insert(existsCompanyRoleSet);
|
|
||||||
|
|
||||||
CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest();
|
|
||||||
commonDeleteRequest.setId(ID);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForDelete(commonDeleteRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) companyRoleSetServiceListener.getConsumer(), Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
CompanyRoleSet resultDeleting = companyRoleSetImdg.getFirstObjectBySQL("id=" + ID);
|
|
||||||
Assertions.assertNull(resultDeleting);
|
|
||||||
// Assertions.assertEquals(WorkflowStatus.Blocked.getKey(), resultDeleting.getWorkflowStatus());
|
|
||||||
// companyRoleSetImdg.delete(existsCompanyRoleSet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,238 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForDelete;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingWhenTryAddRecordAndCheckError;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Map;
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.CompanyServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.CompanyServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
|
||||||
import ru.spcex.clearing.test.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
CompanyServiceListener.class,
|
|
||||||
CompanyServiceFacade.class,
|
|
||||||
CompanyServiceValidator.class,
|
|
||||||
CompanyValidationConfig.class,
|
|
||||||
ValidationConfig.class,
|
|
||||||
AccountNotificationHelper.class,
|
|
||||||
RelationServiceFacade.class,
|
|
||||||
RelationValidationConfig.class,
|
|
||||||
|
|
||||||
CompanySymbolServiceFacade.class,
|
|
||||||
CompanySymbolValidationConfig.class,
|
|
||||||
|
|
||||||
CompanyInfoServiceFacade.class,
|
|
||||||
ProfileDocumentServiceFacade.class,
|
|
||||||
ContactServiceFacade.class,
|
|
||||||
ClearingMemberCategoryServiceFacade.class,
|
|
||||||
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class,
|
|
||||||
BeanConfiguration.class})
|
|
||||||
public class CompanyServiceListenerTest {
|
|
||||||
public static final MatcherFactory.Matcher<ClearingMemberCategory> COMPANY_MATCHER = usingIgnoringFieldsComparator();
|
|
||||||
private static final int PARTITION = 0;
|
|
||||||
private static final String TOPIC_COMPANY_DELETE = Consts.DESTINATION_COMPANY_DELETE;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
CompanyServiceListener companyServiceListener;
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
|
||||||
private Imdg<WorkflowStatusDictionary> workflowStatusDictionaryImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("mockProducer")
|
|
||||||
protected Producer<String, Object> mockProducer;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
|
|
||||||
workflowStatusDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class);
|
|
||||||
WorkflowStatusDictionary ws1 = new WorkflowStatusDictionary();
|
|
||||||
ws1.setId(1L);
|
|
||||||
ws1.setCode(WorkflowStatus.Active.getKey());
|
|
||||||
ws1.setName("Active");
|
|
||||||
workflowStatusDictionaryImdg.insert(ws1);
|
|
||||||
WorkflowStatusDictionary ws2 = new WorkflowStatusDictionary();
|
|
||||||
ws2.setId(2L);
|
|
||||||
ws2.setCode(WorkflowStatus.Blocked.getKey());
|
|
||||||
ws2.setName("Blocked");
|
|
||||||
workflowStatusDictionaryImdg.insert(ws2);
|
|
||||||
|
|
||||||
Imdg<CompanySymbolDictionary> companySymbolDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
|
||||||
{
|
|
||||||
CompanySymbolDictionary cSymbol = new CompanySymbolDictionary();
|
|
||||||
cSymbol.setId(11L);
|
|
||||||
cSymbol.setCode(CompanySymbol.CLRC.getKey());
|
|
||||||
cSymbol.setName(CompanySymbol.CLRC.getKey());
|
|
||||||
cSymbol.setShortname(" CLRC key");
|
|
||||||
companySymbolDictionaryImdg.insert(cSymbol);
|
|
||||||
CompanySymbolDictionary cioSymbol = new CompanySymbolDictionary();
|
|
||||||
cioSymbol.setId(22L);
|
|
||||||
cioSymbol.setCode(CompanySymbol.CIO.getKey());
|
|
||||||
cioSymbol.setName(CompanySymbol.CIO.getKey());
|
|
||||||
companySymbolDictionaryImdg.insert(cioSymbol);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link CompanyServiceListener#processDeleteCompanyRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* Тест проверяет удаление сущности {@link Company} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
|
||||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void deleteCompany() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
final Long ID = 101L;
|
|
||||||
Company existsCompany = new Company();
|
|
||||||
existsCompany.setId(ID);
|
|
||||||
existsCompany.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
companyImdg.insert(existsCompany);
|
|
||||||
|
|
||||||
CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest();
|
|
||||||
commonDeleteRequest.setId(ID);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForDelete(commonDeleteRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) companyServiceListener.getConsumer(), TOPIC_COMPANY_DELETE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
//Company resultDeleting = companyImdg.getSingleObjectByID(ID);
|
|
||||||
Company resultDeleting = companyImdg.getFirstObjectBySQL("id=" + ID);
|
|
||||||
Assertions.assertEquals(WorkflowStatus.Blocked.getKey(), resultDeleting.getWorkflowStatus());
|
|
||||||
|
|
||||||
{
|
|
||||||
// Hazelcast 3.12.4 возможно имеет ошибку с NearCache (https://github.com/hazelcast/hazelcast/issues/16577) и её устранили в версии 3.12.7+.
|
|
||||||
// метод устранения проблемы: вместо return map.get(paramLong); использовать return map.getEntryView(paramLong).getValue();
|
|
||||||
Company resultDeletingDirectGet = companyImdg.getSingleObjectByID(ID);
|
|
||||||
if (!resultDeleting.getWorkflowStatus().equals(resultDeletingDirectGet.getWorkflowStatus())) {
|
|
||||||
System.out.println("WARNING: Hazelcast error: WorkflowStatus " + resultDeletingDirectGet.getWorkflowStatus() + " and " + resultDeleting.getWorkflowStatus() + " together!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link CompanyServiceListener#processNewCompanyRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* Тест проверяет удаление сущности {@link Company} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
|
||||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void newCompany() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
final Long ID = 102L;
|
|
||||||
final String DESTINATION_COMPANY_NEW = Consts.DESTINATION_COMPANY_NEW;
|
|
||||||
companyImdg.size();
|
|
||||||
|
|
||||||
CompanyNewRequest companyNewRequest = new CompanyNewRequest();
|
|
||||||
// companyNewRequest.setId(ID);
|
|
||||||
companyNewRequest.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
|
||||||
companyNewRequest.setCompanySymbolValue("CLR-symbol ipo");
|
|
||||||
companyNewRequest.setShortName("ClrIPO");
|
|
||||||
companyNewRequest.setFullName("Clearing IPO");
|
|
||||||
companyNewRequest.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForNew(companyNewRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) companyServiceListener.getConsumer(), DESTINATION_COMPANY_NEW, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
Company resultNew = companyImdg.getFirstObjectByFieldValues(Map.of("ShortName", "ClrIPO"));
|
|
||||||
Assertions.assertNotNull(resultNew);
|
|
||||||
Assertions.assertEquals("ClrIPO", resultNew.getShortName());
|
|
||||||
Assertions.assertEquals(WorkflowStatus.Active.getKey(), resultNew.getWorkflowStatus());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void newExistCompanySymbolCompanyRequest() {
|
|
||||||
final Long ID = 102L;
|
|
||||||
final String DESTINATION_COMPANY_NEW = Consts.DESTINATION_COMPANY_NEW;
|
|
||||||
companyImdg.size();
|
|
||||||
|
|
||||||
CompanySymbols existCompanySymbols = new CompanySymbols();
|
|
||||||
existCompanySymbols.setCompanyId(ID);
|
|
||||||
existCompanySymbols.setCompanySymbol(CompanySymbol.CIO.getKey());
|
|
||||||
existCompanySymbols.setCompanySymbolValue("test_value");
|
|
||||||
companySymbolsImdg.insert(existCompanySymbols);
|
|
||||||
|
|
||||||
CompanyNewRequest companyNewRequest = new CompanyNewRequest();
|
|
||||||
// companyNewRequest.setId(ID);
|
|
||||||
companyNewRequest.setCompanySymbol(CompanySymbol.CIO.getKey());
|
|
||||||
companyNewRequest.setCompanySymbolValue("test_value");
|
|
||||||
companyNewRequest.setShortName("ClrIPO");
|
|
||||||
companyNewRequest.setFullName("Clearing IPO");
|
|
||||||
companyNewRequest.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForNew(companyNewRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) companyServiceListener.getConsumer(), DESTINATION_COMPANY_NEW, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingWhenTryAddRecordAndCheckError(ID,
|
|
||||||
mockProducer,
|
|
||||||
String.valueOf(CompanyErrors.CompanyWithCompanySymbolAlreadyExist.getId()),
|
|
||||||
Arrays.asList("CIO", "test_value"));
|
|
||||||
|
|
||||||
Company resultNew = companyImdg.getFirstObjectByFieldValues(Map.of("ShortName", "ClrIPO"));
|
|
||||||
Assertions.assertNull(resultNew);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,158 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.CompanySymbolServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.CompanySymbolServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
|
||||||
import ru.spcex.clearing.test.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
CompanySymbolServiceListener.class,
|
|
||||||
CompanySymbolServiceFacade.class,
|
|
||||||
CompanySymbolServiceValidator.class,
|
|
||||||
|
|
||||||
CompanyInfoServiceFacade.class,
|
|
||||||
ProfileDocumentServiceFacade.class,
|
|
||||||
ContactServiceFacade.class,
|
|
||||||
ClearingMemberCategoryServiceFacade.class,
|
|
||||||
|
|
||||||
CompanySymbolValidationConfig.class,
|
|
||||||
ValidationConfig.class,
|
|
||||||
BeanConfiguration.class,
|
|
||||||
|
|
||||||
CompanyServiceFacade.class,
|
|
||||||
CompanyValidationConfig.class,
|
|
||||||
AccountNotificationHelper.class,
|
|
||||||
RelationServiceFacade.class, RelationValidationConfig.class,
|
|
||||||
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class})
|
|
||||||
class CompanySymbolServiceListenerTest {
|
|
||||||
public static final MatcherFactory.Matcher<CompanySymbols> COMPANY_SYMBOL_MATCHER = usingIgnoringFieldsComparator();
|
|
||||||
private static final int PARTITION = 0;
|
|
||||||
private static final String TOPIC_COMPANY_SYMBOL_UPDATE = Consts.DESTINATION_COMPANY_SYMBOL_UPDATE;
|
|
||||||
private static final Long ID = 0L;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
CompanySymbolServiceListener companySymbolServiceListener;
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("mockProducer")
|
|
||||||
protected Producer<String, Object> mockProducer;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
|
|
||||||
|
|
||||||
Imdg<CompanySymbolDictionary> companySymbolDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
|
||||||
{
|
|
||||||
CompanySymbolDictionary cSymbol = new CompanySymbolDictionary();
|
|
||||||
cSymbol.setId(11L);
|
|
||||||
cSymbol.setCode(CompanySymbol.CLRC.getKey());
|
|
||||||
cSymbol.setName(CompanySymbol.CLRC.getKey());
|
|
||||||
cSymbol.setShortname(" CLRC key");
|
|
||||||
companySymbolDictionaryImdg.insert(cSymbol);
|
|
||||||
CompanySymbolDictionary cioSymbol = new CompanySymbolDictionary();
|
|
||||||
cioSymbol.setId(12L);
|
|
||||||
cioSymbol.setCode(CompanySymbol.CIO.getKey());
|
|
||||||
cioSymbol.setName(CompanySymbol.CIO.getKey());
|
|
||||||
companySymbolDictionaryImdg.insert(cioSymbol);
|
|
||||||
}
|
|
||||||
Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
{
|
|
||||||
Company company = new Company();
|
|
||||||
company.setId(ID);
|
|
||||||
company.setShortName("TST");
|
|
||||||
company.setWorkflowStatus("ACTV");
|
|
||||||
companyImdg.insert(company);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link CompanySymbolServiceListener#processUpdateCompanySymbolRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* Тест проверяет обновление сущности {@link CompanySymbols} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link CompanySymbolUpdateRequest}:<br>
|
|
||||||
* {@link CompanySymbolUpdateRequest#id} - Идентификатор записи<br>
|
|
||||||
* {@link CompanySymbolUpdateRequest#getCompanyId()} - Идентификатор записи<br>
|
|
||||||
* {@link CompanySymbolUpdateRequest#getCompanySymbol()} - 1234<br>
|
|
||||||
* {@link CompanySymbolUpdateRequest#getCompanySymbolValue()} - new companySymbolValue<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void processUpdateCompanySymbolRequest() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
String companySymbolValue = "newCompanySymbolValue";
|
|
||||||
CompanySymbols existsCompanySymbols = new CompanySymbols();
|
|
||||||
existsCompanySymbols.setId(ID);
|
|
||||||
existsCompanySymbols.setCompanyId(ID);
|
|
||||||
existsCompanySymbols.setCompanySymbol("CIO");
|
|
||||||
existsCompanySymbols.setCompanySymbolValue("CIO exists companySymbolValue");
|
|
||||||
companySymbolsImdg.insert(existsCompanySymbols);
|
|
||||||
|
|
||||||
CompanySymbolUpdateRequest companySymbolUpdateRequest = new CompanySymbolUpdateRequest();
|
|
||||||
companySymbolUpdateRequest.setId(ID);
|
|
||||||
companySymbolUpdateRequest.setCompanyId(ID);
|
|
||||||
companySymbolUpdateRequest.setCompanySymbol("CIO");
|
|
||||||
companySymbolUpdateRequest.setCompanySymbolValue(companySymbolValue);
|
|
||||||
|
|
||||||
CompanySymbols predictableCompanySymbols = new CompanySymbols();
|
|
||||||
predictableCompanySymbols.setId(ID);
|
|
||||||
predictableCompanySymbols.setCompanyId(ID);
|
|
||||||
predictableCompanySymbols.setCompanySymbol("CIO");
|
|
||||||
predictableCompanySymbols.setCompanySymbolValue(companySymbolValue);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(companySymbolUpdateRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) companySymbolServiceListener.getConsumer(), TOPIC_COMPANY_SYMBOL_UPDATE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
CompanySymbols resultUpdating = companySymbolsImdg.getFirstObjectBySQL(String.format("companySymbolValue = %s", companySymbolValue));
|
|
||||||
COMPANY_SYMBOL_MATCHER.assertMatch(resultUpdating, predictableCompanySymbols);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,155 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.profile.Contact;
|
|
||||||
import ru.clearing.platform.dictionary.ContactTypeDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ContactValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.ContactServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.ContactServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactUpdateRequest;
|
|
||||||
import ru.spcex.clearing.test.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.ContactTypes;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
BeanConfiguration.class,
|
|
||||||
ValidationConfig.class,
|
|
||||||
ContactValidationConfig.class,
|
|
||||||
ContactServiceListener.class,
|
|
||||||
ContactServiceFacade.class,
|
|
||||||
ContactServiceValidator.class,
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class})
|
|
||||||
class ContactServiceListenerTest {
|
|
||||||
public static final MatcherFactory.Matcher<Contact> CONTACT_MATCHER = usingIgnoringFieldsComparator();
|
|
||||||
private static final int PARTITION = 0;
|
|
||||||
private static final String TOPIC_CONTACT_UPDATE = Consts.DESTINATION_CONTACT_UPDATE;
|
|
||||||
private static final String TOPIC_CONTACT_NEW = Consts.DESTINATION_CONTACT_NEW;
|
|
||||||
private static final Long ID = 0L;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
ContactServiceListener contactServiceListener;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
private Imdg<Contact> contactImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("mockProducer")
|
|
||||||
protected Producer<String, Object> mockProducer;
|
|
||||||
|
|
||||||
private Company TEST_COMPANY;
|
|
||||||
private Long COMPANY_ID;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
contactImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
|
||||||
|
|
||||||
Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
TEST_COMPANY = new Company();
|
|
||||||
TEST_COMPANY.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
COMPANY_ID = companyImdg.insert(TEST_COMPANY);
|
|
||||||
|
|
||||||
ContactTypeDictionary contactTypeDictionary = new ContactTypeDictionary();
|
|
||||||
contactTypeDictionary.setCode(ContactTypes.adrs.getKey());
|
|
||||||
contactTypeDictionary.setName("name");
|
|
||||||
Imdg<ContactTypeDictionary> contactTypeDictionaryImdg = hazelcastServiceTest.getImdg(
|
|
||||||
IMDGDistributedNames.Map_ContactTypeDictionary, ContactTypeDictionary.class
|
|
||||||
);
|
|
||||||
contactTypeDictionaryImdg.insert(contactTypeDictionary);
|
|
||||||
}
|
|
||||||
@Test
|
|
||||||
void contactNew() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
ContactNewRequest contactNewRequest = new ContactNewRequest();
|
|
||||||
contactNewRequest.setCompanyId(COMPANY_ID);
|
|
||||||
contactNewRequest.setContactType(ContactTypes.adrs.getKey());
|
|
||||||
contactNewRequest.setContactValue("value");
|
|
||||||
|
|
||||||
Contact predictableContact = new Contact();
|
|
||||||
predictableContact.setCompanyId(COMPANY_ID);
|
|
||||||
predictableContact.setContactType(ContactTypes.adrs.getKey());
|
|
||||||
predictableContact.setContactValue("value");
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForNew(contactNewRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) contactServiceListener.getConsumer(), TOPIC_CONTACT_NEW, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
Contact resultNew = contactImdg.getAllValues().iterator().next();
|
|
||||||
predictableContact.setId(resultNew.getId());
|
|
||||||
CONTACT_MATCHER.assertMatch(resultNew, predictableContact);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link ContactServiceListener#processUpdateContactRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* Тест проверяет обновление сущности {@link Contact} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link ContactUpdateRequest}:<br>
|
|
||||||
* {@link ContactUpdateRequest#id} - Идентификатор записи<br>
|
|
||||||
* {@link ContactUpdateRequest#getContactType()} - ADDR<br>
|
|
||||||
* {@link ContactUpdateRequest#getContactValue()} - new ContactValue<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void contactUpdate() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
Long existContactID;
|
|
||||||
Contact existsContact = new Contact();
|
|
||||||
existsContact.setCompanyId(COMPANY_ID);
|
|
||||||
existsContact.setContactType(ContactTypes.adrs.getKey());
|
|
||||||
existsContact.setContactValue("exists ContactValue");
|
|
||||||
existContactID = contactImdg.insert(existsContact);
|
|
||||||
|
|
||||||
ContactUpdateRequest contactUpdateRequest = new ContactUpdateRequest();
|
|
||||||
contactUpdateRequest.setId(existContactID);
|
|
||||||
contactUpdateRequest.setContactType(ContactTypes.adrs.getKey());
|
|
||||||
contactUpdateRequest.setContactValue("new ContactValue");
|
|
||||||
|
|
||||||
Contact predictableContact = new Contact();
|
|
||||||
predictableContact.setId(existContactID);
|
|
||||||
predictableContact.setCompanyId(COMPANY_ID);
|
|
||||||
predictableContact.setContactType(ContactTypes.adrs.getKey());
|
|
||||||
predictableContact.setContactValue("new ContactValue");
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(contactUpdateRequest, existContactID);
|
|
||||||
addRecordToKafka((MockConsumer) contactServiceListener.getConsumer(), TOPIC_CONTACT_UPDATE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(existContactID, mockProducer);
|
|
||||||
|
|
||||||
Contact resultUpdating = contactImdg.getSingleObjectByID(existContactID);
|
|
||||||
CONTACT_MATCHER.assertMatch(resultUpdating, predictableContact);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,238 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
|
||||||
import ru.clearing.classes.statics.data.profile.Contact;
|
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
|
||||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ClearingMemberCategoryValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ContactValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ProfileDocumentValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.CompanyServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.CompanyServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyGatewayRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyInfoUpdateRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.CompanySymbol;
|
|
||||||
import ru.spcex.platform.enumeration.ContactTypes;
|
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
CompanyServiceListener.class,
|
|
||||||
CompanyServiceFacade.class,
|
|
||||||
CompanyServiceValidator.class,
|
|
||||||
CompanyValidationConfig.class,
|
|
||||||
ValidationConfig.class,
|
|
||||||
CompanySymbolServiceFacade.class,
|
|
||||||
AccountNotificationHelper.class,
|
|
||||||
RelationServiceFacade.class,
|
|
||||||
RelationValidationConfig.class,
|
|
||||||
|
|
||||||
CompanySymbolServiceFacade.class,
|
|
||||||
CompanySymbolValidationConfig.class,
|
|
||||||
CompanyInfoServiceFacade.class,
|
|
||||||
ProfileDocumentServiceFacade.class,
|
|
||||||
ProfileDocumentValidationConfig.class,
|
|
||||||
ContactServiceFacade.class,
|
|
||||||
ContactValidationConfig.class,
|
|
||||||
ClearingMemberCategoryServiceFacade.class,
|
|
||||||
ClearingMemberCategoryValidationConfig.class,
|
|
||||||
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class,
|
|
||||||
BeanConfiguration.class})
|
|
||||||
public class MultiCompanyServiceListenerTest {
|
|
||||||
final Long COMPANY_ID = 123L;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
protected CompanyServiceFacade companyServiceFacade;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
Imdg<Company> companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
Imdg<CompanySymbols> companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
|
|
||||||
Company company = new Company();
|
|
||||||
company.setId(COMPANY_ID);
|
|
||||||
company.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
company.setFullName("Test company prime");
|
|
||||||
companyImdg.insert(company);
|
|
||||||
|
|
||||||
|
|
||||||
Imdg<CompanySymbolDictionary> companySymbolDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbolDictionary, CompanySymbolDictionary.class);
|
|
||||||
{
|
|
||||||
CompanySymbolDictionary cSymbol = new CompanySymbolDictionary();
|
|
||||||
cSymbol.setId(11L);
|
|
||||||
cSymbol.setCode(CompanySymbol.CLRC.getKey());
|
|
||||||
cSymbol.setName(CompanySymbol.CLRC.getKey());
|
|
||||||
cSymbol.setShortname(" CLRC key");
|
|
||||||
companySymbolDictionaryImdg.insert(cSymbol);
|
|
||||||
CompanySymbolDictionary cioSymbol = new CompanySymbolDictionary();
|
|
||||||
cioSymbol.setId(22L);
|
|
||||||
cioSymbol.setCode(CompanySymbol.CIO.getKey());
|
|
||||||
cioSymbol.setName(CompanySymbol.CIO.getKey());
|
|
||||||
companySymbolDictionaryImdg.insert(cioSymbol);
|
|
||||||
}
|
|
||||||
|
|
||||||
Imdg<Contact> contactImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
|
||||||
Contact contact = new Contact();
|
|
||||||
contact.setId(100L);
|
|
||||||
contact.setCompanyId(company.getId());
|
|
||||||
contact.setContactType(ContactTypes.adrs.getKey());
|
|
||||||
contact.setContactValue("UAR, st.Uarus, anystreet st., house 1");
|
|
||||||
contactImdg.insert(contact);
|
|
||||||
|
|
||||||
CompanySymbols companySymbol = new CompanySymbols();
|
|
||||||
companySymbol.setId(222L);
|
|
||||||
companySymbol.setCompanyId(company.getId());
|
|
||||||
companySymbol.setCompanySymbol(CompanySymbol.INN.getKey());
|
|
||||||
companySymbol.setCompanySymbolValue("INN-VALUE");
|
|
||||||
companySymbolsImdg.insert(companySymbol);
|
|
||||||
|
|
||||||
Imdg<ProfileDocument> profileDocumentImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
|
||||||
ProfileDocument doc = new ProfileDocument();
|
|
||||||
doc.setId(10002L);
|
|
||||||
doc.setCompanyId(COMPANY_ID);
|
|
||||||
doc.setDocumentType(DocumentTypes.form.getKey());
|
|
||||||
doc.setIssueDate(LocalDate.now()); // тест может показать ложное срабатывание в 00:00:00.001
|
|
||||||
profileDocumentImdg.insert(doc);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void findCompanyDocument() {
|
|
||||||
ProfileDocumentNewRequest req = new ProfileDocumentNewRequest();
|
|
||||||
req.setCompanyId(COMPANY_ID);
|
|
||||||
req.setDocumentType(DocumentTypes.form.getKey());
|
|
||||||
req.setIssueDate(LocalDate.now());
|
|
||||||
ProfileDocument doc = companyServiceFacade.findCompanyDocument(req);
|
|
||||||
assertNotNull(doc);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void findCompanySymbols() {
|
|
||||||
CompanySymbolNewRequest req = new CompanySymbolNewRequest();
|
|
||||||
req.setCompanyId(COMPANY_ID);
|
|
||||||
req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
|
||||||
req.setCompanySymbolValue("CL-VALUE-2");
|
|
||||||
assertNull(companyServiceFacade.findCompanySymbols(req));
|
|
||||||
|
|
||||||
req.setCompanySymbol(CompanySymbol.INN.getKey());
|
|
||||||
req.setCompanySymbolValue("INN-VALUE");
|
|
||||||
CompanySymbols symbol = companyServiceFacade.findCompanySymbols(req);
|
|
||||||
assertNotNull(symbol);
|
|
||||||
assertEquals("INN-VALUE", symbol.getCompanySymbolValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void findContact() {
|
|
||||||
ContactNewRequest req = new ContactNewRequest();
|
|
||||||
req.setCompanyId(COMPANY_ID);
|
|
||||||
req.setContactType(ContactTypes.adrs.getKey());
|
|
||||||
req.setContactValue("UAR, st.Uarus, anystreet st., house 2");
|
|
||||||
Contact contact = companyServiceFacade.findContact(req);
|
|
||||||
assertNotNull(contact);
|
|
||||||
assertNotEquals(req.getContactValue(), contact.getContactValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void getCompanyIdForCompanySymbols() {
|
|
||||||
CompanyNewRequest req = new CompanyNewRequest();
|
|
||||||
req.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
|
||||||
req.setCompanySymbolValue("CL-VALUE");
|
|
||||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
|
||||||
|
|
||||||
req.setCompanySymbolValue("INN-VALUE");
|
|
||||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
|
||||||
req.setCompanySymbol(CompanySymbol.INN.getKey());
|
|
||||||
assertEquals(COMPANY_ID, companyServiceFacade.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null));
|
|
||||||
req.setCompanySymbol(null);
|
|
||||||
req.setCompanySymbolValue(null);
|
|
||||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols(null, req, null));
|
|
||||||
List<CompanySymbolNewRequest> csReq=new ArrayList<>();
|
|
||||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols(null, req, null));
|
|
||||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols(null, req, csReq));
|
|
||||||
{
|
|
||||||
CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
|
||||||
cs.setCompanySymbol(CompanySymbol.CLRC.getKey());
|
|
||||||
cs.setCompanySymbolValue("INN-VALUE");
|
|
||||||
csReq.add(cs);
|
|
||||||
}
|
|
||||||
assertNull(companyServiceFacade.getCompanyIdForCompanySymbols(null, req, csReq));
|
|
||||||
{
|
|
||||||
CompanySymbolNewRequest cs=new CompanySymbolNewRequest();
|
|
||||||
cs.setCompanySymbol(CompanySymbol.INN.getKey());
|
|
||||||
cs.setCompanySymbolValue("INN-VALUE");
|
|
||||||
csReq.add(cs);
|
|
||||||
}
|
|
||||||
assertEquals(COMPANY_ID, companyServiceFacade.getCompanyIdForCompanySymbols(null, req, csReq));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void fillCompanyId() {
|
|
||||||
{
|
|
||||||
CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
|
||||||
testReq.setCompany(new CompanyNewRequest());
|
|
||||||
testReq.setProfileDocuments(null);
|
|
||||||
testReq.setCompanySymbols(null);
|
|
||||||
testReq.setContacts(null);
|
|
||||||
testReq.setClientCodes(null);
|
|
||||||
companyServiceFacade.fillCompanyId(testReq, COMPANY_ID);
|
|
||||||
assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
|
||||||
assertNotNull(testReq.getProfileDocuments());
|
|
||||||
assertNotNull(testReq.getCompanySymbols());
|
|
||||||
assertNotNull(testReq.getContacts());
|
|
||||||
assertNotNull(testReq.getClientCodes());
|
|
||||||
}
|
|
||||||
{
|
|
||||||
CompanyGatewayRequest testReq = new CompanyGatewayRequest();
|
|
||||||
testReq.setCompany(new CompanyNewRequest());
|
|
||||||
testReq.setCompanyInfo(new CompanyInfoUpdateRequest());
|
|
||||||
companyServiceFacade.fillCompanyId(testReq, COMPANY_ID);
|
|
||||||
assertEquals(COMPANY_ID, testReq.getCompany().getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,280 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
|
||||||
import ru.clearing.platform.dictionary.DocumentTypeDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ProfileDocumentValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ClearingMemberCategoryServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyInfoServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanyServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.CompanySymbolServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ContactServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.ProfileDocumentServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.ProfileDocumentServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.ProfileDocumentServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.ProfileDocumentUpdateRequest;
|
|
||||||
import ru.spcex.clearing.test.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.DocumentTypes;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
BeanConfiguration.class,
|
|
||||||
ValidationConfig.class,
|
|
||||||
ProfileDocumentServiceListener.class,
|
|
||||||
ProfileDocumentServiceFacade.class,
|
|
||||||
ProfileDocumentServiceValidator.class,
|
|
||||||
AccountNotificationHelper.class,
|
|
||||||
ProfileDocumentValidationConfig.class,
|
|
||||||
|
|
||||||
CompanyInfoServiceFacade.class,
|
|
||||||
ContactServiceFacade.class,
|
|
||||||
ClearingMemberCategoryServiceFacade.class,
|
|
||||||
|
|
||||||
CompanyServiceFacade.class, CompanyValidationConfig.class,
|
|
||||||
CompanySymbolServiceFacade.class, CompanySymbolValidationConfig.class,
|
|
||||||
AccountNotificationHelper.class,
|
|
||||||
RelationServiceFacade.class, RelationValidationConfig.class,
|
|
||||||
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class})
|
|
||||||
class ProfileDocumentServiceListenerTest {
|
|
||||||
public static final MatcherFactory.Matcher<ProfileDocument> PROFILE_DOCUMENT_MATCHER = usingIgnoringFieldsComparator();
|
|
||||||
private static final int PARTITION = 0;
|
|
||||||
private static final String TOPIC_DESTINATION_PROFILE_DOCUMENT_NEW = Consts.DESTINATION_PROFILE_DOCUMENT_NEW;
|
|
||||||
private static final String TOPIC_DESTINATION_PROFILE_DOCUMENT_UPDATE = Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE;
|
|
||||||
private static final String TOPIC_DESTINATION_PROFILE_DOCUMENT_DELETE = Consts.DESTINATION_PROFILE_DOCUMENT_DELETE;
|
|
||||||
|
|
||||||
private static final Long ID = currentID.getAndIncrement();
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
ProfileDocumentServiceListener profileDocumentServiceListener;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
|
|
||||||
private Imdg<ProfileDocument> profileDocumentMap;
|
|
||||||
private Imdg<Company> companyMap;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("mockProducer")
|
|
||||||
protected Producer<String, Object> mockProducer;
|
|
||||||
|
|
||||||
private long COMPANY_ID;
|
|
||||||
private Company TEST_COMPANY;
|
|
||||||
|
|
||||||
private DocumentTypes TEST_DOCUMENT_TYPE = DocumentTypes.cio;
|
|
||||||
private String TEST_DOCUMENT_TYPE_ID = TEST_DOCUMENT_TYPE.getKey();
|
|
||||||
|
|
||||||
private DocumentTypes NEW_TEST_DOCUMENT_TYPE = DocumentTypes.edoc;
|
|
||||||
private String NEW_TEST_DOCUMENT_TYPE_ID = NEW_TEST_DOCUMENT_TYPE.getKey();
|
|
||||||
|
|
||||||
private final long PROFILE_DOCUMENT_ID = ID;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
this.profileDocumentMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
|
||||||
this.companyMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
|
|
||||||
TEST_COMPANY = new Company();
|
|
||||||
TEST_COMPANY.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
COMPANY_ID = companyMap.insert(TEST_COMPANY);
|
|
||||||
|
|
||||||
Imdg<DocumentTypeDictionary> documentTypeDictionaryImdg = hazelcastServiceTest.getImdg(
|
|
||||||
IMDGDistributedNames.Map_DocumentTypeDictionary,
|
|
||||||
DocumentTypeDictionary.class
|
|
||||||
);
|
|
||||||
|
|
||||||
DocumentTypeDictionary documentTypeDictionary = new DocumentTypeDictionary();
|
|
||||||
documentTypeDictionary.setCode(TEST_DOCUMENT_TYPE.getKey());
|
|
||||||
documentTypeDictionary.setName("test_name");
|
|
||||||
documentTypeDictionaryImdg.insert(documentTypeDictionary);
|
|
||||||
|
|
||||||
DocumentTypeDictionary documentTypeDictionary1 = new DocumentTypeDictionary();
|
|
||||||
documentTypeDictionary1.setCode(NEW_TEST_DOCUMENT_TYPE.getKey());
|
|
||||||
documentTypeDictionary1.setName("new_test_name");
|
|
||||||
documentTypeDictionaryImdg.insert(documentTypeDictionary1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link ProfileDocumentServiceListener#processNewProfileDocumentRequest(BaseRequest)} <br>
|
|
||||||
* Тест проверяет обновление сущности {@link ProfileDocument} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link ProfileDocumentNewRequest}:<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void newProfileDocument() {
|
|
||||||
//ARRANGE
|
|
||||||
ProfileDocumentNewRequest profileDocumentNewRequest = new ProfileDocumentNewRequest();
|
|
||||||
profileDocumentNewRequest.setCompanyId(COMPANY_ID);
|
|
||||||
profileDocumentNewRequest.setDocumentType(TEST_DOCUMENT_TYPE_ID);
|
|
||||||
profileDocumentNewRequest.setIssueDate(LocalDate.now());
|
|
||||||
profileDocumentNewRequest.setIssuePlace("place");
|
|
||||||
profileDocumentNewRequest.setIssuer("issuer");
|
|
||||||
profileDocumentNewRequest.setIssuerCode("issuerCode");
|
|
||||||
profileDocumentNewRequest.setName("name");
|
|
||||||
profileDocumentNewRequest.setNumber("number");
|
|
||||||
profileDocumentNewRequest.setPlace("place");
|
|
||||||
profileDocumentNewRequest.setValidFromDate(LocalDate.now());
|
|
||||||
profileDocumentNewRequest.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
|
||||||
profileDocumentNewRequest.setLink("link");
|
|
||||||
|
|
||||||
ProfileDocument predictableProfileDocument = new ProfileDocument();
|
|
||||||
predictableProfileDocument.setId(PROFILE_DOCUMENT_ID);
|
|
||||||
predictableProfileDocument.setCompanyId(profileDocumentNewRequest.getCompanyId());
|
|
||||||
predictableProfileDocument.setDocumentType(profileDocumentNewRequest.getDocumentType());
|
|
||||||
predictableProfileDocument.setIssueDate(profileDocumentNewRequest.getIssueDate());
|
|
||||||
predictableProfileDocument.setIssuePlace(profileDocumentNewRequest.getIssuePlace());
|
|
||||||
predictableProfileDocument.setIssuer(profileDocumentNewRequest.getIssuer());
|
|
||||||
predictableProfileDocument.setIssuerCode(profileDocumentNewRequest.getIssuerCode());
|
|
||||||
predictableProfileDocument.setName(profileDocumentNewRequest.getName());
|
|
||||||
predictableProfileDocument.setNumber(profileDocumentNewRequest.getNumber());
|
|
||||||
predictableProfileDocument.setPlace(profileDocumentNewRequest.getPlace());
|
|
||||||
predictableProfileDocument.setValidFromDate(profileDocumentNewRequest.getValidFromDate());
|
|
||||||
predictableProfileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate());
|
|
||||||
predictableProfileDocument.setLink(profileDocumentNewRequest.getLink());
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForNew(profileDocumentNewRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) profileDocumentServiceListener.getConsumer(), TOPIC_DESTINATION_PROFILE_DOCUMENT_NEW, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
ProfileDocument resultNew = profileDocumentMap.getFirstObjectBySQL(String.format("companyId = %d", COMPANY_ID));
|
|
||||||
predictableProfileDocument.setId(resultNew.getId());
|
|
||||||
PROFILE_DOCUMENT_MATCHER.assertMatch(resultNew, predictableProfileDocument);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void updateProfileDocument() {
|
|
||||||
//ARRANGE
|
|
||||||
ProfileDocument existsProfileDocument = new ProfileDocument();
|
|
||||||
existsProfileDocument.setId(ID);
|
|
||||||
existsProfileDocument.setCompanyId(COMPANY_ID);
|
|
||||||
existsProfileDocument.setDocumentType(TEST_DOCUMENT_TYPE_ID);
|
|
||||||
existsProfileDocument.setIssueDate(LocalDate.now());
|
|
||||||
existsProfileDocument.setIssuePlace("place");
|
|
||||||
existsProfileDocument.setIssuer("issuer");
|
|
||||||
existsProfileDocument.setIssuerCode("issuerCode");
|
|
||||||
existsProfileDocument.setName("name");
|
|
||||||
existsProfileDocument.setNumber("number");
|
|
||||||
existsProfileDocument.setPlace("place");
|
|
||||||
existsProfileDocument.setValidFromDate(LocalDate.now());
|
|
||||||
existsProfileDocument.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
|
||||||
existsProfileDocument.setLink("link");
|
|
||||||
profileDocumentMap.insert(existsProfileDocument);
|
|
||||||
|
|
||||||
ProfileDocument predictableProfileDocument = new ProfileDocument();
|
|
||||||
predictableProfileDocument.setId(PROFILE_DOCUMENT_ID);
|
|
||||||
predictableProfileDocument.setCompanyId(COMPANY_ID);
|
|
||||||
predictableProfileDocument.setDocumentType(NEW_TEST_DOCUMENT_TYPE_ID);
|
|
||||||
predictableProfileDocument.setIssueDate(LocalDate.now());
|
|
||||||
predictableProfileDocument.setIssuePlace("new_place");
|
|
||||||
predictableProfileDocument.setIssuer("new_issuer");
|
|
||||||
predictableProfileDocument.setIssuerCode("new_issuerCode");
|
|
||||||
predictableProfileDocument.setName("new_name");
|
|
||||||
predictableProfileDocument.setNumber("new_number");
|
|
||||||
predictableProfileDocument.setPlace("new_place");
|
|
||||||
predictableProfileDocument.setValidFromDate(LocalDate.now());
|
|
||||||
predictableProfileDocument.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
|
||||||
predictableProfileDocument.setLink("new_link");
|
|
||||||
|
|
||||||
ProfileDocumentUpdateRequest profileDocumentUpdateRequest = new ProfileDocumentUpdateRequest();
|
|
||||||
profileDocumentUpdateRequest.setId(PROFILE_DOCUMENT_ID);
|
|
||||||
profileDocumentUpdateRequest.setCompanyId(COMPANY_ID);
|
|
||||||
profileDocumentUpdateRequest.setDocumentType(NEW_TEST_DOCUMENT_TYPE_ID);
|
|
||||||
profileDocumentUpdateRequest.setIssueDate(LocalDate.now());
|
|
||||||
profileDocumentUpdateRequest.setIssuePlace("new_place");
|
|
||||||
profileDocumentUpdateRequest.setIssuer("new_issuer");
|
|
||||||
profileDocumentUpdateRequest.setIssuerCode("new_issuerCode");
|
|
||||||
profileDocumentUpdateRequest.setName("new_name");
|
|
||||||
profileDocumentUpdateRequest.setNumber("new_number");
|
|
||||||
profileDocumentUpdateRequest.setPlace("new_place");
|
|
||||||
profileDocumentUpdateRequest.setValidFromDate(LocalDate.now());
|
|
||||||
profileDocumentUpdateRequest.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
|
||||||
profileDocumentUpdateRequest.setLink("new_link");
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(profileDocumentUpdateRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) profileDocumentServiceListener.getConsumer(), TOPIC_DESTINATION_PROFILE_DOCUMENT_UPDATE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
ProfileDocument resultUpdate = profileDocumentMap.getFirstObjectBySQL(String.format("companyId = %d", COMPANY_ID));
|
|
||||||
// predictableProfileDocument.setId(resultUpdate.getId());
|
|
||||||
PROFILE_DOCUMENT_MATCHER.assertMatch(resultUpdate, predictableProfileDocument);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void deleteProfileDocument() {
|
|
||||||
//ARRANGE
|
|
||||||
ProfileDocument existsProfileDocument = new ProfileDocument();
|
|
||||||
existsProfileDocument.setId(PROFILE_DOCUMENT_ID);
|
|
||||||
existsProfileDocument.setCompanyId(COMPANY_ID);
|
|
||||||
existsProfileDocument.setDocumentType(TEST_DOCUMENT_TYPE_ID);
|
|
||||||
existsProfileDocument.setIssueDate(LocalDate.now());
|
|
||||||
existsProfileDocument.setIssuePlace("place");
|
|
||||||
existsProfileDocument.setIssuer("issuer");
|
|
||||||
existsProfileDocument.setIssuerCode("issuerCode");
|
|
||||||
existsProfileDocument.setName("name");
|
|
||||||
existsProfileDocument.setNumber("number");
|
|
||||||
existsProfileDocument.setPlace("place");
|
|
||||||
existsProfileDocument.setValidFromDate(LocalDate.now());
|
|
||||||
existsProfileDocument.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS));
|
|
||||||
existsProfileDocument.setLink("link");
|
|
||||||
profileDocumentMap.insert(existsProfileDocument);
|
|
||||||
|
|
||||||
CommonDeleteRequest profileDocumentDeleteRequest = new CommonDeleteRequest();
|
|
||||||
profileDocumentDeleteRequest.setId(PROFILE_DOCUMENT_ID);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(profileDocumentDeleteRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) profileDocumentServiceListener.getConsumer(), TOPIC_DESTINATION_PROFILE_DOCUMENT_DELETE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
ProfileDocument resultUpdate = profileDocumentMap.getSingleObjectByID(PROFILE_DOCUMENT_ID);
|
|
||||||
Assertions.assertNull(resultUpdate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,229 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.clearAllInImdg;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
|
||||||
import ru.clearing.platform.dictionary.ClearingCategoryDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.ServiceStatusDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.RelationValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.service.AccountNotificationHelper;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.RelationServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.RelationServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.RelationServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateRequest;
|
|
||||||
import ru.spcex.clearing.test.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
BeanConfiguration.class,
|
|
||||||
ValidationConfig.class,
|
|
||||||
RelationServiceListener.class,
|
|
||||||
RelationServiceFacade.class,
|
|
||||||
RelationServiceValidator.class,
|
|
||||||
AccountNotificationHelper.class,
|
|
||||||
RelationValidationConfig.class,
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class})
|
|
||||||
class RelationServiceListenerTest {
|
|
||||||
|
|
||||||
public static final MatcherFactory.Matcher<Relation> RELATION_MATCHER = usingIgnoringFieldsComparator("created", "updated");
|
|
||||||
private static final int PARTITION = 0;
|
|
||||||
|
|
||||||
private static final Long ID = currentID.getAndIncrement();
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
RelationServiceListener relationServiceListener;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
|
|
||||||
private Imdg<Relation> relationMap;
|
|
||||||
private Imdg<Company> companyMap;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("mockProducer")
|
|
||||||
protected Producer<String, Object> mockProducer;
|
|
||||||
|
|
||||||
private long COMPANY_ID;
|
|
||||||
|
|
||||||
private final long RELATION_ID = ID;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
this.relationMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
|
||||||
this.companyMap = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
|
|
||||||
Company testCompany = new Company();
|
|
||||||
testCompany.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
COMPANY_ID = companyMap.insert(testCompany);
|
|
||||||
|
|
||||||
Imdg<WorkflowStatusDictionary> workflowStatusDictionaryImdg = hazelcastServiceTest.getImdg(
|
|
||||||
IMDGDistributedNames.Map_WorkflowStatusDictionary,
|
|
||||||
WorkflowStatusDictionary.class
|
|
||||||
);
|
|
||||||
WorkflowStatusDictionary workflowStatusDictionary = new WorkflowStatusDictionary();
|
|
||||||
workflowStatusDictionary.setId(1L);
|
|
||||||
workflowStatusDictionary.setCode(WorkflowStatus.Active.getKey());
|
|
||||||
workflowStatusDictionary.setName("active");
|
|
||||||
workflowStatusDictionaryImdg.insert(workflowStatusDictionary);
|
|
||||||
workflowStatusDictionary = new WorkflowStatusDictionary();
|
|
||||||
workflowStatusDictionary.setId(2L);
|
|
||||||
workflowStatusDictionary.setCode(WorkflowStatus.Blocked.getKey());
|
|
||||||
workflowStatusDictionary.setName("not active");
|
|
||||||
workflowStatusDictionaryImdg.insert(workflowStatusDictionary);
|
|
||||||
|
|
||||||
{
|
|
||||||
Imdg<ServiceStatusDictionary> serviceStatusDictionaryImdg = hazelcastServiceTest.getImdg(
|
|
||||||
IMDGDistributedNames.Map_ServiceStatusDictionary,
|
|
||||||
ServiceStatusDictionary.class
|
|
||||||
);
|
|
||||||
ServiceStatusDictionary status=new ServiceStatusDictionary();
|
|
||||||
status.setId(1L);
|
|
||||||
status.setCode("ACTV");
|
|
||||||
status.setName("\"ACTV\"");
|
|
||||||
serviceStatusDictionaryImdg.insert(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
Imdg<ClearingCategoryDictionary> clearingCategoryDictionaryImdg = hazelcastServiceTest.getImdg(
|
|
||||||
IMDGDistributedNames.Map_ClearingCategoryDictionary,
|
|
||||||
ClearingCategoryDictionary.class
|
|
||||||
);
|
|
||||||
ClearingCategoryDictionary clearingCategoryDictionary = new ClearingCategoryDictionary();
|
|
||||||
clearingCategoryDictionary.setId(1L);
|
|
||||||
clearingCategoryDictionary.setCode(ClearingCategory.I.getKey());
|
|
||||||
clearingCategoryDictionary.setName("I");
|
|
||||||
clearingCategoryDictionaryImdg.insert(clearingCategoryDictionary);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void newRelation() {
|
|
||||||
//ARRANGE
|
|
||||||
clearAllInImdg(relationMap);
|
|
||||||
RelationNewRequest relationNewRequest = new RelationNewRequest();
|
|
||||||
relationNewRequest.setCompanyId(COMPANY_ID);
|
|
||||||
relationNewRequest.setServiceStatus("ACTV");
|
|
||||||
relationNewRequest.setClearingMemberCategory("I");
|
|
||||||
relationNewRequest.setComment(null);
|
|
||||||
|
|
||||||
Relation predictableRelation = new Relation();
|
|
||||||
predictableRelation.setId(RELATION_ID);
|
|
||||||
predictableRelation.setConsumerId(relationNewRequest.companyId);
|
|
||||||
predictableRelation.setService("MKR");
|
|
||||||
predictableRelation.setServiceProduct("ZERO");
|
|
||||||
predictableRelation.setSupplierId(1L);
|
|
||||||
predictableRelation.setServiceStatus("ACTV");
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForNew(relationNewRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) relationServiceListener.getConsumer(), Consts.DESTINATION_RELATION_NEW, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
Relation resultNew = relationMap.getFirstObjectBySQL("serviceStatus=ACTV"); // String.format("supplierId = %d", COMPANY_ID));
|
|
||||||
predictableRelation.setId(resultNew.getId());
|
|
||||||
RELATION_MATCHER.assertMatch(resultNew, predictableRelation);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void updateRelation() {
|
|
||||||
//ARRANGE
|
|
||||||
Relation existsRelation = new Relation();
|
|
||||||
existsRelation.setId(ID);
|
|
||||||
existsRelation.setConsumerId(COMPANY_ID);
|
|
||||||
existsRelation.setSupplierId(1L);
|
|
||||||
existsRelation.setComment("Test ONE");
|
|
||||||
existsRelation.setServiceStatus("ACTV");
|
|
||||||
existsRelation.setServiceProduct("PROD");
|
|
||||||
existsRelation.setService("MKR");
|
|
||||||
relationMap.insert(existsRelation);
|
|
||||||
|
|
||||||
Relation predictableRelation = new Relation();
|
|
||||||
predictableRelation.setId(ID);
|
|
||||||
predictableRelation.setConsumerId(COMPANY_ID);
|
|
||||||
predictableRelation.setSupplierId(1L);
|
|
||||||
predictableRelation.setComment("Another Me - ONE");
|
|
||||||
predictableRelation.setServiceStatus("ACTV");
|
|
||||||
predictableRelation.setServiceProduct("PROD");
|
|
||||||
predictableRelation.setService("MKR");
|
|
||||||
|
|
||||||
RelationUpdateRequest relationUpdateRequest = new RelationUpdateRequest();
|
|
||||||
relationUpdateRequest.setId(RELATION_ID);
|
|
||||||
relationUpdateRequest.setComment("Another Me - ONE");
|
|
||||||
relationUpdateRequest.setServiceStatus("ACTV");
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(relationUpdateRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) relationServiceListener.getConsumer(), Consts.DESTINATION_RELATION_UPDATE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
Relation resultUpdate = relationMap.getFirstObjectBySQL(String.format("id = %d", RELATION_ID));
|
|
||||||
// predictableProfileDocument.setId(resultUpdate.getId());
|
|
||||||
RELATION_MATCHER.assertMatch(resultUpdate, predictableRelation);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void deleteProfileDocument() {
|
|
||||||
//ARRANGE
|
|
||||||
Relation existsRelation = new Relation();
|
|
||||||
existsRelation.setId(ID);
|
|
||||||
existsRelation.setConsumerId(COMPANY_ID);
|
|
||||||
existsRelation.setSupplierId(1L);
|
|
||||||
existsRelation.setComment("Test ONE");
|
|
||||||
existsRelation.setServiceStatus("ACTV");
|
|
||||||
existsRelation.setServiceProduct("PROD");
|
|
||||||
existsRelation.setService("MKR");
|
|
||||||
relationMap.insert(existsRelation);
|
|
||||||
|
|
||||||
CommonDeleteRequest profileDocumentDeleteRequest = new CommonDeleteRequest();
|
|
||||||
profileDocumentDeleteRequest.setId(RELATION_ID);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(profileDocumentDeleteRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) relationServiceListener.getConsumer(), Consts.DESTINATION_RELATION_DELETE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
Relation resultUpdate = relationMap.getSingleObjectByID(RELATION_ID);
|
|
||||||
// Assertions.assertNull(resultUpdate);
|
|
||||||
assertEquals(WorkflowStatus.Blocked.getKey(), resultUpdate.getServiceStatus());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,237 +0,0 @@
|
||||||
package ru.spcex.clearing.company.service.v2;
|
|
||||||
|
|
||||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.addRecordToKafka;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForDelete;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForNew;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.getJsonStringForUpdate;
|
|
||||||
import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord;
|
|
||||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.Map;
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
|
||||||
import org.apache.kafka.clients.producer.Producer;
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
|
||||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
|
||||||
import ru.clearing.classes.statics.data.company.SettlementHouseProperties;
|
|
||||||
import ru.clearing.classes.statics.data.profile.CompanyInfo;
|
|
||||||
import ru.clearing.platform.dictionary.AbstractDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.AllowedDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.CompanyRoleDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.CompanySymbolDictionary;
|
|
||||||
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
|
||||||
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.SettlementHousePropertiesValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
|
||||||
import ru.spcex.clearing.company.service.v2.facade.SettlementHousePropertiesServiceFacade;
|
|
||||||
import ru.spcex.clearing.company.service.v2.listeners.SettlementHousePropertiesServiceListener;
|
|
||||||
import ru.spcex.clearing.company.service.v2.validators.SettlementHousePropertiesServiceValidator;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyNewRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.SettlementHousePropertyUpdateRequest;
|
|
||||||
import ru.spcex.clearing.test.MatcherFactory;
|
|
||||||
import ru.spcex.clearing.test.config.ImdgTestConfig;
|
|
||||||
import ru.spcex.clearing.test.config.KafkaTestConfig;
|
|
||||||
import ru.spcex.platform.enumeration.CompanyRole;
|
|
||||||
import ru.spcex.platform.enumeration.CurrencyCode;
|
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
|
|
||||||
@ExtendWith(SpringExtension.class)
|
|
||||||
@ContextConfiguration(classes = {
|
|
||||||
SettlementHousePropertiesServiceListener.class,
|
|
||||||
SettlementHousePropertiesServiceFacade.class,
|
|
||||||
SettlementHousePropertiesServiceValidator.class,
|
|
||||||
SettlementHousePropertiesValidationConfig.class,
|
|
||||||
CompanySymbolValidationConfig.class,
|
|
||||||
|
|
||||||
ValidationConfig.class,
|
|
||||||
BeanConfiguration.class,
|
|
||||||
|
|
||||||
KafkaTestConfig.class,
|
|
||||||
ImdgTestConfig.class})
|
|
||||||
class SettlementHousePropertiesServiceListenerTest {
|
|
||||||
public static final MatcherFactory.Matcher<SettlementHouseProperties> SETTLEMENT_HOUSE_PROPERTIES_MATCHER = usingIgnoringFieldsComparator();
|
|
||||||
private static final int PARTITION = 0;
|
|
||||||
private static final Long ID = 10L;
|
|
||||||
private static final Long COMPANY_ID = 105L;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
SettlementHousePropertiesServiceListener settlementHousePropertiesServiceListener;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("hazelcastServiceTest")
|
|
||||||
private ImdgProvider hazelcastServiceTest;
|
|
||||||
|
|
||||||
private Imdg<Company> companyImdg;
|
|
||||||
private Imdg<CompanyRoleSet> companyRoleSetImdg;
|
|
||||||
private Imdg<SettlementHouseProperties> settlementHousePropertiesImdg;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("mockProducer")
|
|
||||||
protected Producer<String, Object> mockProducer;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
private void init() {
|
|
||||||
waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
|
||||||
companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
|
||||||
companyRoleSetImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
|
||||||
settlementHousePropertiesImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class);
|
|
||||||
|
|
||||||
// Словари для теста, применяются в ValidationConfig
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_AllowedDictionary, new AllowedDictionary(), "ALWD");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CompanyRoleDictionary, new CompanyRoleDictionary(), "RPRT");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CompanyRoleDictionary, new CompanyRoleDictionary(), "SETH");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CurrencyCodeDictionary, new AllowedDictionary(), "RUB");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CurrencyCodeDictionary, new AllowedDictionary(), "AED");
|
|
||||||
putToDictionary(IMDGDistributedNames.Map_CurrencyCodeDictionary, new AllowedDictionary(), "INR");
|
|
||||||
|
|
||||||
Company comp = new Company();
|
|
||||||
comp.setId(COMPANY_ID);
|
|
||||||
comp.setCreated(Instant.now());
|
|
||||||
comp.setFullName("Test LLC inc");
|
|
||||||
comp.setShortName("Test LLC");
|
|
||||||
comp.setProfile(new CompanyInfo());
|
|
||||||
comp.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
companyImdg.insert(comp);
|
|
||||||
CompanyRoleSet crs = new CompanyRoleSet();
|
|
||||||
crs.setId(COMPANY_ID);
|
|
||||||
crs.setCompanyId(COMPANY_ID);
|
|
||||||
crs.setCompanyRole(CompanyRole.SETH.getKey());
|
|
||||||
crs.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
|
||||||
companyRoleSetImdg.insert(crs);
|
|
||||||
}
|
|
||||||
|
|
||||||
private <D extends AbstractDictionary /*SpcexObjectBase & Dictionary*/> void putToDictionary(String mapName, D object, String code) {
|
|
||||||
Imdg<D> dMap = (Imdg<D>) hazelcastServiceTest.getImdg(mapName, object.getClass());
|
|
||||||
object.setId(1000L + code.hashCode() % 1000);
|
|
||||||
object.setCode(code);
|
|
||||||
object.setName("name of " + code);
|
|
||||||
// assert dMap.getSingleObjectByID(object.getId()) == null;
|
|
||||||
dMap.insert(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link SettlementHousePropertiesServiceListener#processNewSettlementHousePropertyRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* * Тест проверяет создание сущности {@link SettlementHouseProperties} в IMDG при передаче из Apache Kafka.<br>
|
|
||||||
* * Входной запрос {@link SettlementHousePropertyNewRequest}:<br>
|
|
||||||
* * {@link SettlementHousePropertyNewRequest#getCompanyId()} - COMPANY_ID<br>
|
|
||||||
* * {@link SettlementHousePropertyNewRequest#getCurrencyCode()} - AED<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void settlementHousePropertiesNew1() {
|
|
||||||
//ARRANGE
|
|
||||||
final String DESTINATION_NEW = Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW;
|
|
||||||
companyImdg.size();
|
|
||||||
|
|
||||||
SettlementHousePropertyNewRequest newRequest = new SettlementHousePropertyNewRequest();
|
|
||||||
newRequest.setCompanyId(COMPANY_ID);
|
|
||||||
newRequest.setCurrencyCode("AED"); // RUB разрешён только для COMPANY_ID=2.
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForNew(newRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) settlementHousePropertiesServiceListener.getConsumer(), DESTINATION_NEW, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
SettlementHouseProperties resultNew = settlementHousePropertiesImdg.getFirstObjectByFieldValues(Map.of("companyId", COMPANY_ID));
|
|
||||||
Assertions.assertNotNull(resultNew);
|
|
||||||
Assertions.assertEquals("AED", resultNew.getCurrencyCode());
|
|
||||||
Assertions.assertEquals(COMPANY_ID, resultNew.getCompanyId());
|
|
||||||
|
|
||||||
// CLEAN UP
|
|
||||||
settlementHousePropertiesImdg.delete(resultNew);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link SettlementHousePropertiesServiceListener#processUpdateSettlementHousePropertyRequest(BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* * Тест проверяет обновление сущности {@link SettlementHouseProperties} в IMDG при передаче из Apache Kafka.<br>
|
|
||||||
* * Входной запрос {@link SettlementHousePropertyUpdateRequest}:<br>
|
|
||||||
* * {@link SettlementHousePropertyUpdateRequest#getId()} - ID<br>
|
|
||||||
* * {@link SettlementHousePropertyUpdateRequest#getCompanyId()} - COMPANY_ID<br>
|
|
||||||
* * {@link SettlementHousePropertyUpdateRequest#getCurrencyCode()} - AED<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void companyRoleSetUpdate() {
|
|
||||||
final String DESTINATION_UPDATE = Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE;
|
|
||||||
//ARRANGE
|
|
||||||
SettlementHouseProperties existsSettlementHouseProperties = new SettlementHouseProperties();
|
|
||||||
existsSettlementHouseProperties.setId(ID);
|
|
||||||
existsSettlementHouseProperties.setCompanyId(COMPANY_ID);
|
|
||||||
existsSettlementHouseProperties.setCurrencyCode("INR"); // Индийская рупия
|
|
||||||
settlementHousePropertiesImdg.insert(existsSettlementHouseProperties);
|
|
||||||
|
|
||||||
SettlementHousePropertyUpdateRequest settlementHousePropertyUpdateRequest = new SettlementHousePropertyUpdateRequest();
|
|
||||||
settlementHousePropertyUpdateRequest.setId(ID);
|
|
||||||
settlementHousePropertyUpdateRequest.setCompanyId(COMPANY_ID);
|
|
||||||
settlementHousePropertyUpdateRequest.setCurrencyCode("AED");
|
|
||||||
|
|
||||||
SettlementHouseProperties predictableSHP = new SettlementHouseProperties();
|
|
||||||
predictableSHP.setId(ID);
|
|
||||||
predictableSHP.setCompanyId(COMPANY_ID);
|
|
||||||
predictableSHP.setCurrencyCode("AED");
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForUpdate(settlementHousePropertyUpdateRequest, ID);
|
|
||||||
|
|
||||||
addRecordToKafka((MockConsumer) settlementHousePropertiesServiceListener.getConsumer(), DESTINATION_UPDATE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
SettlementHouseProperties resultUpdating = settlementHousePropertiesImdg.getSingleObjectByID(ID);
|
|
||||||
SETTLEMENT_HOUSE_PROPERTIES_MATCHER.assertMatch(resultUpdating, predictableSHP);
|
|
||||||
|
|
||||||
// CLEAN UP
|
|
||||||
settlementHousePropertiesImdg.delete(resultUpdating);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link SettlementHousePropertiesServiceListener#processDeleteSettlementHousePropertyRequest(BaseRequest)} (BaseRequest)} (BaseRequest)}<br>
|
|
||||||
* Тест проверяет удаление сущности {@link SettlementHouseProperties} в Hazelcast при передаче из Apache Kafka.<br>
|
|
||||||
* Входной запрос {@link CommonDeleteRequest}:<br>
|
|
||||||
* {@link CommonDeleteRequest#id} - Идентификатор записи<br>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
void deleteSHP() throws InterruptedException {
|
|
||||||
//ARRANGE
|
|
||||||
final Long ID = 101L;
|
|
||||||
SettlementHouseProperties existsSettlementHouseProperties = new SettlementHouseProperties();
|
|
||||||
existsSettlementHouseProperties.setId(ID);
|
|
||||||
existsSettlementHouseProperties.setCompanyId(COMPANY_ID);
|
|
||||||
existsSettlementHouseProperties.setCurrencyCode(CurrencyCode.RUR.getKey());
|
|
||||||
settlementHousePropertiesImdg.insert(existsSettlementHouseProperties);
|
|
||||||
|
|
||||||
CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest();
|
|
||||||
commonDeleteRequest.setId(ID);
|
|
||||||
|
|
||||||
//ACT
|
|
||||||
String jsonString = getJsonStringForDelete(commonDeleteRequest, ID);
|
|
||||||
addRecordToKafka((MockConsumer) settlementHousePropertiesServiceListener.getConsumer(), Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE, PARTITION, 0, jsonString);
|
|
||||||
|
|
||||||
//ASSERT
|
|
||||||
waitingSendAndCheckRecord(ID, mockProducer);
|
|
||||||
|
|
||||||
//Company resultDeleting = companyImdg.getSingleObjectByID(ID);
|
|
||||||
SettlementHouseProperties resultDeleting = settlementHousePropertiesImdg.getFirstObjectBySQL("id=" + ID);
|
|
||||||
Assertions.assertNull(resultDeleting);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -23,27 +23,4 @@ public class ClearingMemberCategoryUpdateRequest {
|
||||||
public void setClearingMemberCategory(String clearingMemberCategory) {
|
public void setClearingMemberCategory(String clearingMemberCategory) {
|
||||||
this.clearingMemberCategory = clearingMemberCategory;
|
this.clearingMemberCategory = clearingMemberCategory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Builder builder() {
|
|
||||||
return new ClearingMemberCategoryUpdateRequest().new Builder();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Builder {
|
|
||||||
private Builder() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder id(Long id) {
|
|
||||||
ClearingMemberCategoryUpdateRequest.this.id = id;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder clearingMemberCategory(String clearingMemberCategory) {
|
|
||||||
ClearingMemberCategoryUpdateRequest.this.clearingMemberCategory = clearingMemberCategory;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClearingMemberCategoryUpdateRequest build() {
|
|
||||||
return ClearingMemberCategoryUpdateRequest.this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,37 +47,4 @@ public class CompanySymbolUpdateRequest {
|
||||||
public void setCompanySymbolValue(String companySymbolValue) {
|
public void setCompanySymbolValue(String companySymbolValue) {
|
||||||
this.companySymbolValue = companySymbolValue;
|
this.companySymbolValue = companySymbolValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Builder builder() {
|
|
||||||
return new CompanySymbolUpdateRequest().new Builder();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Builder {
|
|
||||||
private Builder() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder id(Long id) {
|
|
||||||
CompanySymbolUpdateRequest.this.id = id;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder companyId(Long companyId) {
|
|
||||||
CompanySymbolUpdateRequest.this.companyId = companyId;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder companySymbol(String companySymbol) {
|
|
||||||
CompanySymbolUpdateRequest.this.companySymbol = companySymbol;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder companySymbolValue(String companySymbolValue) {
|
|
||||||
CompanySymbolUpdateRequest.this.companySymbolValue = companySymbolValue;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompanySymbolUpdateRequest build() {
|
|
||||||
return CompanySymbolUpdateRequest.this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,32 +33,4 @@ public class ContactUpdateRequest {
|
||||||
public void setContactValue(String contactValue) {
|
public void setContactValue(String contactValue) {
|
||||||
this.contactValue = contactValue;
|
this.contactValue = contactValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Builder builder() {
|
|
||||||
return new ContactUpdateRequest().new Builder();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Builder {
|
|
||||||
private Builder() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder id(Long id) {
|
|
||||||
ContactUpdateRequest.this.id = id;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder contactType(String contactType) {
|
|
||||||
ContactUpdateRequest.this.contactType = contactType;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder contactValue(String contactValue) {
|
|
||||||
ContactUpdateRequest.this.contactValue = contactValue;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ContactUpdateRequest build() {
|
|
||||||
return ContactUpdateRequest.this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -145,82 +145,4 @@ public class ProfileDocumentUpdateRequest {
|
||||||
public void setId(Long id) {
|
public void setId(Long id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Builder builder() {
|
|
||||||
return new ProfileDocumentUpdateRequest().new Builder();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Builder {
|
|
||||||
private Builder() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder id(Long id) {
|
|
||||||
ProfileDocumentUpdateRequest.this.id = id;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder companyId(Long companyId) {
|
|
||||||
ProfileDocumentUpdateRequest.this.companyId = companyId;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder documentType(String documentType) {
|
|
||||||
ProfileDocumentUpdateRequest.this.documentType = documentType;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder issueDate(LocalDate issueDate) {
|
|
||||||
ProfileDocumentUpdateRequest.this.issueDate = issueDate;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder issuePlace(String issuePlace) {
|
|
||||||
ProfileDocumentUpdateRequest.this.issuePlace = issuePlace;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder issuer(String issuer) {
|
|
||||||
ProfileDocumentUpdateRequest.this.issuer = issuer;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder issuerCode(String issuerCode) {
|
|
||||||
ProfileDocumentUpdateRequest.this.issuerCode = issuerCode;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder name(String name) {
|
|
||||||
ProfileDocumentUpdateRequest.this.name = name;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder number(String number) {
|
|
||||||
ProfileDocumentUpdateRequest.this.number = number;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder place(String place) {
|
|
||||||
ProfileDocumentUpdateRequest.this.place = place;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder validFromDate(LocalDate validFromDate) {
|
|
||||||
ProfileDocumentUpdateRequest.this.validFromDate = validFromDate;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder validToDate(LocalDate validToDate) {
|
|
||||||
ProfileDocumentUpdateRequest.this.validToDate = validToDate;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder link(String link) {
|
|
||||||
ProfileDocumentUpdateRequest.this.link = link;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProfileDocumentUpdateRequest build() {
|
|
||||||
return ProfileDocumentUpdateRequest.this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package ru.spcex.clearing.platform.messaging.logic.functional;
|
package ru.spcex.clearing.platform.messaging.logic.functional;
|
||||||
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.logic.response.PayloadInfo;
|
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
@ -20,5 +19,5 @@ public interface BuilderConsumerStep<T1> {
|
||||||
/**
|
/**
|
||||||
* с обновлением RequestInfo в мапе
|
* с обновлением RequestInfo в мапе
|
||||||
*/
|
*/
|
||||||
BuilderDestinationStep setFunction(Function<BaseRequest<T1>, PayloadInfo> function);
|
BuilderDestinationStep setFunction(Function<BaseRequest<T1>, Object> function);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
package ru.spcex.clearing.platform.messaging.logic.functional;
|
package ru.spcex.clearing.platform.messaging.logic.functional;
|
||||||
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.logic.response.DefaultResponses;
|
|
||||||
import ru.spcex.clearing.platform.messaging.logic.response.PayloadInfo;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
@ -22,7 +19,7 @@ public class ConsumerSpecificClass<T> implements BuilderConsumerStep<T>, Builder
|
||||||
* действие-обработчик реквеста (метод из конкретного менеджера)
|
* действие-обработчик реквеста (метод из конкретного менеджера)
|
||||||
*/
|
*/
|
||||||
private java.util.function.Consumer<BaseRequest<T>> consumer;
|
private java.util.function.Consumer<BaseRequest<T>> consumer;
|
||||||
private java.util.function.Function<BaseRequest<T>, PayloadInfo> function;
|
private java.util.function.Function<BaseRequest<T>, Object> function;
|
||||||
|
|
||||||
private ConsumerSpecificClass(Class<T> clazz) {
|
private ConsumerSpecificClass(Class<T> clazz) {
|
||||||
this.clazz = clazz;
|
this.clazz = clazz;
|
||||||
|
|
@ -43,7 +40,7 @@ public class ConsumerSpecificClass<T> implements BuilderConsumerStep<T>, Builder
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BuilderDestinationStep setFunction(Function<BaseRequest<T>, PayloadInfo> function) {
|
public BuilderDestinationStep setFunction(Function<BaseRequest<T>, Object> function) {
|
||||||
this.function = function;
|
this.function = function;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
@ -53,22 +50,18 @@ public class ConsumerSpecificClass<T> implements BuilderConsumerStep<T>, Builder
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public PayloadInfo acceptRaw(Object obj) {
|
public Object acceptRaw(Object obj) {
|
||||||
if (this.consumer != null) {
|
if (this.consumer != null) {
|
||||||
this.consumer.accept((BaseRequest<T>) obj);
|
this.consumer.accept((BaseRequest<T>) obj);
|
||||||
return DefaultResponses.build(((BaseRequest<?>) obj).getId(), DefaultResponses.SUCCESS);
|
return null;
|
||||||
} else {
|
} else {
|
||||||
PayloadInfo res = this.function.apply((BaseRequest<T>) obj);
|
return this.function.apply((BaseRequest<T>) obj);
|
||||||
return res == null ?
|
|
||||||
DefaultResponses.build(((BaseRequest<?>) obj).getId(), DefaultResponses.SUCCESS) :
|
|
||||||
res;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Consumer<BaseRequest<T>> getConsumer() {
|
public Consumer<BaseRequest<T>> getConsumer() {
|
||||||
return consumer;
|
return consumer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Class<T> getClazz() {
|
public Class<T> getClazz() {
|
||||||
return clazz;
|
return clazz;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
package ru.spcex.clearing.platform.messaging.logic.response;
|
|
||||||
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
|
||||||
|
|
||||||
public enum DefaultResponses {
|
|
||||||
SUCCESS,
|
|
||||||
ERROR,
|
|
||||||
;
|
|
||||||
public static PayloadInfo build(Long id, String message, DefaultResponses defaultResponse) {
|
|
||||||
PayloadInfo info = build(id, defaultResponse);
|
|
||||||
info.setMessage(message);
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
public static PayloadInfo build(Long id, DefaultResponses defaultResponse) {
|
|
||||||
PayloadInfo info = new RequestInfoUpdate();
|
|
||||||
info.setId(id);
|
|
||||||
switch (defaultResponse) {
|
|
||||||
case SUCCESS: {
|
|
||||||
info.setStatus(Status.Success);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ERROR: {
|
|
||||||
info.setStatus(Status.Error);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
package ru.spcex.clearing.platform.messaging.logic.response;
|
|
||||||
|
|
||||||
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
|
||||||
|
|
||||||
public interface PayloadInfo {
|
|
||||||
Long getId();
|
|
||||||
Status getStatus();
|
|
||||||
String getMessage();
|
|
||||||
|
|
||||||
PayloadInfo setId(Long id);
|
|
||||||
PayloadInfo setStatus(Status status);
|
|
||||||
RequestInfoUpdate setMessage(String message);
|
|
||||||
}
|
|
||||||
|
|
@ -18,8 +18,6 @@ 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.logic.functional.BuilderConsumerStep;
|
import ru.spcex.clearing.platform.messaging.logic.functional.BuilderConsumerStep;
|
||||||
import ru.spcex.clearing.platform.messaging.logic.functional.ConsumerSpecificClass;
|
import ru.spcex.clearing.platform.messaging.logic.functional.ConsumerSpecificClass;
|
||||||
import ru.spcex.clearing.platform.messaging.logic.response.DefaultResponses;
|
|
||||||
import ru.spcex.clearing.platform.messaging.logic.response.PayloadInfo;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.CorrelationHeader;
|
import ru.spcex.clearing.platform.messaging.service.sender.CorrelationHeader;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
|
@ -110,7 +108,7 @@ public class QueueConsumer implements AutoCloseable {
|
||||||
((BaseRequest<?>) o).setCorrelationId(correlationId.value());
|
((BaseRequest<?>) o).setCorrelationId(correlationId.value());
|
||||||
}
|
}
|
||||||
if (needsProcessing(next.topic(), (BaseRequest<?>) o)) {
|
if (needsProcessing(next.topic(), (BaseRequest<?>) o)) {
|
||||||
PayloadInfo topicResponse = callback.acceptRaw(o);
|
Object topicResponse = callback.acceptRaw(o);
|
||||||
if (producer != null) {
|
if (producer != null) {
|
||||||
sendResponse((BaseRequest<?>) o, topicResponse, correlationId);
|
sendResponse((BaseRequest<?>) o, topicResponse, correlationId);
|
||||||
}
|
}
|
||||||
|
|
@ -124,8 +122,7 @@ public class QueueConsumer implements AutoCloseable {
|
||||||
log.debug("main thread stacktrace: {}", ExceptionUtils.getStackTrace(debugCallerStacktrace));
|
log.debug("main thread stacktrace: {}", ExceptionUtils.getStackTrace(debugCallerStacktrace));
|
||||||
}
|
}
|
||||||
if (producer != null && o != null) {
|
if (producer != null && o != null) {
|
||||||
BaseRequest<?> br = (BaseRequest<?>) o;
|
sendErrorResponse((BaseRequest<?>) o, correlationId);
|
||||||
sendResponse(br, DefaultResponses.build(br.getId(), DefaultResponses.ERROR), correlationId);
|
|
||||||
}
|
}
|
||||||
if (lastErrors++ > 20) {
|
if (lastErrors++ > 20) {
|
||||||
log.warn("Too many error at row, {}. Sleep.", lastErrors);
|
log.warn("Too many error at row, {}. Sleep.", lastErrors);
|
||||||
|
|
@ -149,16 +146,50 @@ public class QueueConsumer implements AutoCloseable {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendResponse(BaseRequest<?> o, PayloadInfo response, Header correlationId) {
|
//мб перенести в другой класс
|
||||||
|
private void sendErrorResponse(BaseRequest<?> o, Header correlationId) {
|
||||||
outputExecutor.submit(() -> {
|
outputExecutor.submit(() -> {
|
||||||
try {
|
try {
|
||||||
Future<RecordMetadata> send;
|
Future<RecordMetadata> send;
|
||||||
|
//default response
|
||||||
BaseRequest<PayloadInfo> req = new BaseRequest<>();
|
BaseRequest<RequestInfoUpdate> req = new BaseRequest<>();
|
||||||
|
RequestInfoUpdate success = new RequestInfoUpdate();
|
||||||
|
success.setId(o.getId());
|
||||||
|
success.setStatus(Status.Error);
|
||||||
|
req.setRequestPayload(success);
|
||||||
req.setId(o.getId());
|
req.setId(o.getId());
|
||||||
req.setActionType(ActionType.SYSTEM);
|
req.setActionType(ActionType.SYSTEM);
|
||||||
req.setRequestPayload(response);
|
ProducerRecord<String, Object> respRec = new ProducerRecord<>(Consts.REQUEST_INFO_UPDATE, req);
|
||||||
|
if (correlationId != null) {
|
||||||
|
respRec.headers().add(KafkaHeaders.CORRELATION_ID, correlationId.value());
|
||||||
|
}
|
||||||
|
send = producer.send(respRec);
|
||||||
|
send.get();
|
||||||
|
} catch (Exception e) {
|
||||||
|
if (e instanceof InterruptedException) {
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
}
|
||||||
|
log.error(ExceptionUtils.getStackTrace(e));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void sendResponse(BaseRequest<?> o, Object response, Header correlationId) {
|
||||||
|
outputExecutor.submit(() -> {
|
||||||
|
try {
|
||||||
|
Future<RecordMetadata> send;
|
||||||
|
BaseRequest<Object> req = new BaseRequest<>();
|
||||||
|
req.setId(o.getId());
|
||||||
|
req.setActionType(ActionType.SYSTEM);
|
||||||
|
if (response != null) {
|
||||||
|
req.setRequestPayload(response);
|
||||||
|
} else {
|
||||||
|
//default response
|
||||||
|
RequestInfoUpdate success = new RequestInfoUpdate();
|
||||||
|
success.setId(o.getId());
|
||||||
|
success.setStatus(Status.Success);
|
||||||
|
req.setRequestPayload(success);
|
||||||
|
}
|
||||||
ProducerRecord<String, Object> respRec = new ProducerRecord<>(Consts.REQUEST_INFO_UPDATE, req);
|
ProducerRecord<String, Object> respRec = new ProducerRecord<>(Consts.REQUEST_INFO_UPDATE, req);
|
||||||
if (correlationId != null) {
|
if (correlationId != null) {
|
||||||
respRec.headers().add(new CorrelationHeader(correlationId.value().clone()));
|
respRec.headers().add(new CorrelationHeader(correlationId.value().clone()));
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
package ru.spcex.clearing.platform.messaging.service;
|
package ru.spcex.clearing.platform.messaging.service;
|
||||||
|
|
||||||
import ru.spcex.clearing.platform.messaging.logic.response.PayloadInfo;
|
public class RequestInfoUpdate {
|
||||||
import ru.spcex.platform.classes.base.interfaces.WithId;
|
|
||||||
|
|
||||||
public class RequestInfoUpdate implements PayloadInfo {
|
|
||||||
private Long id;
|
private Long id;
|
||||||
private Status status;
|
private Status status;
|
||||||
private String message;
|
private String message;
|
||||||
|
|
@ -16,12 +13,10 @@ public class RequestInfoUpdate implements PayloadInfo {
|
||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Long getId() {
|
public Long getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public RequestInfoUpdate setId(Long id) {
|
public RequestInfoUpdate setId(Long id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
return this;
|
return this;
|
||||||
|
|
@ -31,7 +26,6 @@ public class RequestInfoUpdate implements PayloadInfo {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public RequestInfoUpdate setStatus(Status status) {
|
public RequestInfoUpdate setStatus(Status status) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
return this;
|
return this;
|
||||||
|
|
@ -41,7 +35,6 @@ public class RequestInfoUpdate implements PayloadInfo {
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public RequestInfoUpdate setMessage(String message) {
|
public RequestInfoUpdate setMessage(String message) {
|
||||||
this.message = message;
|
this.message = message;
|
||||||
return this;
|
return this;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue