This commit is contained in:
parent
1be60f8eb0
commit
4505cbf929
6 changed files with 49 additions and 30 deletions
|
|
@ -1,5 +1,8 @@
|
|||
package ru.spcex.clearing.company.config.validation;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
|
|
@ -15,17 +18,17 @@ 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.ClearingCategory;
|
||||
import static ru.spcex.platform.enumeration.ClearingCategory.K;
|
||||
import static ru.spcex.platform.enumeration.ClearingCategory.T;
|
||||
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.enumeration.EnumMessage;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
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 ClearingMemberCategoryValidationConfig {
|
||||
|
||||
|
|
@ -52,7 +55,11 @@ public class ClearingMemberCategoryValidationConfig {
|
|||
IMDGDistributedNames.Map_ClearingCategoryDictionary,
|
||||
ClearingCategoryDictionary.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.DictionaryNotFound),
|
||||
CompanyErrors.DictionaryNotFound,
|
||||
category -> {
|
||||
ClearingCategory enumVal = IEnumKey.getEnumByKey(ClearingCategory.class, category.getCode());
|
||||
return IEnumKey.contains(enumVal, T, K) ? CompanyErrors.CategoryIsNotSupported : null;
|
||||
}),
|
||||
ProviderMemberCategoryValidationRule.NEW
|
||||
);
|
||||
};
|
||||
|
|
@ -91,7 +98,11 @@ public class ClearingMemberCategoryValidationConfig {
|
|||
ClearingCategoryDictionary.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.DictionaryNotFound,
|
||||
false),
|
||||
false,
|
||||
category -> {
|
||||
ClearingCategory enumVal = IEnumKey.getEnumByKey(ClearingCategory.class, category.getCode());
|
||||
return IEnumKey.contains(enumVal, T, K) ? CompanyErrors.CategoryIsNotSupported : null;
|
||||
}),
|
||||
ProviderMemberCategoryValidationRule.UPDATE
|
||||
);
|
||||
};
|
||||
|
|
@ -114,7 +125,11 @@ public class ClearingMemberCategoryValidationConfig {
|
|||
IMDGDistributedNames.Map_ClearingMemberCategory,
|
||||
ClearingMemberCategory.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.CategoryNotFound),
|
||||
CompanyErrors.CategoryNotFound,
|
||||
category -> {
|
||||
ClearingCategory enumVal = IEnumKey.getEnumByKey(ClearingCategory.class, category.getClearingMemberCategory());
|
||||
return IEnumKey.contains(enumVal, T, K) ? CompanyErrors.CategoryIsNotSupported : null;
|
||||
}),
|
||||
ProviderMemberCategoryValidationRule.DELETE
|
||||
);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -14,8 +14,12 @@ import ru.spcex.clearing.platform.messaging.domain.cud.company.RelationUpdateReq
|
|||
import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
|
||||
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.enumeration.ClearingCategory;
|
||||
import static ru.spcex.platform.enumeration.ClearingCategory.K;
|
||||
import static ru.spcex.platform.enumeration.ClearingCategory.T;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||
|
||||
|
|
@ -51,7 +55,11 @@ public class RelationValidationConfig {
|
|||
ClearingCategoryDictionary.class,
|
||||
CompanyErrors.RequiredFieldEmpty,
|
||||
CompanyErrors.DictionaryNotFound,
|
||||
false),
|
||||
false,
|
||||
category -> {
|
||||
ClearingCategory enumVal = IEnumKey.getEnumByKey(ClearingCategory.class, category.getCode());
|
||||
return IEnumKey.contains(enumVal, T, K) ? CompanyErrors.CategoryIsNotSupported : null;
|
||||
}),
|
||||
DictionaryPresentRule.instance("serviceStatus",
|
||||
RelationNewRequest::getServiceStatus,
|
||||
IMDGDistributedNames.Map_ServiceStatusDictionary,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package ru.spcex.clearing.company.config.validation.rules;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
import ru.clearing.classes.statics.data.company.ClearingMemberCategory;
|
||||
|
|
@ -27,6 +28,11 @@ public enum ProviderMemberCategoryValidationRule implements IValidationRule<Imdg
|
|||
public Optional<EnumMessage> validate(ImdgValidationContext<?> context) {
|
||||
ClearingMemberCategoryNewRequest categoryReq = (ClearingMemberCategoryNewRequest) context.getValidatedObject();
|
||||
ClearingCategory category = IEnumKey.getEnumByKey(ClearingCategory.class, categoryReq.getClearingMemberCategory());
|
||||
|
||||
if (Arrays.asList(ClearingCategory.T,
|
||||
ClearingCategory.K).contains(category)) {
|
||||
return Optional.of(new EnumMessage(CompanyErrors.CategoryIsNotSupported, category.getKey()));
|
||||
}
|
||||
Imdg<ClearingMemberCategory> categoryImdg = context.obtainMap(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class);
|
||||
Imdg<Company> companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
|
||||
ImdgPredicateBuilder predicateBuilder = categoryImdg.predicateBuilder();
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ public enum CompanyErrors implements IErrorEnumId {
|
|||
ProviderCompanyAlreadyExist(3035L),
|
||||
ToManyProviderCompany(3036L),
|
||||
FoundUnfulfilledLiabilities(3037L),
|
||||
CategoryIsNotSupported(3038L),
|
||||
;
|
||||
private final Long id;
|
||||
|
||||
|
|
|
|||
|
|
@ -184,8 +184,9 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
relation.setServiceStatus(toStatus);
|
||||
}
|
||||
}
|
||||
String service = serviceForCMC(req.getClearingMemberCategory());
|
||||
relation.setService(service); // MKR
|
||||
ClearingCategory clearingCategory = IEnumKey.getEnumByKey(ClearingCategory.class, req.getClearingMemberCategory());
|
||||
ru.spcex.platform.enumeration.Service service = serviceForCMC(clearingCategory);
|
||||
relation.setService(service.getKey()); // MKR
|
||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
||||
relation.setComment(req.getComment());
|
||||
|
||||
|
|
@ -218,8 +219,9 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
company.getId(), company.getWorkflowStatus(), relation.getId(), toStatus);
|
||||
relation.setServiceStatus(toStatus);
|
||||
}
|
||||
String service = serviceForCMC(clearingMemberCategory);
|
||||
relation.setService(service); // MKR
|
||||
ClearingCategory clearingCategory = IEnumKey.getEnumByKey(ClearingCategory.class, clearingMemberCategory);
|
||||
ru.spcex.platform.enumeration.Service service = serviceForCMC(clearingCategory);
|
||||
relation.setService(service.getKey()); // MKR
|
||||
relation.setServiceProduct(ServiceProduct.ZERO.getKey());
|
||||
relation.setComment(req.getComment());
|
||||
|
||||
|
|
@ -229,22 +231,6 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
return null;
|
||||
}
|
||||
|
||||
String serviceForCMC(String clearingMemberCategory) {
|
||||
String svc = null;
|
||||
if (ClearingCategory.B.equalsByKey(clearingMemberCategory)
|
||||
|| ClearingCategory.I.equalsByKey(clearingMemberCategory)
|
||||
|| ClearingCategory.V.equalsByKey(clearingMemberCategory)
|
||||
|| ClearingCategory.P.equalsByKey(clearingMemberCategory)
|
||||
) {
|
||||
svc = MKR.getKey();
|
||||
} else if (ClearingCategory.C.equalsByKey(clearingMemberCategory)
|
||||
|| ClearingCategory.F.equalsByKey(clearingMemberCategory)
|
||||
) {
|
||||
svc = ru.spcex.platform.enumeration.Service.FOND.getKey();
|
||||
}
|
||||
return svc;
|
||||
}
|
||||
|
||||
ru.spcex.platform.enumeration.Service serviceForCMC(ClearingCategory clearingCategory) {
|
||||
switch (Objects.requireNonNull(clearingCategory)) {
|
||||
case B, I, V, P:
|
||||
|
|
@ -257,7 +243,8 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
}
|
||||
|
||||
private Relation searchRelation(ImdgTransaction tx, String clearingMemberCategory, Long consumerId) {
|
||||
String svc = serviceForCMC(clearingMemberCategory);
|
||||
ClearingCategory clearingCategory = IEnumKey.getEnumByKey(ClearingCategory.class, clearingMemberCategory);
|
||||
ru.spcex.platform.enumeration.Service svc = serviceForCMC(clearingCategory);
|
||||
if (svc == null) {
|
||||
log.warn("Unexpected relation clearingMemberCategory={}", clearingMemberCategory);
|
||||
return null;
|
||||
|
|
@ -265,7 +252,7 @@ public class RelationService extends QueueConsumer implements InitializingBean {
|
|||
Imdg<Relation> currentRelationMap = tx == null ? relationMap : tx.getImdg(IMDGDistributedNames.Map_Relation, Relation.class);
|
||||
Relation existRelation = currentRelationMap.getFirstObjectByFieldValues(Map.of(
|
||||
"consumerId", consumerId,
|
||||
"service", svc
|
||||
"service", svc.getKey()
|
||||
));
|
||||
if (existRelation == null)
|
||||
log.trace("Relation with consumerId={} and service={} not exist.", consumerId, svc);
|
||||
|
|
|
|||
|
|
@ -1095,6 +1095,8 @@ INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3036, 'CMPN', 'Нев
|
|||
|
||||
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3037, 'CMPN', 'Компания %s имеет неисполненные обязательства.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
||||
|
||||
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (3038, 'CMPN', 'Категория %s не поддерживается.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
||||
|
||||
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (4000, 'RPRT', 'Общая ошибка модуля report-serivce.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
||||
|
||||
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (5000, 'ACNT', 'Общая ошибка модуля account-service.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue