From 88fda6d2b9158b9e74ff1ec7c5d6658e04febef4 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Fri, 23 Jun 2023 19:15:46 +0300 Subject: [PATCH] =?UTF-8?q?securities-service=20http://jira.mfd.msk:8088/b?= =?UTF-8?q?rowse/CLS-258=20=D0=BE=D1=87=D0=B5=D1=80=D0=B5=D0=B4=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D0=B1?= =?UTF-8?q?=D0=B0=D0=B3=D0=B8=20=D1=81=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D0=B5=D0=B9=20=D0=BF=D0=BE=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../securities/service/cud/EquitySecurityService.java | 3 +-- .../securities/service/cud/FixedIncomeSecurityService.java | 2 ++ .../securities/validation/ListingValidationProvider.java | 3 +++ .../clearing/securities/validation/ValidationProvider.java | 6 ++++-- .../validation/rule/HaveValidCodeByDictionary.java | 2 +- .../validation/rule/IsValidInstrumentTypeFromRequest.java | 2 +- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/EquitySecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/EquitySecurityService.java index ac08ec31f..a122a6817 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/EquitySecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/EquitySecurityService.java @@ -88,8 +88,6 @@ public class EquitySecurityService extends QueueConsumer implements Initializing } protected synchronized EquitySecurity newEquity0(EquitySecurityNewRequest req) throws ValidationException { - ImdgTransaction transaction = imdgProvider.newTransaction(); - validationHelper.validateTillFirstErrorAndThrow(req, validation.equityNewValidator()); log.debug("EquitySecurityNewRequest received"); @@ -113,6 +111,7 @@ public class EquitySecurityService extends QueueConsumer implements Initializing equity.setSecurityId(equity.getId()); equity.setCreated(Instant.now()); equity.setUpdated(equity.getCreated()); + ImdgTransaction transaction = imdgProvider.newTransaction(); try { transaction.beginTransaction(); Imdg equityImdg = transaction.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/FixedIncomeSecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/FixedIncomeSecurityService.java index d79105f82..de019f039 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/FixedIncomeSecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/FixedIncomeSecurityService.java @@ -142,6 +142,8 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial } protected synchronized FixedIncomeSecurity updateFixedIncome0(FixedIncomeSecurityUpdateRequest req) throws ValidationException { + validationHelper.validateTillFirstErrorAndThrow(req, validation.fixedIncomeUpdateValidator()); + FixedIncomeSecurity fixedIncome = fixedIncomeSecurityImdg.getSingleObjectByID(req.getId()); Instant updateTime = Instant.now(); fixedIncome.setUpdated(updateTime); 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 8a30eedbf..c479862f3 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 @@ -122,6 +122,9 @@ public class ListingValidationProvider { SecuritiesError.ListingNotFound, true, (Listing listing) -> { + if (WorkflowStatus.Blocked.equalsByKey(listing.getWorkflowStatus())) { + return SecuritiesError.InstrumentNotActive; + } if (listing.getSecurityId() == null) return null; Security security = securitySelector.selectSecurityById(listing.getSecurityId()); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java index d5fa822c3..39d2ebd8b 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java @@ -6,9 +6,11 @@ import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteReques import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*; import ru.spcex.clearing.securities.errors.SecuritiesError; import ru.spcex.clearing.securities.validation.rule.*; +import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule; import ru.spcex.clearing.validation.common.rules.EndDtAfterStartDtRule; import ru.spcex.clearing.validation.common.rules.FieldRequiredRule; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.enumeration.InstrumentType; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.validation.ImdgValidationContext; @@ -130,7 +132,7 @@ public class ValidationProvider { context.addImdg(IMDGDistributedNames.Map_ShareTypeDictionary, shareTypeDictionaryImdg); return new ValidatorImpl<>(context, new NotPresentBySecuritySymbolAndWorkflowStatusActv(IMDGDistributedNames.Map_EquitySecurity, SecuritiesError.InstrumentAlreadyExists, EquitySecurityNewRequest.class), - new IsValidInstrumentTypeFromRequest(SecuritiesError.RequiredFieldIsEmpty, "EQTY"), + new IsValidInstrumentTypeFromRequest(SecuritiesError.WrongFieldValue, InstrumentType.EQTY.getKey()), EquityNewValidationRule.RequiredFieldIsNotEmpty, new HaveValidCompanyId<>(EquitySecurityNewRequest::getIssuerId, "issuerId", false), new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, EquitySecurityNewRequest::getInstrumentType, "instrumentType"), @@ -207,7 +209,7 @@ public class ValidationProvider { context.addImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, currencyCodeDictionaryImdg); return new ValidatorImpl<>(context, new PresentById(IMDGDistributedNames.Map_FixedIncomeSecurity, SecuritiesError.InstrumentNotFound, true), - new IsValidInstrumentTypeById(SecuritiesError.InstrumentNotFound, "BOND"), + new IsValidInstrumentTypeById(SecuritiesError.WrongFieldValue, InstrumentType.BOND.getKey()), new HaveValidCompanyId<>(FixedIncomeSecurityUpdateRequest::getIssuerId, "issuerId", false), new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, FixedIncomeSecurityUpdateRequest::getInstrumentType, "instrumentType"), new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, FixedIncomeSecurityUpdateRequest::getWorkflowStatus, "workflowStatus", false), diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCodeByDictionary.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCodeByDictionary.java index 62643e3de..406b88e21 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCodeByDictionary.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCodeByDictionary.java @@ -12,7 +12,7 @@ import java.util.Map; import java.util.Optional; import java.util.function.Function; -@Deprecated // use common validator +@Deprecated // use common validator ru.spcex.clearing.validation.common.rules.DictionaryPresentRule public class HaveValidCodeByDictionary implements IValidationRule> { String mapName; String errArg; diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/IsValidInstrumentTypeFromRequest.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/IsValidInstrumentTypeFromRequest.java index 76aa065ba..1e51b2d28 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/IsValidInstrumentTypeFromRequest.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/IsValidInstrumentTypeFromRequest.java @@ -24,7 +24,7 @@ public class IsValidInstrumentTypeFromRequest implements IValidationRule