company-service http://jira.mfd.msk:8088/browse/CLS-621
This commit is contained in:
parent
862b7f0006
commit
867d5f928a
11 changed files with 1050 additions and 49 deletions
|
|
@ -25,7 +25,8 @@ public record IdPresentRule<R, V extends SpcexObjectBase>(
|
|||
IErrorEnumId errorEmptyRequiredValue,
|
||||
IErrorEnumId errorIdNotPresent,
|
||||
boolean required,
|
||||
Function<V, IErrorEnumId>[] additionalChecks
|
||||
Function<V, IErrorEnumId>[] additionalChecks,
|
||||
Function<V, EnumMessage>[] additionalChecks2
|
||||
) implements IValidationRule<ImdgValidationContext<R>> {
|
||||
|
||||
/**
|
||||
|
|
@ -59,7 +60,29 @@ public record IdPresentRule<R, V extends SpcexObjectBase>(
|
|||
errorEmptyRequiredValue,
|
||||
errorIdNotPresent,
|
||||
required,
|
||||
additionalChecks);
|
||||
additionalChecks, null);
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
public static <R, V extends SpcexObjectBase> IdPresentRule<R, V> instance2(String fieldName,
|
||||
Function<R, Long> idGetter,
|
||||
String mapName,
|
||||
Class<V> mapClass,
|
||||
IErrorEnumId errorEmptyRequiredValue,
|
||||
IErrorEnumId errorIdNotPresent,
|
||||
boolean required,
|
||||
Function<V, EnumMessage>... additionalChecks2) {
|
||||
if (required)
|
||||
Objects.requireNonNull(errorEmptyRequiredValue, "errorEmptyRequiredValue");
|
||||
Objects.requireNonNull(errorIdNotPresent, "errorIdNotPresent");
|
||||
return new IdPresentRule<>(fieldName,
|
||||
idGetter,
|
||||
mapName,
|
||||
mapClass,
|
||||
errorEmptyRequiredValue,
|
||||
errorIdNotPresent,
|
||||
required,
|
||||
null, additionalChecks2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -90,7 +113,7 @@ public record IdPresentRule<R, V extends SpcexObjectBase>(
|
|||
errorEmptyRequiredValue,
|
||||
errorIdNotPresent,
|
||||
true,
|
||||
additionalChecks);
|
||||
additionalChecks, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -103,10 +126,19 @@ public record IdPresentRule<R, V extends SpcexObjectBase>(
|
|||
if (fromMap == null) {
|
||||
return of(errorIdNotPresent, id, fieldName);
|
||||
}
|
||||
for (Function<V, IErrorEnumId> additionalCheck : additionalChecks) {
|
||||
IErrorEnumId validationError = additionalCheck.apply(fromMap);
|
||||
if (validationError != null)
|
||||
return of(validationError, id, fieldName);
|
||||
if (additionalChecks != null) {
|
||||
for (Function<V, IErrorEnumId> additionalCheck : additionalChecks) {
|
||||
IErrorEnumId validationError = additionalCheck.apply(fromMap);
|
||||
if (validationError != null)
|
||||
return of(validationError, id, fieldName);
|
||||
}
|
||||
}
|
||||
if (additionalChecks2 != null) {
|
||||
for (Function<V, EnumMessage> additionalCheck : additionalChecks2) {
|
||||
EnumMessage validationError = additionalCheck.apply(fromMap);
|
||||
if (validationError != null)
|
||||
return Optional.of(validationError);
|
||||
}
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import ru.spcex.clearing.company.validation.CompanySymbolOfSymbolNewRequestNotEx
|
|||
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.clearing.validation.common.rules.DictionaryPresentRule;
|
||||
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
|
||||
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||
|
|
@ -49,14 +50,14 @@ public class CompanyRoleSetValidationConfig {
|
|||
Company.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.CompanyNotFound,
|
||||
false),
|
||||
true),
|
||||
DictionaryPresentRule.instance("companyRole",
|
||||
CompanyRoleSetNewRequest::getCompanyRole,
|
||||
IMDGDistributedNames.Map_CompanyRoleDictionary,
|
||||
CompanyRoleDictionary.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.DictionaryNotFound,
|
||||
false),
|
||||
true),
|
||||
DictionaryPresentRule.instance("workflowStatus",
|
||||
CompanyRoleSetNewRequest::getWorkflowStatus,
|
||||
IMDGDistributedNames.Map_WorkflowStatusDictionary,
|
||||
|
|
@ -68,6 +69,49 @@ public class CompanyRoleSetValidationConfig {
|
|||
};
|
||||
}
|
||||
|
||||
@Bean("CompanyRoleSetUpdateRequestValidator")
|
||||
public Function<CompanyRoleSetUpdateRequest, IValidator> companyRoleSetUpdateRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||
return companyRoleSetNewRequest -> {
|
||||
ImdgValidationContext<CompanyRoleSetUpdateRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(companyRoleSetNewRequest);
|
||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||
addImdg.accept(IMDGDistributedNames.Map_CompanyRoleSet);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CompanyRoleDictionary);
|
||||
addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary);
|
||||
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||
return new ValidatorImpl<>(context,
|
||||
IdPresentRule.instance("id",
|
||||
CompanyRoleSetUpdateRequest::getId,
|
||||
IMDGDistributedNames.Map_CompanyRoleSet,
|
||||
CompanyRoleSet.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.RecordNotFound,
|
||||
true),
|
||||
IdPresentRule.instance("companyId",
|
||||
CompanyRoleSetUpdateRequest::getCompanyId,
|
||||
IMDGDistributedNames.Map_Company,
|
||||
Company.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.CompanyNotFound,
|
||||
true),
|
||||
DictionaryPresentRule.instance("companyRole",
|
||||
CompanyRoleSetUpdateRequest::getCompanyRole,
|
||||
IMDGDistributedNames.Map_CompanyRoleDictionary,
|
||||
CompanyRoleDictionary.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.DictionaryNotFound,
|
||||
true),
|
||||
DictionaryPresentRule.instance("workflowStatus",
|
||||
CompanyRoleSetUpdateRequest::getWorkflowStatus,
|
||||
IMDGDistributedNames.Map_WorkflowStatusDictionary,
|
||||
WorkflowStatusDictionary.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.DictionaryNotFound,
|
||||
false)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Bean("CompanyRoleSetDeleteRequestValidator")
|
||||
public Function<CommonDeleteRequest, IValidator> companyRoleSetDeleteRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,240 @@
|
|||
package ru.spcex.clearing.company.config.validation;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
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.CompanyRoleSet;
|
||||
import ru.clearing.classes.statics.data.company.SettlementHouseProperties;
|
||||
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
||||
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.clearing.validation.common.rules.DictionaryPresentRule;
|
||||
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||
import ru.spcex.clearing.validation.common.rules.specific.IdPresentSpecificRule;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.enumeration.CompanyRole;
|
||||
import ru.spcex.platform.enumeration.CurrencyCode;
|
||||
import ru.spcex.platform.enumeration.Sender;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
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 ru.spcex.platform.utils.validation.IValidator;
|
||||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Configuration
|
||||
public class SettlementHousePropertiesValidationConfig {
|
||||
protected static Logger log = LoggerFactory.getLogger(SettlementHousePropertiesValidationConfig.class);
|
||||
|
||||
@Bean("SettlementHousePropertyNewRequestValidator")
|
||||
public Function<SettlementHousePropertyNewRequest, IValidator> settlementHousePropertyNewRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||
return settlementHousePropertyNewRequest -> {
|
||||
ImdgValidationContext<SettlementHousePropertyNewRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(settlementHousePropertyNewRequest);
|
||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||
addImdg.accept(IMDGDistributedNames.Map_SettlementHouseProperties);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CompanyRoleDictionary);
|
||||
addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CurrencyCodeDictionary);
|
||||
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CompanyRoleSet);
|
||||
return new ValidatorImpl<>(context,
|
||||
IdPresentRule.instance2("companyId",
|
||||
SettlementHousePropertyNewRequest::getCompanyId,
|
||||
IMDGDistributedNames.Map_Company,
|
||||
Company.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.CompanyNotFound,
|
||||
true, company -> {
|
||||
Imdg<CompanyRoleSet> companyRoleSetImdg = context.obtainMap(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||
CompanyRoleSet existRole = companyRoleSetImdg.getFirstObjectByFieldValues(Map.of(
|
||||
"companyId", company.getId(),
|
||||
"companyRole", CompanyRole.SETH
|
||||
));
|
||||
if (existRole == null || !WorkflowStatus.Active.equalsByKey(existRole.getWorkflowStatus())) {
|
||||
return new EnumMessage(CompanyErrors.CompanyHasNoSETHRole, company.getShortName());
|
||||
}
|
||||
return null;
|
||||
}),
|
||||
DictionaryPresentRule.instance("currencyCode",
|
||||
SettlementHousePropertyNewRequest::getCurrencyCode,
|
||||
IMDGDistributedNames.Map_CurrencyCodeDictionary,
|
||||
CurrencyCodeDictionary.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.DictionaryNotFound,
|
||||
true),
|
||||
new CheckOnDuplicateSHP<>(
|
||||
SettlementHousePropertyNewRequest::getCompanyId,
|
||||
SettlementHousePropertyNewRequest::getCurrencyCode),
|
||||
new CheckCurrencyCodeInSHP<>(
|
||||
SettlementHousePropertyNewRequest::getCompanyId,
|
||||
SettlementHousePropertyNewRequest::getCurrencyCode)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@Bean("SettlementHousePropertyUpdateRequestValidator")
|
||||
public Function<SettlementHousePropertyUpdateRequest, IValidator> settlementHousePropertyUpdateRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||
return settlementHousePropertyUpdateRequest -> {
|
||||
ImdgValidationContext<SettlementHousePropertyUpdateRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(settlementHousePropertyUpdateRequest);
|
||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||
addImdg.accept(IMDGDistributedNames.Map_SettlementHouseProperties);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CompanyRoleDictionary);
|
||||
addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CurrencyCodeDictionary);
|
||||
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CompanyRoleSet);
|
||||
return new ValidatorImpl<>(context,
|
||||
IdPresentRule.instance("id",
|
||||
SettlementHousePropertyUpdateRequest::getId,
|
||||
IMDGDistributedNames.Map_SettlementHouseProperties,
|
||||
SettlementHouseProperties.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.CompanyParametersNotFound,
|
||||
true),
|
||||
IdPresentRule.instance2("companyId",
|
||||
SettlementHousePropertyUpdateRequest::getCompanyId,
|
||||
IMDGDistributedNames.Map_Company,
|
||||
Company.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.CompanyNotFound,
|
||||
true, company -> {
|
||||
Imdg<CompanyRoleSet> companyRoleSetImdg = context.obtainMap(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||
CompanyRoleSet existRole = companyRoleSetImdg.getFirstObjectByFieldValues(Map.of(
|
||||
"companyId", company.getId(),
|
||||
"companyRole", CompanyRole.SETH
|
||||
));
|
||||
if (existRole == null || !WorkflowStatus.Active.equalsByKey(existRole.getWorkflowStatus())) {
|
||||
return new EnumMessage(CompanyErrors.CompanyHasNoSETHRole, company.getShortName());
|
||||
}
|
||||
return null;
|
||||
}),
|
||||
DictionaryPresentRule.instance("currencyCode",
|
||||
SettlementHousePropertyUpdateRequest::getCurrencyCode,
|
||||
IMDGDistributedNames.Map_CurrencyCodeDictionary,
|
||||
CurrencyCodeDictionary.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.DictionaryNotFound,
|
||||
true),
|
||||
new CheckOnDuplicateSHP<>(
|
||||
SettlementHousePropertyUpdateRequest::getId,
|
||||
SettlementHousePropertyUpdateRequest::getCompanyId,
|
||||
SettlementHousePropertyUpdateRequest::getCurrencyCode),
|
||||
new CheckCurrencyCodeInSHP<>(
|
||||
SettlementHousePropertyUpdateRequest::getCompanyId,
|
||||
SettlementHousePropertyUpdateRequest::getCurrencyCode)
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Bean("SettlementHousePropertiesDeleteRequestValidator")
|
||||
public Function<CommonDeleteRequest, IValidator> settlementHousePropertiesDeleteRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
|
||||
return deleteRequest -> {
|
||||
ImdgValidationContext<CommonDeleteRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(deleteRequest);
|
||||
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
|
||||
addImdg.accept(IMDGDistributedNames.Map_SettlementHouseProperties);
|
||||
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||
return new ValidatorImpl<>(context,
|
||||
IdPresentSpecificRule.instance("id",
|
||||
CommonDeleteRequest::getId,
|
||||
IMDGDistributedNames.Map_SettlementHouseProperties,
|
||||
SettlementHouseProperties.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.CompanyNotFound,
|
||||
true, shp -> {
|
||||
if (shp.getCompanyId() != null) {
|
||||
Company existCompany = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class)
|
||||
.getSingleObjectByID(shp.getCompanyId());
|
||||
if (existCompany == null)
|
||||
return new EnumMessage(CompanyErrors.CompanyNotFound, shp.getCompanyId());
|
||||
}
|
||||
return null;
|
||||
})
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
static class CheckCurrencyCodeInSHP<T> implements IValidationRule<ImdgValidationContext<T>> {
|
||||
final Function<T, Long> companyIdGetter;
|
||||
final Function<T, String> currencyCodeGetter;
|
||||
|
||||
public CheckCurrencyCodeInSHP(Function<T, Long> companyIdGetter, Function<T, String> currencyCodeGetter) {
|
||||
this.companyIdGetter = companyIdGetter;
|
||||
this.currencyCodeGetter = currencyCodeGetter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<T> context) {
|
||||
T validatedObject = context.getValidatedObject();
|
||||
Long companyId = companyIdGetter.apply(validatedObject);
|
||||
String currencyCode = currencyCodeGetter.apply(validatedObject);
|
||||
if (CurrencyCode.isRub(currencyCode) && !Sender.Prc.equalsById(companyId)) { // RU and companyId <> 2
|
||||
return of(CompanyErrors.RuCurrencyMayOnlyNKOAOPRC, currencyCode, companyId);
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
}
|
||||
|
||||
static class CheckOnDuplicateSHP<T> implements IValidationRule<ImdgValidationContext<T>> {
|
||||
final Function<T, Long> sameObjectGetter;
|
||||
final Function<T, Long> companyIdGetter;
|
||||
final Function<T, String> currencyCodeGetter;
|
||||
|
||||
public CheckOnDuplicateSHP(Function<T, Long> companyIdGetter, Function<T, String> currencyCodeGetter) {
|
||||
sameObjectGetter = null;
|
||||
this.companyIdGetter = companyIdGetter;
|
||||
this.currencyCodeGetter = currencyCodeGetter;
|
||||
}
|
||||
|
||||
public CheckOnDuplicateSHP(Function<T, Long> sameObjectGetter, Function<T, Long> companyIdGetter, Function<T, String> currencyCodeGetter) {
|
||||
this.sameObjectGetter = sameObjectGetter;
|
||||
this.companyIdGetter = companyIdGetter;
|
||||
this.currencyCodeGetter = currencyCodeGetter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<T> context) {
|
||||
T validatedObject = context.getValidatedObject();
|
||||
Imdg<SettlementHouseProperties> shpMap = context.obtainMap(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class);
|
||||
|
||||
Long companyId = companyIdGetter.apply(validatedObject);
|
||||
String currencyCode = currencyCodeGetter.apply(validatedObject);
|
||||
if (companyId == null) {
|
||||
return of(CompanyErrors.RequiredFieldEmpty, "companyId");
|
||||
}
|
||||
if (currencyCode == null) {
|
||||
return of(CompanyErrors.RequiredFieldEmpty, "currencyCode");
|
||||
}
|
||||
|
||||
ImdgPredicateBuilder pb = shpMap.predicateBuilder();
|
||||
ImdgPredicate query = pb.and(pb.equals("companyId", companyId),
|
||||
pb.equals("currencyCode", currencyCode));
|
||||
|
||||
Collection<SettlementHouseProperties> existSHP = shpMap.getCollectionObjectsByPredicate(query);
|
||||
if (existSHP.isEmpty()) {
|
||||
return empty();
|
||||
} else {
|
||||
return of(CompanyErrors.CurrencyAlreadyAdded, currencyCode, companyId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -4,10 +4,7 @@ import org.springframework.context.annotation.Bean;
|
|||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.clearing.classes.statics.data.account.Account;
|
||||
import ru.clearing.classes.statics.data.account.ClientCode;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
import ru.clearing.classes.statics.data.company.*;
|
||||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
||||
import ru.clearing.classes.statics.data.profile.Contact;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
|
|
@ -58,6 +55,8 @@ public class ValidationConfig {
|
|||
addImdg.accept(IMDGDistributedNames.Map_Account, Account.class);
|
||||
addImdg.accept(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
|
||||
addImdg.accept(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class);
|
||||
addImdg.accept(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
|
||||
|
||||
return imdg;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,10 @@ public enum CompanyErrors implements IErrorEnumId {
|
|||
ClearingMemberCategoryOnMKRAlreadyExist(3024L), // Договорные отношения %s в секции МКР уже созданы.
|
||||
ClearingMemberCategoryOnFONDAlreadyExist(3025L), // Договорные отношения %s на фондовой секции уже созданы.
|
||||
RelationNotFound(3026L), // Запись о договорных отношениях не найдена
|
||||
CurrencyAlreadyAdded(3031L), // Валюта %s уже добавлена
|
||||
CompanyParametersNotFound(3032L), // Параметр компании %s не найден
|
||||
RuCurrencyMayOnlyNKOAOPRC(3033L),
|
||||
CompanyHasNoSETHRole(3034L), // Компания %s не является расчетной организацией
|
||||
;
|
||||
private final Long id;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,19 +16,23 @@ 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.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
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.ImdgId;
|
||||
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.error.ValidationException;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Service
|
||||
|
|
@ -45,6 +49,7 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
|||
|
||||
private ValidationHelper validationHelper;
|
||||
private Function<CompanyRoleSetNewRequest, IValidator> companyRoleSetNewRequestValidator;
|
||||
private Function<CompanyRoleSetUpdateRequest, IValidator> companyRoleSetUpdateRequestValidator;
|
||||
private Function<CommonDeleteRequest, IValidator> companyRoleSetDeleteRequestValidator;
|
||||
|
||||
|
||||
|
|
@ -56,6 +61,8 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
|||
UserRoleVerification userRoleVerification,
|
||||
@Qualifier("CompanyRoleSetNewRequestValidator")
|
||||
Function<CompanyRoleSetNewRequest, IValidator> companyRoleSetNewRequestValidator,
|
||||
@Qualifier("CompanyRoleSetUpdateRequestValidator")
|
||||
Function<CompanyRoleSetUpdateRequest, IValidator> companyRoleSetUpdateRequestValidator,
|
||||
@Qualifier("CompanyRoleSetDeleteRequestValidator")
|
||||
Function<CommonDeleteRequest, IValidator> companyRoleSetDeleteRequestValidator
|
||||
) {
|
||||
|
|
@ -67,6 +74,7 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
|||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.companyRoleSetNewRequestValidator = companyRoleSetNewRequestValidator;
|
||||
this.companyRoleSetUpdateRequestValidator = companyRoleSetUpdateRequestValidator;
|
||||
this.companyRoleSetDeleteRequestValidator = companyRoleSetDeleteRequestValidator;
|
||||
this.requestHelper = requestHelper.setLogger(log);
|
||||
}
|
||||
|
|
@ -75,13 +83,13 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
|||
public void afterPropertiesSet() {
|
||||
callback(CompanyRoleSetNewRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::createCompanyRoleSet, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SET_NEW, callbacks::put);
|
||||
// callback(CompanyRoleSetNewRequest.class)
|
||||
// .setConsumer(request -> requestHelper.requestFunction(this::createCompanyRoleSet, request))
|
||||
// .forDestination(Consts.DESTINATION_COMPANY_ROLE_SET_UPDATE, callbacks::put);
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_NEW, callbacks::put);
|
||||
callback(CompanyRoleSetUpdateRequest.class)
|
||||
.setConsumer(request -> requestHelper.requestFunction(this::updateCompanyRoleSet, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::deleteCompanyRoleSet, request))
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SET_DELETE
|
||||
.forDestination(Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE
|
||||
, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
|
@ -95,36 +103,72 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
|||
requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleNewRequestBaseRequest, companyRoleSetNewRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
CompanyRoleSet newRole = companyRoleSetMap.getFirstObjectByFieldValues(Map.of(
|
||||
"companyId", req.getCompanyId(),
|
||||
"companyRole", req.getCompanyRole()
|
||||
));
|
||||
|
||||
boolean isNew;
|
||||
if (newRole == null) {
|
||||
isNew = true;
|
||||
newRole = new CompanyRoleSet();
|
||||
newRole.setId(idSequence.nextId());
|
||||
newRole.setCompanyId(req.getCompanyId());
|
||||
log.trace("New CompanyRoleSet[{}] for company {}", newRole.getId(), req.getCompanyId());
|
||||
} else {
|
||||
isNew = false;
|
||||
log.trace("Update exist CompanyRoleSet[{}] for company {}", newRole.getId(), req.getCompanyId());
|
||||
return requestHelper.makeErrorResponse(companyRoleNewRequestBaseRequest, CompanyErrors.RecordAlreadyExist, newRole.getId());
|
||||
// if (newRole.getCompanyId() != null && req.getCompanyId() != null && !newRole.getCompanyId().equals(req.getCompanyId())) {
|
||||
//// нельзя сменить компанию
|
||||
// return requestHelper.makeErrorResponse(companyRoleNewRequestBaseRequest, CompanyErrors.WrongFieldValue, "companyId");
|
||||
// }
|
||||
{
|
||||
CompanyRoleSet existRole = companyRoleSetMap.getFirstObjectByFieldValues(Map.of(
|
||||
"companyId", req.getCompanyId(),
|
||||
"companyRole", req.getCompanyRole()
|
||||
));
|
||||
if (existRole != null) {
|
||||
log.debug("Update exist CompanyRoleSet[{}] for company {}. Should use UPDATE method, action was rejected.",
|
||||
existRole.getId(), req.getCompanyId());
|
||||
return requestHelper.makeErrorResponse(companyRoleNewRequestBaseRequest, CompanyErrors.RecordAlreadyExist, existRole.getId());
|
||||
}
|
||||
}
|
||||
|
||||
CompanyRoleSet newRole = new CompanyRoleSet();
|
||||
newRole.setId(idSequence.nextId());
|
||||
newRole.setCompanyId(req.getCompanyId());
|
||||
newRole.setCompanyRole(req.getCompanyRole());
|
||||
newRole.setWorkflowStatus(req.getWorkflowStatus());
|
||||
if (isNew)
|
||||
companyRoleSetMap.insert(newRole);
|
||||
else
|
||||
companyRoleSetMap.update(newRole);
|
||||
if (req.getWorkflowStatus() == null) {
|
||||
newRole.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
} else {
|
||||
newRole.setWorkflowStatus(req.getWorkflowStatus());
|
||||
}
|
||||
|
||||
companyRoleSetMap.insert(newRole);
|
||||
log.debug("New CompanyRoleSet[{}] for company {}", newRole.getId(), req.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate updateCompanyRoleSet(BaseRequest<CompanyRoleSetUpdateRequest> companyRoleUpdateRequestBaseRequest) throws ValidationException {
|
||||
CompanyRoleSetUpdateRequest req = companyRoleUpdateRequestBaseRequest.getRequestPayload();
|
||||
log.debug("companyroleset-update request received, BaseRequest.id = {}", companyRoleUpdateRequestBaseRequest.getId());
|
||||
{ // Валидация, ValidationException
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyRoleUpdateRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleUpdateRequestBaseRequest, companyRoleSetUpdateRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
|
||||
CompanyRoleSet role = companyRoleSetMap.getSingleObjectByID(req.getId());
|
||||
|
||||
if (!Objects.equals(role.getCompanyId(), req.getCompanyId()) || !Objects.equals(role.getCompanyRole(), req.getCompanyRole())) {
|
||||
log.warn("By user request [{}] want change companyId or companyRole of CompanyRoleSet[{}]",
|
||||
companyRoleUpdateRequestBaseRequest.getId(), req.getId());
|
||||
ImdgPredicateBuilder p = companyRoleSetMap.predicateBuilder();
|
||||
CompanyRoleSet existRole = companyRoleSetMap.getFirstObjectByPredicate(p.and(
|
||||
p.equals("companyId", req.getCompanyId()),
|
||||
p.equals("companyRole", req.getCompanyRole()),
|
||||
p.not(p.equals("id", req.getId()))
|
||||
));
|
||||
if (existRole != null) {
|
||||
log.debug("Role \"{}\" for company {} already exist with other id={}. Action was rejected.",
|
||||
req.getCompanyRole(), req.getCompanyId(), existRole.getId());
|
||||
return requestHelper.makeErrorResponse(companyRoleUpdateRequestBaseRequest, CompanyErrors.RecordAlreadyExist, existRole.getId());
|
||||
}
|
||||
}
|
||||
|
||||
role.setCompanyId(req.getCompanyId());
|
||||
role.setCompanyRole(req.getCompanyRole());
|
||||
if (req.getWorkflowStatus() != null) {
|
||||
role.setWorkflowStatus(req.getWorkflowStatus());
|
||||
}
|
||||
|
||||
companyRoleSetMap.update(role);
|
||||
log.debug("Update CompanyRoleSet[{}] for company {}", role.getId(), req.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate deleteCompanyRoleSet(BaseRequest<CommonDeleteRequest> companyRoleSetDeleteRequest) throws ValidationException {
|
||||
CommonDeleteRequest request = companyRoleSetDeleteRequest.getRequestPayload();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,155 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
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.beans.factory.annotation.Qualifier;
|
||||
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.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.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
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.ImdgId;
|
||||
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.error.ValidationException;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Service
|
||||
public class SettlementHousePropertiesService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private final RequestHelper requestHelper;
|
||||
private final ImdgProvider imdgProvider;
|
||||
// private final Imdg<Company> companyMap;
|
||||
private final Imdg<SettlementHouseProperties> settlementHousePropertiesMap;
|
||||
private final ImdgId idSequence;
|
||||
protected UserRoleVerification userRoleVerification;
|
||||
protected IMessageResolver messageResolver;
|
||||
|
||||
private ValidationHelper validationHelper;
|
||||
private Function<SettlementHousePropertyNewRequest, IValidator> settlementHousePropertyNewRequestValidator;
|
||||
private Function<SettlementHousePropertyUpdateRequest, IValidator> settlementHousePropertyUpdateRequestRequestValidator;
|
||||
private Function<CommonDeleteRequest, IValidator> settlementHousePropertiesDeleteRequestValidator;
|
||||
|
||||
|
||||
@Autowired
|
||||
public SettlementHousePropertiesService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||
ImdgProvider imdgProvider,
|
||||
RequestHelper requestHelper,
|
||||
ValidationHelper validationHelper,
|
||||
UserRoleVerification userRoleVerification,
|
||||
@Qualifier("SettlementHousePropertyNewRequestValidator")
|
||||
Function<SettlementHousePropertyNewRequest, IValidator> settlementHousePropertyNewRequestValidator,
|
||||
@Qualifier("SettlementHousePropertyUpdateRequestValidator")
|
||||
Function<SettlementHousePropertyUpdateRequest, IValidator> settlementHousePropertyUpdateRequestValidator,
|
||||
@Qualifier("SettlementHousePropertiesDeleteRequestValidator")
|
||||
Function<CommonDeleteRequest, IValidator> settlementHousePropertiesDeleteRequestValidator
|
||||
) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.settlementHousePropertiesMap = imdgProvider.getImdg(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class);
|
||||
// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||
this.userRoleVerification = userRoleVerification;
|
||||
this.validationHelper = validationHelper;
|
||||
this.settlementHousePropertyNewRequestValidator = settlementHousePropertyNewRequestValidator;
|
||||
this.settlementHousePropertyUpdateRequestRequestValidator = settlementHousePropertyUpdateRequestValidator;
|
||||
this.settlementHousePropertiesDeleteRequestValidator = settlementHousePropertiesDeleteRequestValidator;
|
||||
this.requestHelper = requestHelper.setLogger(log);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(SettlementHousePropertyNewRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::createSettlementHouseProperty, request))
|
||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW, callbacks::put);
|
||||
callback(SettlementHousePropertyUpdateRequest.class)
|
||||
.setConsumer(request -> requestHelper.requestFunction(this::updateSettlementHouseProperty, request))
|
||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE, callbacks::put);
|
||||
callback(CommonDeleteRequest.class)
|
||||
.setFunction(request -> requestHelper.requestFunction(this::deleteSettlementHouseProperty, request))
|
||||
.forDestination(Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE
|
||||
, callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
private RequestInfoUpdate createSettlementHouseProperty(BaseRequest<SettlementHousePropertyNewRequest> settlementHousePropertyNewRequestBaseRequest) throws ValidationException {
|
||||
SettlementHousePropertyNewRequest req = settlementHousePropertyNewRequestBaseRequest.getRequestPayload();
|
||||
log.debug("SettlementHouseProperty-new request received, BaseRequest.id = {}", settlementHousePropertyNewRequestBaseRequest.getId());
|
||||
{ // Валидация, ValidationException
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyNewRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyNewRequestBaseRequest, settlementHousePropertyNewRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
|
||||
|
||||
SettlementHouseProperties shp = new SettlementHouseProperties();
|
||||
shp.setId(idSequence.nextId());
|
||||
shp.setCompanyId(req.getCompanyId());
|
||||
shp.setCurrencyCode(req.getCurrencyCode());
|
||||
|
||||
settlementHousePropertiesMap.insert(shp);
|
||||
log.debug("New SettlementHouseProperties[{}] for company {}", shp.getId(), shp.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate updateSettlementHouseProperty(BaseRequest<SettlementHousePropertyUpdateRequest> settlementHousePropertyUpdateRequestBaseRequest) throws ValidationException {
|
||||
SettlementHousePropertyUpdateRequest req = settlementHousePropertyUpdateRequestBaseRequest.getRequestPayload();
|
||||
log.debug("SettlementHouseProperty-update request received, BaseRequest.id = {}", settlementHousePropertyUpdateRequestBaseRequest.getId());
|
||||
{ // Валидация, ValidationException
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyUpdateRequestBaseRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyUpdateRequestBaseRequest, settlementHousePropertyUpdateRequestRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
|
||||
SettlementHouseProperties shp = settlementHousePropertiesMap.getSingleObjectByID(req.getId());
|
||||
|
||||
shp.setCompanyId(req.getCompanyId());
|
||||
shp.setCurrencyCode(req.getCurrencyCode());
|
||||
|
||||
settlementHousePropertiesMap.update(shp);
|
||||
log.debug("Update SettlementHouseProperty[{}] for company {}", shp.getId(), req.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
|
||||
private RequestInfoUpdate deleteSettlementHouseProperty(BaseRequest<CommonDeleteRequest> settlementHousePropertyDeleteRequest) throws ValidationException {
|
||||
CommonDeleteRequest request = settlementHousePropertyDeleteRequest.getRequestPayload();
|
||||
log.debug("SettlementHousePropertyDeleteRequest received id = {}", request.getId());
|
||||
{ // Валидация, ValidationException
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyDeleteRequest);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyDeleteRequest, settlementHousePropertiesDeleteRequestValidator);
|
||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||
}
|
||||
SettlementHouseProperties settlementHouseProperty = settlementHousePropertiesMap.getSingleObjectByID(request.getId());
|
||||
if (settlementHouseProperty == null) {
|
||||
return requestHelper.makeErrorResponse(settlementHousePropertyDeleteRequest, CompanyErrors.RecordNotFound, request.getId());
|
||||
}
|
||||
settlementHousePropertiesMap.delete(settlementHouseProperty);
|
||||
log.debug("SettlementHouseProperty {} for company {} delete", settlementHouseProperty.getId(), settlementHouseProperty.getCompanyId());
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,258 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
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.*;
|
||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.company.config.validation.*;
|
||||
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.CompanyInfoUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
|
||||
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.CompanySymbol;
|
||||
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.Instant;
|
||||
import java.util.Map;
|
||||
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.*;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
CompanyRoleSetService.class,
|
||||
CompanyRoleSetValidationConfig.class,
|
||||
|
||||
ValidationConfig.class,
|
||||
BeanConfiguration.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class CompanyRoleSetServiceTest {
|
||||
|
||||
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
|
||||
CompanyRoleSetService companyRoleSetService;
|
||||
@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 CompanyRoleSetService#createCompanyRoleSet(BaseRequest)}<br>
|
||||
* * Тест проверяет создание сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link CompanyRoleSetNewRequest}:<br>
|
||||
* * {@link CompanyRoleSetNewRequest#companyId} - COMPANY_ID (105)<br>
|
||||
* * {@link CompanyRoleSetNewRequest#companyRole} - SETH<br>
|
||||
* * {@link CompanyRoleSetNewRequest#workflowStatus} - 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) companyRoleSetService.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 CompanyRoleSetService#createCompanyRoleSet(BaseRequest)}<br>
|
||||
* * Тест проверяет создание сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link CompanyRoleSetNewRequest}:<br>
|
||||
* * {@link CompanyRoleSetNewRequest#companyId} - COMPANY_ID (105)<br>
|
||||
* * {@link CompanyRoleSetNewRequest#companyRole} - SETH<br>
|
||||
* * {@link CompanyRoleSetNewRequest#workflowStatus} - 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) companyRoleSetService.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 CompanyRoleSetService#updateCompanyRoleSet(BaseRequest)}<br>
|
||||
* * Тест проверяет обновление сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link CompanyRoleSetUpdateRequest}:<br>
|
||||
* * {@link CompanyRoleSetUpdateRequest#id} - ID<br>
|
||||
* * {@link CompanyRoleSetUpdateRequest#companyId} - COMPANY_ID<br>
|
||||
* * {@link CompanyRoleSetUpdateRequest#companyRole} - SETH<br>
|
||||
* * {@link CompanyRoleSetUpdateRequest#workflowStatus} - 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) companyRoleSetService.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 CompanyRoleSetService#deleteCompanyRoleSet(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) companyRoleSetService.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);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,227 @@
|
|||
package ru.spcex.clearing.company.service;
|
||||
|
||||
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.*;
|
||||
import ru.spcex.clearing.company.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.company.config.validation.CompanyRoleSetValidationConfig;
|
||||
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.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.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;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.time.Instant;
|
||||
import java.util.Map;
|
||||
|
||||
import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator;
|
||||
import static ru.spcex.clearing.test.TestUtils.*;
|
||||
import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@ContextConfiguration(classes = {
|
||||
SettlementHousePropertiesService.class,
|
||||
SettlementHousePropertiesValidationConfig.class,
|
||||
CompanySymbolValidationConfig.class,
|
||||
|
||||
ValidationConfig.class,
|
||||
BeanConfiguration.class,
|
||||
|
||||
KafkaTestConfig.class,
|
||||
ImdgTestConfig.class})
|
||||
class SettlementHousePropertiesServiceTest {
|
||||
|
||||
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
|
||||
SettlementHousePropertiesService settlementHousePropertiesService;
|
||||
@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 SettlementHousePropertiesService#createSettlementHouseProperty(BaseRequest)}<br>
|
||||
* * Тест проверяет создание сущности {@link SettlementHouseProperties} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link SettlementHousePropertyNewRequest}:<br>
|
||||
* * {@link SettlementHousePropertyNewRequest#companyId} - COMPANY_ID<br>
|
||||
* * {@link SettlementHousePropertyNewRequest#currencyCode} - 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) settlementHousePropertiesService.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 SettlementHousePropertiesService#updateSettlementHouseProperty(BaseRequest)}<br>
|
||||
* * Тест проверяет обновление сущности {@link SettlementHouseProperties} в IMDG при передаче из Apache Kafka.<br>
|
||||
* * Входной запрос {@link SettlementHousePropertyUpdateRequest}:<br>
|
||||
* * {@link SettlementHousePropertyUpdateRequest#id} - ID<br>
|
||||
* * {@link SettlementHousePropertyUpdateRequest#companyId} - COMPANY_ID<br>
|
||||
* * {@link SettlementHousePropertyUpdateRequest#currencyCode} - 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) settlementHousePropertiesService.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 SettlementHousePropertiesService#deleteSettlementHouseProperty(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) settlementHousePropertiesService.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);
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,8 @@ package ru.spcex.platform.enumeration;
|
|||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
public enum CompanyRole implements IEnumKey {
|
||||
ODEP("ODEP")
|
||||
ODEP("ODEP"),
|
||||
SETH("SETH")
|
||||
;
|
||||
|
||||
private final String key;
|
||||
|
|
|
|||
|
|
@ -57,9 +57,9 @@ public interface Consts {
|
|||
String DESTINATION_COMPANY_SYMBOL_NEW = "company-symbol-new";
|
||||
String DESTINATION_COMPANY_SYMBOL_UPDATE = "company-symbol-update";
|
||||
String DESTINATION_COMPANY_SYMBOL_DELETE = "company-symbol-delete";
|
||||
String DESTINATION_COMPANY_ROLE_SET_NEW = "companyroleset-new";
|
||||
String DESTINATION_COMPANY_ROLE_SET_DELETE = "companyroleset-delete";
|
||||
String DESTINATION_COMPANY_ROLE_SET_UPDATE = "companyroleset-update";
|
||||
String DESTINATION_COMPANY_ROLE_SETS_NEW = "company-role-sets-new";
|
||||
String DESTINATION_COMPANY_ROLE_SETS_UPDATE = "company-role-sets-update";
|
||||
String DESTINATION_COMPANY_ROLE_SETS_DELETE = "company-role-sets-delete";
|
||||
String DESTINATION_CONTACT_NEW = "contact-new";
|
||||
String DESTINATION_CONTACT_UPDATE = "contact-update";
|
||||
String DESTINATION_CONTACT_DELETE = "contact-delete";
|
||||
|
|
@ -193,9 +193,6 @@ public interface Consts {
|
|||
String DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW = "settlement-house-properties-new";
|
||||
String DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE = "settlement-house-properties-update";
|
||||
String DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE = "settlement-house-properties-delete";
|
||||
String DESTINATION_COMPANY_ROLE_SETS_NEW = "company-role-sets-new";
|
||||
String DESTINATION_COMPANY_ROLE_SETS_UPDATE = "company-role-sets-update";
|
||||
String DESTINATION_COMPANY_ROLE_SETS_DELETE = "company-role-sets-delete";
|
||||
|
||||
//TODO IS IT NEEDED RIGHT HERE?
|
||||
String REGISTRY_CONTRACT_REGISTER_NEW = "registry-contract-register-new";
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue