securities-service http://jira.mfd.msk:8088/browse/CLS-326
This commit is contained in:
parent
2254f94de7
commit
a036261319
2 changed files with 32 additions and 6 deletions
|
|
@ -15,9 +15,11 @@ public enum SecuritiesError implements IErrorEnumId {
|
||||||
CurrencyAlreadyExists(1015L),
|
CurrencyAlreadyExists(1015L),
|
||||||
CurrencyNotFound(1016L),
|
CurrencyNotFound(1016L),
|
||||||
ListingAlreadyExist(1017L), // Инструмент на режиме %s уже существует
|
ListingAlreadyExist(1017L), // Инструмент на режиме %s уже существует
|
||||||
ListingNotFound(1017L), // Инструмент на режиме %s не найден
|
ListingNotFound(1018L), // Инструмент на режиме %s не найден
|
||||||
MarketNotFound(1020L), // Режим %s не найден
|
MarketNotFound(1020L), // Режим %s не найден
|
||||||
ListingOnMMSCreatedBySystem(1021L), // Информиция об инструментах Денежного рынка на режимах добавляется автоматически
|
ListingOnMMSCreatedBySystem(1021L), // Информиция об инструментах Денежного рынка на режимах добавляется автоматически.
|
||||||
|
ListingOnMMSUpdatedBySystem(1022L), // Информиция об инструментах Денежного рынка на режимах изменяется автоматически.
|
||||||
|
ListingOnMMSDeletedBySystem(1023L), // Информиция об инструментах Денежного рынка на режимах блокируется автоматически.
|
||||||
;
|
;
|
||||||
private final Long id;
|
private final Long id;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,15 @@ package ru.spcex.clearing.securities.validation;
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.misc.Listing;
|
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.clearing.classes.statics.data.security.Security;
|
||||||
|
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
|
||||||
|
import ru.clearing.platform.dictionary.WorkflowStatusDictionary;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
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.platform.messaging.domain.cud.securitites.*;
|
||||||
import ru.spcex.clearing.util.security.SecuritySelector;
|
import ru.spcex.clearing.util.security.SecuritySelector;
|
||||||
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||||
|
import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
|
||||||
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
import ru.spcex.clearing.validation.common.rules.IdPresentRule;
|
||||||
import ru.spcex.clearing.validation.common.rules.SpecialIdPresentRule;
|
import ru.spcex.clearing.validation.common.rules.SpecialIdPresentRule;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
|
@ -31,6 +32,7 @@ import java.util.function.Function;
|
||||||
@Component
|
@Component
|
||||||
public class ListingValidationProvider {
|
public class ListingValidationProvider {
|
||||||
final Imdg<SpcexObjectBase> workflowStatusDictionaryImdg;
|
final Imdg<SpcexObjectBase> workflowStatusDictionaryImdg;
|
||||||
|
final Imdg<SpcexObjectBase> currencyCodeDictionaryImdg;
|
||||||
final Imdg<Listing> listingImdg;
|
final Imdg<Listing> listingImdg;
|
||||||
final Imdg<ru.clearing.classes.statics.data.misc.Market> marketImdg;
|
final Imdg<ru.clearing.classes.statics.data.misc.Market> marketImdg;
|
||||||
final SecuritySelector securitySelector;
|
final SecuritySelector securitySelector;
|
||||||
|
|
@ -39,6 +41,7 @@ public class ListingValidationProvider {
|
||||||
public ListingValidationProvider(ImdgProvider imdgProvider, SecuritySelector securitySelector) {
|
public ListingValidationProvider(ImdgProvider imdgProvider, SecuritySelector securitySelector) {
|
||||||
this.securitySelector = securitySelector;
|
this.securitySelector = securitySelector;
|
||||||
this.workflowStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_WorkflowStatusDictionary, SpcexObjectBase.class);
|
this.workflowStatusDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_WorkflowStatusDictionary, SpcexObjectBase.class);
|
||||||
|
this.currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, SpcexObjectBase.class);
|
||||||
this.listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
this.listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||||
this.marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, ru.clearing.classes.statics.data.misc.Market.class);
|
this.marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, ru.clearing.classes.statics.data.misc.Market.class);
|
||||||
}
|
}
|
||||||
|
|
@ -49,6 +52,7 @@ public class ListingValidationProvider {
|
||||||
ImdgValidationContext<ListingNewRequest> context = new ImdgValidationContext<>();
|
ImdgValidationContext<ListingNewRequest> context = new ImdgValidationContext<>();
|
||||||
context.setValidatedObject(listingRequest);
|
context.setValidatedObject(listingRequest);
|
||||||
context.addImdg(IMDGDistributedNames.Map_WorkflowStatusDictionary, workflowStatusDictionaryImdg);
|
context.addImdg(IMDGDistributedNames.Map_WorkflowStatusDictionary, workflowStatusDictionaryImdg);
|
||||||
|
context.addImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, currencyCodeDictionaryImdg);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Market, marketImdg);
|
context.addImdg(IMDGDistributedNames.Map_Market, marketImdg);
|
||||||
context.addImdg(IMDGDistributedNames.Map_Listing, listingImdg);
|
context.addImdg(IMDGDistributedNames.Map_Listing, listingImdg);
|
||||||
return new ValidatorImpl<ImdgValidationContext<ListingNewRequest>>(context,
|
return new ValidatorImpl<ImdgValidationContext<ListingNewRequest>>(context,
|
||||||
|
|
@ -62,6 +66,16 @@ public class ListingValidationProvider {
|
||||||
SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.MarketNotFound,
|
SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.MarketNotFound,
|
||||||
true
|
true
|
||||||
),
|
),
|
||||||
|
DictionaryPresentRule.instance("tradingCurrency", ListingNewRequest::getTradingCurrency,
|
||||||
|
IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class,
|
||||||
|
SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.WrongFieldValue,
|
||||||
|
false
|
||||||
|
),
|
||||||
|
DictionaryPresentRule.instance("workflowStatus", ListingNewRequest::getWorkflowStatus,
|
||||||
|
IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class,
|
||||||
|
SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.WrongFieldValue,
|
||||||
|
false
|
||||||
|
),
|
||||||
new NotSameActiveListing<>(ListingNewRequest::getSecurityId, ListingNewRequest::getMarket)
|
new NotSameActiveListing<>(ListingNewRequest::getSecurityId, ListingNewRequest::getMarket)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
@ -77,7 +91,17 @@ public class ListingValidationProvider {
|
||||||
new PresentById(IMDGDistributedNames.Map_Listing, SecuritiesError.ListingNotFound, true),
|
new PresentById(IMDGDistributedNames.Map_Listing, SecuritiesError.ListingNotFound, true),
|
||||||
new SecurityIdPresentRule<ListingUpdateRequest>("securityId", ListingUpdateRequest::getSecurityId,
|
new SecurityIdPresentRule<ListingUpdateRequest>("securityId", ListingUpdateRequest::getSecurityId,
|
||||||
(Security security) ->
|
(Security security) ->
|
||||||
InstrumentType.RATE.equalsByKey(security.getInstrumentType()) ? SecuritiesError.ListingOnMMSCreatedBySystem : null
|
InstrumentType.RATE.equalsByKey(security.getInstrumentType()) ? SecuritiesError.ListingOnMMSUpdatedBySystem : null
|
||||||
|
),
|
||||||
|
DictionaryPresentRule.instance("tradingCurrency", ListingUpdateRequest::getTradingCurrency,
|
||||||
|
IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class,
|
||||||
|
SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.WrongFieldValue,
|
||||||
|
false
|
||||||
|
),
|
||||||
|
DictionaryPresentRule.instance("workflowStatus", ListingUpdateRequest::getWorkflowStatus,
|
||||||
|
IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class,
|
||||||
|
SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.WrongFieldValue,
|
||||||
|
false
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
@ -102,7 +126,7 @@ public class ListingValidationProvider {
|
||||||
Security security = securitySelector.selectSecurityById(listing.getSecurityId());
|
Security security = securitySelector.selectSecurityById(listing.getSecurityId());
|
||||||
if (security != null) {
|
if (security != null) {
|
||||||
if (InstrumentType.RATE.equalsByKey(security.getInstrumentType()))
|
if (InstrumentType.RATE.equalsByKey(security.getInstrumentType()))
|
||||||
return SecuritiesError.ListingOnMMSCreatedBySystem;
|
return SecuritiesError.ListingOnMMSDeletedBySystem;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue