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 {
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<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 {
validationHelper.validateTillFirstErrorAndThrow(req, validation.fixedIncomeUpdateValidator());
FixedIncomeSecurity fixedIncome = fixedIncomeSecurityImdg.getSingleObjectByID(req.getId());
Instant updateTime = Instant.now();
fixedIncome.setUpdated(updateTime);

View file

@ -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());

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.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),

View file

@ -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<R> implements IValidationRule<ImdgValidationContext<R>> {
String mapName;
String errArg;

View file

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