securities-service http://jira.mfd.msk:8088/browse/CLS-258 очередные мелкие баги с валидацией поправил

This commit is contained in:
AKurakin 2023-06-23 19:15:46 +03:00
parent 2acf7a1e24
commit 88fda6d2b9
6 changed files with 12 additions and 6 deletions

View file

@ -88,8 +88,6 @@ public class EquitySecurityService extends QueueConsumer implements Initializing
} }
protected synchronized EquitySecurity newEquity0(EquitySecurityNewRequest req) throws ValidationException { protected synchronized EquitySecurity newEquity0(EquitySecurityNewRequest req) throws ValidationException {
ImdgTransaction transaction = imdgProvider.newTransaction();
validationHelper.validateTillFirstErrorAndThrow(req, validation.equityNewValidator()); validationHelper.validateTillFirstErrorAndThrow(req, validation.equityNewValidator());
log.debug("EquitySecurityNewRequest received"); log.debug("EquitySecurityNewRequest received");
@ -113,6 +111,7 @@ public class EquitySecurityService extends QueueConsumer implements Initializing
equity.setSecurityId(equity.getId()); equity.setSecurityId(equity.getId());
equity.setCreated(Instant.now()); equity.setCreated(Instant.now());
equity.setUpdated(equity.getCreated()); equity.setUpdated(equity.getCreated());
ImdgTransaction transaction = imdgProvider.newTransaction();
try { try {
transaction.beginTransaction(); transaction.beginTransaction();
Imdg<EquitySecurity> equityImdg = transaction.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class); Imdg<EquitySecurity> equityImdg = transaction.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);

View file

@ -142,6 +142,8 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial
} }
protected synchronized FixedIncomeSecurity updateFixedIncome0(FixedIncomeSecurityUpdateRequest req) throws ValidationException { protected synchronized FixedIncomeSecurity updateFixedIncome0(FixedIncomeSecurityUpdateRequest req) throws ValidationException {
validationHelper.validateTillFirstErrorAndThrow(req, validation.fixedIncomeUpdateValidator());
FixedIncomeSecurity fixedIncome = fixedIncomeSecurityImdg.getSingleObjectByID(req.getId()); FixedIncomeSecurity fixedIncome = fixedIncomeSecurityImdg.getSingleObjectByID(req.getId());
Instant updateTime = Instant.now(); Instant updateTime = Instant.now();
fixedIncome.setUpdated(updateTime); fixedIncome.setUpdated(updateTime);

View file

@ -122,6 +122,9 @@ public class ListingValidationProvider {
SecuritiesError.ListingNotFound, SecuritiesError.ListingNotFound,
true, true,
(Listing listing) -> { (Listing listing) -> {
if (WorkflowStatus.Blocked.equalsByKey(listing.getWorkflowStatus())) {
return SecuritiesError.InstrumentNotActive;
}
if (listing.getSecurityId() == null) if (listing.getSecurityId() == null)
return null; return null;
Security security = securitySelector.selectSecurityById(listing.getSecurityId()); Security security = securitySelector.selectSecurityById(listing.getSecurityId());

View file

@ -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.platform.messaging.domain.cud.securitites.*;
import ru.spcex.clearing.securities.errors.SecuritiesError; import ru.spcex.clearing.securities.errors.SecuritiesError;
import ru.spcex.clearing.securities.validation.rule.*; 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.EndDtAfterStartDtRule;
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule; import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
import ru.spcex.platform.classes.base.SpcexObjectBase; 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.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.imdg.validation.ImdgValidationContext;
@ -130,7 +132,7 @@ public class ValidationProvider {
context.addImdg(IMDGDistributedNames.Map_ShareTypeDictionary, shareTypeDictionaryImdg); context.addImdg(IMDGDistributedNames.Map_ShareTypeDictionary, shareTypeDictionaryImdg);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
new NotPresentBySecuritySymbolAndWorkflowStatusActv(IMDGDistributedNames.Map_EquitySecurity, SecuritiesError.InstrumentAlreadyExists, EquitySecurityNewRequest.class), new NotPresentBySecuritySymbolAndWorkflowStatusActv(IMDGDistributedNames.Map_EquitySecurity, SecuritiesError.InstrumentAlreadyExists, EquitySecurityNewRequest.class),
new IsValidInstrumentTypeFromRequest(SecuritiesError.RequiredFieldIsEmpty, "EQTY"), new IsValidInstrumentTypeFromRequest(SecuritiesError.WrongFieldValue, InstrumentType.EQTY.getKey()),
EquityNewValidationRule.RequiredFieldIsNotEmpty, EquityNewValidationRule.RequiredFieldIsNotEmpty,
new HaveValidCompanyId<>(EquitySecurityNewRequest::getIssuerId, "issuerId", false), new HaveValidCompanyId<>(EquitySecurityNewRequest::getIssuerId, "issuerId", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, EquitySecurityNewRequest::getInstrumentType, "instrumentType"), new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, EquitySecurityNewRequest::getInstrumentType, "instrumentType"),
@ -207,7 +209,7 @@ public class ValidationProvider {
context.addImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, currencyCodeDictionaryImdg); context.addImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, currencyCodeDictionaryImdg);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
new PresentById(IMDGDistributedNames.Map_FixedIncomeSecurity, SecuritiesError.InstrumentNotFound, true), 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 HaveValidCompanyId<>(FixedIncomeSecurityUpdateRequest::getIssuerId, "issuerId", false),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, FixedIncomeSecurityUpdateRequest::getInstrumentType, "instrumentType"), new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_InstrumentTypeDictionary, FixedIncomeSecurityUpdateRequest::getInstrumentType, "instrumentType"),
new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, FixedIncomeSecurityUpdateRequest::getWorkflowStatus, "workflowStatus", false), new HaveValidCodeByDictionary<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, FixedIncomeSecurityUpdateRequest::getWorkflowStatus, "workflowStatus", false),

View file

@ -12,7 +12,7 @@ import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.function.Function; import java.util.function.Function;
@Deprecated // use common validator @Deprecated // use common validator ru.spcex.clearing.validation.common.rules.DictionaryPresentRule
public class HaveValidCodeByDictionary<R> implements IValidationRule<ImdgValidationContext<R>> { public class HaveValidCodeByDictionary<R> implements IValidationRule<ImdgValidationContext<R>> {
String mapName; String mapName;
String errArg; String errArg;

View file

@ -24,7 +24,7 @@ public class IsValidInstrumentTypeFromRequest implements IValidationRule<ImdgVal
if (action.getInstrumentType() == null) { if (action.getInstrumentType() == null) {
return of(SecuritiesError.RequiredFieldIsEmpty); return of(SecuritiesError.RequiredFieldIsEmpty);
} else if (!predictableInstrumentType.equalsIgnoreCase(action.getInstrumentType())) { } else if (!predictableInstrumentType.equalsIgnoreCase(action.getInstrumentType())) {
return of(errorEnum); return of(errorEnum, action.getInstrumentType());
} else { } else {
return empty(); return empty();
} }