This commit is contained in:
parent
6b590862ee
commit
93392ef394
2 changed files with 59 additions and 33 deletions
|
|
@ -0,0 +1,56 @@
|
|||
package ru.spcex.clearing.dflt.management.component.validation;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
||||
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
||||
import ru.spcex.clearing.dflt.management.config.ValidationConfig;
|
||||
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.platform.enumeration.CompanyRole;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
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;
|
||||
|
||||
public class OrderCurrencyOnlyLccCompany
|
||||
implements IValidationRule<ImdgValidationContext<?>> {
|
||||
private static final Logger log = LoggerFactory.getLogger(ValidationConfig.class);
|
||||
public static
|
||||
OrderCurrencyOnlyLccCompany getInstance() {
|
||||
return new OrderCurrencyOnlyLccCompany();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<?> ctx) {
|
||||
Imdg<CompanyRoleSet> cmpRoleImdg = ctx.obtainMap(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||
Imdg<Company> companyImdg = ctx.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
|
||||
ImdgPredicateBuilder cmpRolePb = cmpRoleImdg.predicateBuilder();
|
||||
CompanyRoleSet companyRoleSet = cmpRoleImdg.getFirstObjectByPredicate(
|
||||
cmpRolePb.equals("companyRole", CompanyRole.CLCC.getKey())
|
||||
);
|
||||
if (companyRoleSet == null) {
|
||||
log.error("couldn't find companyRole CLCC");
|
||||
return of(DefaultManagementErrors.RecordNotFound, "companyRole[CLCC]");
|
||||
}
|
||||
Company clccCmp = companyImdg.getSingleObjectByID(companyRoleSet.getCompanyId());
|
||||
if (clccCmp == null) {
|
||||
log.error("couldn't find company CLCC");
|
||||
return of(DefaultManagementErrors.RecordNotFound, "company[CLCC]");
|
||||
}
|
||||
OrderCurrency order = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency);
|
||||
if (!Objects.equals(order.getCounterPartyId(), clccCmp.getId())) {
|
||||
return of(DefaultManagementErrors.OperationNotAllowed);
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String ruleName() {
|
||||
return "OrderCurrencyOnlyLccCompany";
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
package ru.spcex.clearing.dflt.management.config;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -22,6 +21,7 @@ import ru.clearing.platform.dictionary.OvernightTypeDictionary;
|
|||
import ru.clearing.platform.dictionary.SideDictionary;
|
||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent;
|
||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyCompanyNotChanged;
|
||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyOnlyLccCompany;
|
||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck;
|
||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored;
|
||||
import ru.spcex.clearing.dflt.management.component.validation.OvernightSettingAlreadyPresent;
|
||||
|
|
@ -38,7 +38,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCurrencyUpdate
|
|||
import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
|
||||
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||
import ru.spcex.clearing.validation.common.rules.SpecialIdPresentRule;
|
||||
import ru.spcex.platform.enumeration.CompanyRole;
|
||||
import ru.spcex.platform.enumeration.OrderAffil;
|
||||
import ru.spcex.platform.enumeration.OrderStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
|
@ -343,36 +342,6 @@ public class ValidationConfig {
|
|||
.store(OrderCurrencyValidationStored.OrderCurrency)
|
||||
.build();
|
||||
|
||||
var clccOrderOnly = new IValidationRule<ImdgValidationContext<OrderCompanyNewRequest>> () {
|
||||
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<OrderCompanyNewRequest> context) {
|
||||
ImdgPredicateBuilder cmpRolePb = cmpRoleImdg.predicateBuilder();
|
||||
CompanyRoleSet companyRoleSet = cmpRoleImdg.getFirstObjectByPredicate(
|
||||
cmpRolePb.equals("companyRole", CompanyRole.CLCC.getKey())
|
||||
);
|
||||
if (companyRoleSet == null) {
|
||||
log.error("couldn't find companyRole CLCC");
|
||||
return of(DefaultManagementErrors.RecordNotFound, "companyRole[CLCC]");
|
||||
}
|
||||
Company clccCmp = companyImdg.getSingleObjectByID(companyRoleSet.getCompanyId());
|
||||
if (clccCmp == null) {
|
||||
log.error("couldn't find company CLCC");
|
||||
return of(DefaultManagementErrors.RecordNotFound, "company[CLCC]");
|
||||
}
|
||||
OrderCurrency order = context.getStoredObject(OrderCurrencyValidationStored.OrderCurrency);
|
||||
if (!Objects.equals(order.getCounterPartyId(), clccCmp.getId())) {
|
||||
return of(DefaultManagementErrors.OperationNotAllowed);
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String ruleName() {
|
||||
return "clccOrderOnly";
|
||||
}
|
||||
};
|
||||
|
||||
var companyPresentRule = PresentByPredicate
|
||||
.builder(new IdEqualPredicate<>(
|
||||
companyImdg.predicateBuilder(),
|
||||
|
|
@ -410,7 +379,7 @@ public class ValidationConfig {
|
|||
//fixme проверить что tcr.getCompanyId() = companyId из запроса?
|
||||
return new ValidatorImpl<>(ctx,
|
||||
orderCurrencyPresent,
|
||||
clccOrderOnly,
|
||||
OrderCurrencyOnlyLccCompany.getInstance(),
|
||||
companyPresentRule,
|
||||
tcrPresent,
|
||||
QuantityLotGreaterThanZero.INSTANCE,
|
||||
|
|
@ -472,6 +441,7 @@ public class ValidationConfig {
|
|||
//fixme проверить что tcr.getCompanyId() = companyId из запроса?
|
||||
return new ValidatorImpl<>(ctx,
|
||||
orderCurrencyPresent,
|
||||
OrderCurrencyOnlyLccCompany.getInstance(),
|
||||
companyPresentRule,
|
||||
tcrPresent,
|
||||
QuantityLotGreaterThanZero.INSTANCE,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue