company-service CompanyService, CompanySymbolService
This commit is contained in:
parent
b0e7595d73
commit
83a513f629
7 changed files with 299 additions and 30 deletions
|
|
@ -0,0 +1,106 @@
|
||||||
|
package ru.spcex.clearing.company.config.validation;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
|
import ru.clearing.platform.dictionary.*;
|
||||||
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
|
import ru.spcex.clearing.company.validation.CompanySymbolNotExistRule;
|
||||||
|
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.CompanyInfoUpdateRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||||
|
import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
|
||||||
|
import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
|
||||||
|
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
||||||
|
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||||
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||||
|
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class CompanySymbolValidationConfig {
|
||||||
|
|
||||||
|
@Bean("companySymbolNewRequestValidator")
|
||||||
|
public Function<CompanySymbolUpdateRequest, IValidator> companySymbolNewRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||||
|
return companySymbolUpdateRequest -> {
|
||||||
|
ImdgValidationContext<CompanySymbolUpdateRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(companySymbolUpdateRequest);
|
||||||
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
|
// addImdg.accept(IMDGDistributedNames.Map_CompanySymbols);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
FieldRequiredRule.instance("companyId", CompanySymbolUpdateRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty),
|
||||||
|
IdPresentRule.instance("companyId",
|
||||||
|
CompanySymbolUpdateRequest::getCompanyId,
|
||||||
|
IMDGDistributedNames.Map_Company,
|
||||||
|
Company.class,
|
||||||
|
CompanyErrors.RequiredFieldEmpty,
|
||||||
|
CompanyErrors.CompanyNotFound),
|
||||||
|
// FieldRequiredRule.instance("companySymbol", CompanySymbolUpdateRequest::getCompanySymbol, CompanyErrors.RequiredFieldEmpty),
|
||||||
|
// FieldRequiredRule.instance("companySymbolValue", CompanySymbolUpdateRequest::getCompanySymbolValue, CompanyErrors.RequiredFieldEmpty),
|
||||||
|
DictionaryPresentRule.instance("companySymbol",
|
||||||
|
CompanySymbolUpdateRequest::getCompanySymbol,
|
||||||
|
IMDGDistributedNames.Map_CompanySymbolDictionary,
|
||||||
|
CompanySymbolDictionary.class,
|
||||||
|
CompanyErrors.RequiredFieldEmpty,
|
||||||
|
CompanyErrors.WrongFieldValue,
|
||||||
|
false)
|
||||||
|
// , new CompanySymbolNotExistRule() чтобы применить это правило, необходимо сделать дополнительный тип в его методе
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean("companySymbolUpdateRequestValidator")
|
||||||
|
public Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||||
|
return companySymbolUpdateRequest -> {
|
||||||
|
ImdgValidationContext<CompanySymbolUpdateRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(companySymbolUpdateRequest);
|
||||||
|
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_CompanySymbols);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary);
|
||||||
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
|
return new ValidatorImpl<ImdgValidationContext<CompanySymbolUpdateRequest>>(context,
|
||||||
|
IdPresentRule.instance("id",
|
||||||
|
CompanySymbolUpdateRequest::getId,
|
||||||
|
IMDGDistributedNames.Map_CompanySymbols,
|
||||||
|
CompanySymbols.class,
|
||||||
|
CompanyErrors.RequiredFieldEmpty,
|
||||||
|
CompanyErrors.CompanyInfoNotFound,
|
||||||
|
(CompanySymbols existSymbol) -> {
|
||||||
|
assert existSymbol.getId().equals(context.getValidatedObject().getId());
|
||||||
|
return existSymbol.getCompanySymbol().equals(context.getValidatedObject().getCompanySymbol())
|
||||||
|
? null : CompanyErrors.EditCompanySymbols;
|
||||||
|
}),
|
||||||
|
|
||||||
|
FieldRequiredRule.instance("companyId", CompanySymbolUpdateRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty),
|
||||||
|
IdPresentRule.instance("companyId",
|
||||||
|
CompanySymbolUpdateRequest::getCompanyId,
|
||||||
|
IMDGDistributedNames.Map_Company,
|
||||||
|
Company.class,
|
||||||
|
CompanyErrors.RequiredFieldEmpty,
|
||||||
|
CompanyErrors.CompanyNotFound),
|
||||||
|
// FieldRequiredRule.instance("companySymbol", CompanySymbolUpdateRequest::getCompanySymbol, CompanyErrors.RequiredFieldEmpty),
|
||||||
|
// FieldRequiredRule.instance("companySymbolValue", CompanySymbolUpdateRequest::getCompanySymbolValue, CompanyErrors.RequiredFieldEmpty),
|
||||||
|
DictionaryPresentRule.instance("companySymbol",
|
||||||
|
CompanySymbolUpdateRequest::getCompanySymbol,
|
||||||
|
IMDGDistributedNames.Map_CompanySymbolDictionary,
|
||||||
|
CompanySymbolDictionary.class,
|
||||||
|
CompanyErrors.RequiredFieldEmpty,
|
||||||
|
CompanyErrors.WrongFieldValue,
|
||||||
|
false)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -22,12 +22,15 @@ 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.CompanySymbol;
|
import ru.spcex.platform.enumeration.CompanySymbol;
|
||||||
|
import ru.spcex.platform.enumeration.UserRole;
|
||||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
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.ImdgTransaction;
|
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.error.ClearingBaseException;
|
||||||
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;
|
||||||
|
|
||||||
|
|
@ -42,10 +45,8 @@ 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 Imdg<CompanySymbols> companySymbolsMap;
|
|
||||||
private final ImdgId idSequence;
|
private final ImdgId idSequence;
|
||||||
protected UserRoleVerification userRoleVerification;
|
protected UserRoleVerification userRoleVerification;
|
||||||
protected IMessageResolver messageResolver;
|
|
||||||
|
|
||||||
private ValidationHelper validationHelper;
|
private ValidationHelper validationHelper;
|
||||||
private Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
|
private Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
|
||||||
|
|
@ -77,14 +78,15 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
this.requestHelper = requestHelper.setLogger(log);
|
this.requestHelper = requestHelper.setLogger(log);
|
||||||
|
|
||||||
this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = userRoleVerification;
|
||||||
|
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;
|
||||||
|
companySymbolService.setCompanyService(this);
|
||||||
this.accountNotification = accountNotification;
|
this.accountNotification = accountNotification;
|
||||||
this.relationHelper = relationHelper;
|
this.relationHelper = relationHelper;
|
||||||
}
|
}
|
||||||
|
|
@ -213,18 +215,36 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
assert company.getId().equals(companySymbol.getCompanyId());
|
assert company.getId().equals(companySymbol.getCompanyId());
|
||||||
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
|
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||||
company.setTradingCode(companySymbol.getCompanySymbolValue());
|
company.setTradingCode(companySymbol.getCompanySymbolValue());
|
||||||
} else {
|
|
||||||
company.setTradingCode(null);
|
|
||||||
}
|
}
|
||||||
if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||||
company.setClearingCode(companySymbol.getCompanySymbolValue());
|
company.setClearingCode(companySymbol.getCompanySymbolValue());
|
||||||
} else {
|
|
||||||
company.setClearingCode(null);
|
|
||||||
}
|
}
|
||||||
if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
|
||||||
company.setRegistrationCode(companySymbol.getCompanySymbolValue());
|
company.setRegistrationCode(companySymbol.getCompanySymbolValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void updateCompanyBySymbol(ImdgTransaction transaction, CompanySymbols companySymbol) 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())) {
|
||||||
|
Imdg<Company> companyMap = transaction.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
|
||||||
|
Company company = companyMap.getSingleObjectByID(companySymbol.getCompanyId());
|
||||||
|
if (company == null) {
|
||||||
|
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyNotFound, companySymbol.getCompanyId()));
|
||||||
|
}
|
||||||
|
updateCompanyBySymbol(company, companySymbol);
|
||||||
|
company.setUpdated(Instant.now());
|
||||||
|
companyMap.update(company);
|
||||||
|
log.debug("Company {} updated by change CompanySymbols {} ({})",
|
||||||
|
company.getId(), companySymbol.getId(), companySymbol.getCompanySymbol());
|
||||||
} else {
|
} else {
|
||||||
company.setRegistrationCode(null);
|
log.trace("No need update company {} by changed companySymbols {}",
|
||||||
|
companySymbol.getCompanyId(), companySymbol.getCompanySymbol());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -257,14 +277,6 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
|
|
||||||
company.setUpdated(Instant.now());
|
company.setUpdated(Instant.now());
|
||||||
|
|
||||||
CompanySymbols companySymbol = companySymbolsMap.getSingleObjectByFieldValues(Map.of("companyId", company.getId()));
|
|
||||||
if (companySymbol == null) {
|
|
||||||
log.warn("CompanySymbols not found for companyId={}", company.getId());
|
|
||||||
} else {
|
|
||||||
log.trace("Found CompanySymbols.id={} for companyId={}", companySymbol.getId(), company.getId());
|
|
||||||
updateCompanyBySymbol(company, companySymbol);
|
|
||||||
}
|
|
||||||
|
|
||||||
String prevStatus = company.getWorkflowStatus();
|
String prevStatus = company.getWorkflowStatus();
|
||||||
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
company.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,51 +7,159 @@ 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.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.CompanySymbols;
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
|
import ru.spcex.clearing.company.util.RequestHelper;
|
||||||
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.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.util.security.UserRoleVerification;
|
||||||
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
import ru.spcex.platform.enumeration.UserRole;
|
||||||
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.imdg.api.ImdgTransaction;
|
||||||
|
import ru.spcex.platform.utils.error.ClearingBaseException;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
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());
|
||||||
private final Imdg<CompanySymbols> companySymbolsMap;
|
private final ImdgProvider imdgProvider;
|
||||||
|
// private final Imdg<CompanySymbols> companySymbolsMap;
|
||||||
private final ImdgId idSequence;
|
private final ImdgId idSequence;
|
||||||
|
protected CompanyService companyService;
|
||||||
|
|
||||||
|
private final RequestHelper requestHelper;
|
||||||
|
protected ValidationHelper validationHelper;
|
||||||
|
protected UserRoleVerification userRoleVerification;
|
||||||
|
protected Function<CompanySymbolUpdateRequest, IValidator> companySymbolNewRequestValidator;
|
||||||
|
protected Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public CompanySymbolService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
public CompanySymbolService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider) {
|
ImdgProvider imdgProvider,
|
||||||
|
RequestHelper requestHelper,
|
||||||
|
ValidationHelper validationHelper,
|
||||||
|
UserRoleVerification userRoleVerification,
|
||||||
|
@Qualifier("companySymbolNewRequestValidator")
|
||||||
|
Function<CompanySymbolUpdateRequest, IValidator> companySymbolNewRequestValidator,
|
||||||
|
@Qualifier("companySymbolUpdateRequestValidator")
|
||||||
|
Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator
|
||||||
|
) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
this.imdgProvider = imdgProvider;
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||||
|
|
||||||
|
this.requestHelper = requestHelper.setLogger(log);
|
||||||
|
this.validationHelper = validationHelper;
|
||||||
|
this.userRoleVerification = userRoleVerification;
|
||||||
|
userRoleVerification.setRoleForVerification(UserRole.Admin);
|
||||||
|
this.companySymbolNewRequestValidator = companySymbolNewRequestValidator;
|
||||||
|
this.companySymbolUpdateRequestValidator = companySymbolUpdateRequestValidator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() {
|
public void afterPropertiesSet() {
|
||||||
callback(CompanySymbolUpdateRequest.class)
|
callback(CompanySymbolUpdateRequest.class)
|
||||||
.setConsumer(this::companySymbolUpdate)
|
.setFunction(this::companySymbolNew)
|
||||||
|
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_NEW, callbacks::put);
|
||||||
|
callback(CompanySymbolUpdateRequest.class)
|
||||||
|
.setFunction(this::companySymbolUpdate)
|
||||||
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put);
|
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put);
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void companySymbolUpdate(BaseRequest<CompanySymbolUpdateRequest> userRequest) {
|
public void setCompanyService(CompanyService companyService) {
|
||||||
CompanySymbolUpdateRequest req = userRequest.getRequestPayload();
|
this.companyService = companyService;
|
||||||
log.debug("CompanySymbolUpdateRequest received");
|
}
|
||||||
CompanySymbols companySymbols = companySymbolsMap.getSingleObjectByID(req.getId());
|
|
||||||
// companySymbols.setCompanySymbol(req.getCompanySymbol()); по ТЗ не должен менятся при обновлении
|
|
||||||
|
public RequestInfoUpdate companySymbolNew(BaseRequest<CompanySymbolUpdateRequest> symbolRequest) {
|
||||||
|
CompanySymbolUpdateRequest req = symbolRequest.getRequestPayload();
|
||||||
|
log.debug("CompanySymbolNewRequest received, id={}", symbolRequest.getId());
|
||||||
|
{ // validate
|
||||||
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
|
||||||
|
requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolNewRequestValidator);
|
||||||
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CompanySymbols companySymbols = new CompanySymbols();
|
||||||
|
companySymbols.setId(idSequence.nextId());
|
||||||
|
companySymbols.setCompanyId(req.getCompanyId());
|
||||||
|
companySymbols.setCompanySymbol(req.getCompanySymbol());
|
||||||
companySymbols.setCompanySymbolValue(req.getCompanySymbolValue());
|
companySymbols.setCompanySymbolValue(req.getCompanySymbolValue());
|
||||||
|
|
||||||
companySymbolsMap.update(companySymbols);
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
|
transaction.beginTransaction();
|
||||||
|
boolean txOk = false;
|
||||||
|
try {
|
||||||
|
Imdg<CompanySymbols> companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
|
companySymbolsMap.update(companySymbols);
|
||||||
|
try {
|
||||||
|
companyService.updateCompanyBySymbol(transaction, companySymbols);
|
||||||
|
} catch (ClearingBaseException e) {
|
||||||
|
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
||||||
|
}
|
||||||
|
txOk = true;
|
||||||
|
} finally {
|
||||||
|
if (txOk)
|
||||||
|
transaction.commitTransaction();
|
||||||
|
else
|
||||||
|
transaction.rollbackTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
log.debug("successfully processed, id {}", companySymbols.getId());
|
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
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> companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
|
companySymbols = companySymbolsMap.getSingleObjectByID(req.getId());
|
||||||
|
// companySymbols.setCompanySymbol(req.getCompanySymbol()); по ТЗ не должен менятся при обновлении
|
||||||
|
companySymbols.setCompanySymbolValue(req.getCompanySymbolValue());
|
||||||
|
companySymbolsMap.update(companySymbols);
|
||||||
|
try {
|
||||||
|
companyService.updateCompanyBySymbol(transaction, companySymbols);
|
||||||
|
} catch (ClearingBaseException e) {
|
||||||
|
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
|
||||||
|
}
|
||||||
|
txOk = true;
|
||||||
|
} finally {
|
||||||
|
if (txOk)
|
||||||
|
transaction.commitTransaction();
|
||||||
|
else
|
||||||
|
transaction.rollbackTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
log.debug("successfully processed, id {}", companySymbols.getId());
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -64,6 +172,7 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
|
||||||
newSymbol.setCompanySymbolValue(companySymbolValue);
|
newSymbol.setCompanySymbolValue(companySymbolValue);
|
||||||
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId);
|
log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId);
|
||||||
if (transaction == null) {
|
if (transaction == null) {
|
||||||
|
Imdg<CompanySymbols> companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
companySymbolsMap.insert(newSymbol);
|
companySymbolsMap.insert(newSymbol);
|
||||||
} else {
|
} else {
|
||||||
Imdg<CompanySymbols> tMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
Imdg<CompanySymbols> tMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import ru.clearing.platform.dictionary.*;
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||||
import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration;
|
import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration;
|
||||||
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
||||||
|
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||||
import ru.spcex.clearing.company.utils.MatcherFactory;
|
import ru.spcex.clearing.company.utils.MatcherFactory;
|
||||||
|
|
@ -40,6 +41,8 @@ import static ru.spcex.clearing.company.utils.TestUtils.*;
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
CompanyInfoService.class,
|
CompanyInfoService.class,
|
||||||
|
CompanyValidationConfig.class,
|
||||||
|
CompanySymbolValidationConfig.class,
|
||||||
|
|
||||||
CompanyService.class,
|
CompanyService.class,
|
||||||
CompanyValidationConfig.class,
|
CompanyValidationConfig.class,
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
||||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||||
import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration;
|
import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration;
|
||||||
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
||||||
|
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
||||||
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
||||||
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||||
import ru.spcex.clearing.company.error.CompanyErrors;
|
import ru.spcex.clearing.company.error.CompanyErrors;
|
||||||
|
|
@ -54,6 +55,9 @@ import static ru.spcex.clearing.company.utils.TestUtils.*;
|
||||||
AccountNotificationHelper.class,
|
AccountNotificationHelper.class,
|
||||||
RelationHelper.class,
|
RelationHelper.class,
|
||||||
|
|
||||||
|
CompanySymbolService.class,
|
||||||
|
CompanySymbolValidationConfig.class,
|
||||||
|
|
||||||
KafkaConfigTest.class,
|
KafkaConfigTest.class,
|
||||||
HazelcastServiceTestConfiguration.class,
|
HazelcastServiceTestConfiguration.class,
|
||||||
BeanConfiguration.class})
|
BeanConfiguration.class})
|
||||||
|
|
|
||||||
|
|
@ -13,14 +13,21 @@ import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||||
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.CompanySymbols;
|
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.HazelcastServiceTestConfiguration;
|
import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration;
|
||||||
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
import ru.spcex.clearing.company.config.KafkaConfigTest;
|
||||||
|
import ru.spcex.clearing.company.config.validation.CompanySymbolValidationConfig;
|
||||||
|
import ru.spcex.clearing.company.config.validation.CompanyValidationConfig;
|
||||||
|
import ru.spcex.clearing.company.config.validation.ValidationConfig;
|
||||||
import ru.spcex.clearing.company.utils.MatcherFactory;
|
import ru.spcex.clearing.company.utils.MatcherFactory;
|
||||||
import ru.spcex.clearing.company.utils.TestUtils;
|
import ru.spcex.clearing.company.utils.TestUtils;
|
||||||
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.domain.cud.company.CompanySymbolUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
|
||||||
|
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.iml.hazelcast.service.HazelcastService;
|
import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService;
|
||||||
|
|
||||||
|
|
@ -34,6 +41,16 @@ import static ru.spcex.clearing.company.utils.TestUtils.*;
|
||||||
@ExtendWith(SpringExtension.class)
|
@ExtendWith(SpringExtension.class)
|
||||||
@ContextConfiguration(classes = {
|
@ContextConfiguration(classes = {
|
||||||
CompanySymbolService.class,
|
CompanySymbolService.class,
|
||||||
|
|
||||||
|
CompanySymbolValidationConfig.class,
|
||||||
|
ValidationConfig.class,
|
||||||
|
BeanConfiguration.class,
|
||||||
|
|
||||||
|
CompanyService.class,
|
||||||
|
CompanyValidationConfig.class,
|
||||||
|
AccountNotificationHelper.class,
|
||||||
|
RelationHelper.class,
|
||||||
|
|
||||||
KafkaConfigTest.class,
|
KafkaConfigTest.class,
|
||||||
HazelcastServiceTestConfiguration.class})
|
HazelcastServiceTestConfiguration.class})
|
||||||
class CompanySymbolServiceTest {
|
class CompanySymbolServiceTest {
|
||||||
|
|
@ -60,6 +77,23 @@ class CompanySymbolServiceTest {
|
||||||
hazelcastServiceTest.waitAvailable();
|
hazelcastServiceTest.waitAvailable();
|
||||||
companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TestUtils.FutureRecordMetadata future = spy(TestUtils.FutureRecordMetadata.class);
|
TestUtils.FutureRecordMetadata future = spy(TestUtils.FutureRecordMetadata.class);
|
||||||
doReturn(future).when(mockProducer).send(producerRecord.capture());
|
doReturn(future).when(mockProducer).send(producerRecord.capture());
|
||||||
}
|
}
|
||||||
|
|
@ -80,20 +114,20 @@ class CompanySymbolServiceTest {
|
||||||
CompanySymbols existsCompanySymbols = new CompanySymbols();
|
CompanySymbols existsCompanySymbols = new CompanySymbols();
|
||||||
existsCompanySymbols.setId(ID);
|
existsCompanySymbols.setId(ID);
|
||||||
existsCompanySymbols.setCompanyId(ID);
|
existsCompanySymbols.setCompanyId(ID);
|
||||||
existsCompanySymbols.setCompanySymbol("0000");
|
existsCompanySymbols.setCompanySymbol("CIO");
|
||||||
existsCompanySymbols.setCompanySymbolValue("exists companySymbolValue");
|
existsCompanySymbols.setCompanySymbolValue("CIO exists companySymbolValue");
|
||||||
companySymbolsImdg.insert(existsCompanySymbols);
|
companySymbolsImdg.insert(existsCompanySymbols);
|
||||||
|
|
||||||
CompanySymbolUpdateRequest companySymbolUpdateRequest = new CompanySymbolUpdateRequest();
|
CompanySymbolUpdateRequest companySymbolUpdateRequest = new CompanySymbolUpdateRequest();
|
||||||
companySymbolUpdateRequest.setId(ID);
|
companySymbolUpdateRequest.setId(ID);
|
||||||
companySymbolUpdateRequest.setCompanyId(ID);
|
companySymbolUpdateRequest.setCompanyId(ID);
|
||||||
companySymbolUpdateRequest.setCompanySymbol("1234");
|
companySymbolUpdateRequest.setCompanySymbol("CIO");
|
||||||
companySymbolUpdateRequest.setCompanySymbolValue(companySymbolValue);
|
companySymbolUpdateRequest.setCompanySymbolValue(companySymbolValue);
|
||||||
|
|
||||||
CompanySymbols predictableCompanySymbols = new CompanySymbols();
|
CompanySymbols predictableCompanySymbols = new CompanySymbols();
|
||||||
predictableCompanySymbols.setId(ID);
|
predictableCompanySymbols.setId(ID);
|
||||||
predictableCompanySymbols.setCompanyId(ID);
|
predictableCompanySymbols.setCompanyId(ID);
|
||||||
predictableCompanySymbols.setCompanySymbol("0000");
|
predictableCompanySymbols.setCompanySymbol("CIO");
|
||||||
predictableCompanySymbols.setCompanySymbolValue(companySymbolValue);
|
predictableCompanySymbols.setCompanySymbolValue(companySymbolValue);
|
||||||
|
|
||||||
//ACT
|
//ACT
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ public interface Consts {
|
||||||
String DESTINATION_COMPANY_BLOCK = "company-block";
|
String DESTINATION_COMPANY_BLOCK = "company-block";
|
||||||
String DESTINATION_COMPANY_INFO_NEW = "company-info-new";
|
String DESTINATION_COMPANY_INFO_NEW = "company-info-new";
|
||||||
String DESTINATION_COMPANY_INFO_UPDATE = "company-info-update";
|
String DESTINATION_COMPANY_INFO_UPDATE = "company-info-update";
|
||||||
|
String DESTINATION_COMPANY_SYMBOL_NEW = "company-symbol-new";
|
||||||
String DESTINATION_COMPANY_SYMBOL_UPDATE = "company-symbol-update";
|
String DESTINATION_COMPANY_SYMBOL_UPDATE = "company-symbol-update";
|
||||||
String DESTINATION_COMPANY_ROLE_SET_NEW = "companyroleset-new";
|
String DESTINATION_COMPANY_ROLE_SET_NEW = "companyroleset-new";
|
||||||
String DESTINATION_COMPANY_ROLE_SET_DELETE = "companyroleset-delete";
|
String DESTINATION_COMPANY_ROLE_SET_DELETE = "companyroleset-delete";
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue