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 index 3277c69ef..8c747cfef 100644 --- 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 @@ -7,6 +7,7 @@ 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.company.validation.CompanySymbolOfSymbolNewRequestNotExistRule; 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; @@ -56,8 +57,8 @@ public class CompanySymbolValidationConfig { CompanySymbolDictionary.class, CompanyErrors.RequiredFieldEmpty, CompanyErrors.WrongFieldValue, - false) - // , new CompanySymbolNotExistRule() чтобы применить это правило, необходимо сделать дополнительный тип в его методе + false), + new CompanySymbolOfSymbolNewRequestNotExistRule() ); }; } 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 fce285051..85c0469f8 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 @@ -34,7 +34,6 @@ import java.util.function.Function; public class CompanySymbolService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final ImdgProvider imdgProvider; - // private final Imdg companySymbolsMap; private final ImdgId idSequence; protected CompanyService companyService; @@ -105,8 +104,8 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB transaction.beginTransaction(); boolean txOk = false; try { - Imdg companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - companySymbolsMap.update(companySymbols); + Imdg companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + companySymbolsTMap.update(companySymbols); try { companyService.updateCompanyBySymbol(transaction, companySymbols); } catch (ClearingBaseException e) { @@ -140,11 +139,11 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB transaction.beginTransaction(); boolean txOk = false; try { - Imdg companySymbolsMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); - companySymbols = companySymbolsMap.getSingleObjectByID(req.getId()); + Imdg companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId()); // companySymbols.setCompanySymbol(req.getCompanySymbol()); по ТЗ не должен менятся при обновлении companySymbols.setCompanySymbolValue(req.getCompanySymbolValue()); - companySymbolsMap.update(companySymbols); + companySymbolsTMap.update(companySymbols); try { companyService.updateCompanyBySymbol(transaction, companySymbols); } catch (ClearingBaseException e) { @@ -172,8 +171,8 @@ 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); + Imdg companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + companySymbolsTMap.insert(newSymbol); } else { Imdg tMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); tMap.insert(newSymbol); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java new file mode 100644 index 000000000..1e15c4986 --- /dev/null +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java @@ -0,0 +1,38 @@ +package ru.spcex.clearing.company.validation; + +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.company.CompanyNewRequest; +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.predicate.ImdgPredicate; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; +import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.validation.IValidationRule; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.Optional; + +/** + * Проверка наличия CompanySymbols с переданными в запросе companySymbol и companyId + */ +public class CompanySymbolOfSymbolNewRequestNotExistRule implements IValidationRule> { + @Override + public Optional validate(ImdgValidationContext context) { + CompanySymbolUpdateRequest request = context.getValidatedObject(); + + Imdg companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + + Collection companySymbols = companySymbolsImdg.getCollectionObjectsByFieldValues(Map.of( + "companyId", request.getCompanyId(), + "companySymbol", request.getCompanySymbol() + )); + if (companySymbols.isEmpty()) return Optional.empty(); + return of(CompanyErrors.RecordAlreadyExist, request.getCompanyId(), request.getCompanySymbol()); + } +}