diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java new file mode 100644 index 000000000..3277c69ef --- /dev/null +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java @@ -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 companySymbolNewRequestValidator(Map> imdgForValidation) { + return companySymbolUpdateRequest -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(companySymbolUpdateRequest); + Consumer 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 companySymbolUpdateRequestValidator(Map> imdgForValidation) { + return companySymbolUpdateRequest -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(companySymbolUpdateRequest); + Consumer 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, + 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) + ); + }; + } +} diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java index 3fc6f9a6e..cc9d7c2f3 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java @@ -22,12 +22,15 @@ 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.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.enumeration.IMessageResolver; +import ru.spcex.platform.utils.error.ClearingBaseException; import ru.spcex.platform.utils.error.ValidationException; 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 RequestHelper requestHelper; private final ImdgProvider imdgProvider; - private final Imdg companySymbolsMap; private final ImdgId idSequence; protected UserRoleVerification userRoleVerification; - protected IMessageResolver messageResolver; private ValidationHelper validationHelper; private Function companyNewRequestValidator; @@ -77,14 +78,15 @@ public class CompanyService extends QueueConsumer implements InitializingBean { this.imdgProvider = imdgProvider; this.requestHelper = requestHelper.setLogger(log); - this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); this.idSequence = imdgProvider.getImdgIdGenerator(); this.userRoleVerification = userRoleVerification; + userRoleVerification.setRoleForVerification(UserRole.Admin); this.validationHelper = validationHelper; this.companyNewRequestValidator = companyNewRequestValidator; this.companyUpdateRequestValidator = companyUpdateRequestValidator; this.companyDeleteRequestValidator = companyDeleteRequestValidator; this.companySymbolService = companySymbolService; + companySymbolService.setCompanyService(this); this.accountNotification = accountNotification; this.relationHelper = relationHelper; } @@ -213,18 +215,36 @@ public class CompanyService extends QueueConsumer implements InitializingBean { assert company.getId().equals(companySymbol.getCompanyId()); if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) { company.setTradingCode(companySymbol.getCompanySymbolValue()); - } else { - company.setTradingCode(null); } if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) { company.setClearingCode(companySymbol.getCompanySymbolValue()); - } else { - company.setClearingCode(null); } if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) { 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 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 { - 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()); - 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(); company.setWorkflowStatus(WorkflowStatus.Blocked.getKey()); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java index 080a82d3a..fce285051 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java @@ -7,51 +7,159 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; 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.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.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.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; 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.function.Function; @Service public class CompanySymbolService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); - private final Imdg companySymbolsMap; + private final ImdgProvider imdgProvider; + // private final Imdg companySymbolsMap; private final ImdgId idSequence; + protected CompanyService companyService; + + private final RequestHelper requestHelper; + protected ValidationHelper validationHelper; + protected UserRoleVerification userRoleVerification; + protected Function companySymbolNewRequestValidator; + protected Function companySymbolUpdateRequestValidator; @Autowired public CompanySymbolService(Consumer kafkaQueue, Producer kafkaProducer, - ImdgProvider imdgProvider) { + ImdgProvider imdgProvider, + RequestHelper requestHelper, + ValidationHelper validationHelper, + UserRoleVerification userRoleVerification, + @Qualifier("companySymbolNewRequestValidator") + Function companySymbolNewRequestValidator, + @Qualifier("companySymbolUpdateRequestValidator") + Function companySymbolUpdateRequestValidator + ) { super(kafkaQueue, kafkaProducer); - this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + this.imdgProvider = imdgProvider; 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 public void afterPropertiesSet() { 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); init(); } - public void companySymbolUpdate(BaseRequest userRequest) { - CompanySymbolUpdateRequest req = userRequest.getRequestPayload(); - log.debug("CompanySymbolUpdateRequest received"); - CompanySymbols companySymbols = companySymbolsMap.getSingleObjectByID(req.getId()); -// companySymbols.setCompanySymbol(req.getCompanySymbol()); по ТЗ не должен менятся при обновлении + public void setCompanyService(CompanyService companyService) { + this.companyService = companyService; + } + + + public RequestInfoUpdate companySymbolNew(BaseRequest 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()); - companySymbolsMap.update(companySymbols); + ImdgTransaction transaction = imdgProvider.newTransaction(); + transaction.beginTransaction(); + boolean txOk = false; + try { + Imdg 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()); + return null; + } + + public RequestInfoUpdate companySymbolUpdate(BaseRequest 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 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); log.debug("Created new companySymbols.id={} for company {}", newSymbol.getId(), companyId); if (transaction == null) { + Imdg companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); companySymbolsMap.insert(newSymbol); } else { Imdg tMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyInfoServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyInfoServiceTest.java index 8ab19f2f4..d3b9d46c1 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyInfoServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyInfoServiceTest.java @@ -18,6 +18,7 @@ import ru.clearing.platform.dictionary.*; import ru.spcex.clearing.company.config.BeanConfiguration; import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration; 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; @@ -40,6 +41,8 @@ import static ru.spcex.clearing.company.utils.TestUtils.*; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { CompanyInfoService.class, + CompanyValidationConfig.class, + CompanySymbolValidationConfig.class, CompanyService.class, CompanyValidationConfig.class, diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyServiceTest.java index 9e6f01dae..4dff5bd7e 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyServiceTest.java @@ -21,6 +21,7 @@ import ru.clearing.platform.dictionary.WorkflowStatusDictionary; import ru.spcex.clearing.company.config.BeanConfiguration; import ru.spcex.clearing.company.config.HazelcastServiceTestConfiguration; 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.error.CompanyErrors; @@ -54,6 +55,9 @@ import static ru.spcex.clearing.company.utils.TestUtils.*; AccountNotificationHelper.class, RelationHelper.class, + CompanySymbolService.class, + CompanySymbolValidationConfig.class, + KafkaConfigTest.class, HazelcastServiceTestConfiguration.class, BeanConfiguration.class}) diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java index 7ddfaaaee..8b8d37341 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java @@ -13,14 +13,21 @@ import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; 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.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.TestUtils; 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.validation.common.ValidationHelper; +import ru.spcex.platform.enumeration.CompanySymbol; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; @@ -34,6 +41,16 @@ import static ru.spcex.clearing.company.utils.TestUtils.*; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { CompanySymbolService.class, + + CompanySymbolValidationConfig.class, + ValidationConfig.class, + BeanConfiguration.class, + + CompanyService.class, + CompanyValidationConfig.class, + AccountNotificationHelper.class, + RelationHelper.class, + KafkaConfigTest.class, HazelcastServiceTestConfiguration.class}) class CompanySymbolServiceTest { @@ -60,6 +77,23 @@ class CompanySymbolServiceTest { hazelcastServiceTest.waitAvailable(); companySymbolsImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + + Imdg 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); doReturn(future).when(mockProducer).send(producerRecord.capture()); } @@ -80,20 +114,20 @@ class CompanySymbolServiceTest { CompanySymbols existsCompanySymbols = new CompanySymbols(); existsCompanySymbols.setId(ID); existsCompanySymbols.setCompanyId(ID); - existsCompanySymbols.setCompanySymbol("0000"); - existsCompanySymbols.setCompanySymbolValue("exists companySymbolValue"); + existsCompanySymbols.setCompanySymbol("CIO"); + existsCompanySymbols.setCompanySymbolValue("CIO exists companySymbolValue"); companySymbolsImdg.insert(existsCompanySymbols); CompanySymbolUpdateRequest companySymbolUpdateRequest = new CompanySymbolUpdateRequest(); companySymbolUpdateRequest.setId(ID); companySymbolUpdateRequest.setCompanyId(ID); - companySymbolUpdateRequest.setCompanySymbol("1234"); + companySymbolUpdateRequest.setCompanySymbol("CIO"); companySymbolUpdateRequest.setCompanySymbolValue(companySymbolValue); CompanySymbols predictableCompanySymbols = new CompanySymbols(); predictableCompanySymbols.setId(ID); predictableCompanySymbols.setCompanyId(ID); - predictableCompanySymbols.setCompanySymbol("0000"); + predictableCompanySymbols.setCompanySymbol("CIO"); predictableCompanySymbols.setCompanySymbolValue(companySymbolValue); //ACT diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 2a235f2d0..1d3809845 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -43,6 +43,7 @@ public interface Consts { String DESTINATION_COMPANY_BLOCK = "company-block"; String DESTINATION_COMPANY_INFO_NEW = "company-info-new"; 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_ROLE_SET_NEW = "companyroleset-new"; String DESTINATION_COMPANY_ROLE_SET_DELETE = "companyroleset-delete";