diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ListingValidationProvider.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ListingValidationProvider.java index 101cca22a..84158be33 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ListingValidationProvider.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ListingValidationProvider.java @@ -2,12 +2,15 @@ package ru.spcex.clearing.securities.validation; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.misc.Listing; +import ru.clearing.classes.statics.data.scheduler.PlannerTemplate; import ru.clearing.classes.statics.data.security.Security; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*; import ru.spcex.clearing.util.security.SecuritySelector; import ru.spcex.clearing.securities.errors.SecuritiesError; +import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.clearing.validation.common.rules.SpecialIdPresentRule; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.enumeration.InstrumentType; @@ -72,7 +75,7 @@ public class ListingValidationProvider { context.addImdg(IMDGDistributedNames.Map_Listing, listingImdg); return new ValidatorImpl<>(context, new PresentById(IMDGDistributedNames.Map_Listing, SecuritiesError.ListingNotFound, true), - new SecurityIdPresentRule("securityId", ListingNewRequest::getSecurityId, + new SecurityIdPresentRule("securityId", ListingUpdateRequest::getSecurityId, (Security security) -> InstrumentType.RATE.equalsByKey(security.getInstrumentType()) ? SecuritiesError.ListingOnMMSCreatedBySystem : null ) @@ -86,10 +89,23 @@ public class ListingValidationProvider { context.setValidatedObject(listingRequest); context.addImdg(IMDGDistributedNames.Map_Listing, listingImdg); return new ValidatorImpl<>(context, - new PresentById(IMDGDistributedNames.Map_Listing, SecuritiesError.ListingNotFound, true), - new SecurityIdPresentRule("securityId", ListingNewRequest::getSecurityId, - (Security security) -> - InstrumentType.RATE.equalsByKey(security.getInstrumentType()) ? SecuritiesError.ListingOnMMSCreatedBySystem : null + IdPresentRule.instance("id", + CommonDeleteRequest::getId, + IMDGDistributedNames.Map_Listing, + Listing.class, + SecuritiesError.RequiredFieldIsEmpty, + SecuritiesError.ListingNotFound, + true, + (Listing listing) -> { + if (listing.getSecurityId() == null) + return null; + Security security = securitySelector.selectSecurityById(listing.getSecurityId()); + if (security != null) { + if (InstrumentType.RATE.equalsByKey(security.getInstrumentType())) + return SecuritiesError.ListingOnMMSCreatedBySystem; + } + return null; + } ) ); };