ialbert 2026-04-15 12:32:09 +03:00
parent b7eeb13040
commit c2bb7e961c
2 changed files with 38 additions and 1 deletions

View file

@ -0,0 +1,34 @@
package ru.spcex.clearing.dflt.management.component.validation;
import java.util.Collection;
import java.util.Optional;
import ru.clearing.classes.statics.data.misc.OvernightSettings;
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.misc.OvernightSettingsNewRequest;
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 OvernightSettingAlreadyPresent implements IValidationRule<ImdgValidationContext<OvernightSettingsNewRequest>> {
public static final OvernightSettingAlreadyPresent INSTANCE = new OvernightSettingAlreadyPresent();
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<OvernightSettingsNewRequest> ctx) {
OvernightSettingsNewRequest validatedObject = ctx.getValidatedObject();
Imdg<OvernightSettings> osImdg = ctx.obtainMap(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class);
ImdgPredicateBuilder pb = osImdg.predicateBuilder();
Collection<OvernightSettings> alreadyPresentOs = osImdg.getCollectionObjectsByPredicate(pb.and(
pb.equals("market", validatedObject.getMarket()),
pb.equals("companyId", validatedObject.getCompanyId())
));
if (!alreadyPresentOs.isEmpty()) {
return of(DefaultManagementErrors.RecordAlreadyPresent);
}
return empty();
}
}

View file

@ -16,6 +16,7 @@ import ru.clearing.platform.dictionary.OvernightTypeDictionary;
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent;
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;
import ru.spcex.clearing.dflt.management.component.validation.OvernightTypeChanged;
import ru.spcex.clearing.dflt.management.component.validation.QuantityLotGreaterThanZero;
import ru.spcex.clearing.dflt.management.component.validation.SpotPairPresent;
@ -99,7 +100,8 @@ public class ValidationConfig {
DefaultManagementErrors.DictionaryNotFound,
true
),
DictionaryPresentRule.instance("overnightType", OvernightSettingsNewRequest::getOvernightType, IMDGDistributedNames.Map_OvernightTypeDictionary, OvernightTypeDictionary.class, DefaultManagementErrors.RequiredFieldIsEmpty, DefaultManagementErrors.DictionaryNotFound, true) //fixme
DictionaryPresentRule.instance("overnightType", OvernightSettingsNewRequest::getOvernightType, IMDGDistributedNames.Map_OvernightTypeDictionary, OvernightTypeDictionary.class, DefaultManagementErrors.RequiredFieldIsEmpty, DefaultManagementErrors.DictionaryNotFound, true), //fixme
OvernightSettingAlreadyPresent.INSTANCE
);
};
}
@ -114,6 +116,7 @@ public class ValidationConfig {
ctx.addImdg(IMDGDistributedNames.Map_OvernightTypeDictionary, osTypeDictionaryImdg);
ctx.addImdg(IMDGDistributedNames.Map_OvernightSettings, overnightSettingsImdg);
//fixme error codes
//fixme в ТЗ нет проверки OvernightSettingAlreadyPresent - скорее всего ошибка
return new ValidatorImpl<>(ctx,
IdPresentRule.instance("companyId",
OvernightSettingsUpdateRequest::getCompanyId,