diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/validation/RiskParameterValidationConfig.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/validation/RiskParameterValidationConfig.java index 2f5702744..0417650d6 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/validation/RiskParameterValidationConfig.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/config/validation/RiskParameterValidationConfig.java @@ -5,11 +5,14 @@ import java.util.function.Consumer; import java.util.function.Function; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import ru.clearing.classes.statics.data.security.RiskParameter; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.cud.security.RiskParameterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.security.RiskParameterUpdateRequest; import ru.spcex.clearing.securities.errors.SecuritiesError; import ru.spcex.clearing.securities.validation.rule.RiskParameterValidationRule; import ru.spcex.clearing.validation.common.rules.FieldRequiredRule; +import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.validation.ImdgValidationContext; @@ -19,8 +22,8 @@ import ru.spcex.platform.utils.validation.ValidatorImpl; @Configuration public class RiskParameterValidationConfig { - @Bean("riskParameterValidator") - public Function riskParameterValidator(Map> imdgForValidation) { + @Bean("riskParameterNewValidator") + public Function riskParameterNewValidator(Map> imdgForValidation) { return riskParameter -> { ImdgValidationContext context = new ImdgValidationContext<>(); context.setValidatedObject(riskParameter); @@ -34,4 +37,22 @@ public class RiskParameterValidationConfig { ); }; } + + @Bean("riskParameterUpdateValidator") + public Function riskParameterUpdateValidator(Map> imdgForValidation) { + return riskParameter -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(riskParameter); + Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); + addImdg.accept(IMDGDistributedNames.Map_RiskParameter); + return new ValidatorImpl<>(context, + IdPresentRule.instance("id", + RiskParameterUpdateRequest::getId, + IMDGDistributedNames.Map_RiskParameter, + RiskParameter.class, + SecuritiesError.RequiredFieldIsEmpty, + SecuritiesError.RequiredFieldIsEmpty) + ); + }; + } } diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/facade/RiskParameterFacade.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/facade/RiskParameterFacade.java index dea2201a8..847a24c31 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/facade/RiskParameterFacade.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/facade/RiskParameterFacade.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.security.RiskParameter; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.cud.security.RiskParameterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.security.RiskParameterUpdateRequest; import ru.spcex.platform.classes.base.interfaces.IClearingFacade; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgId; @@ -29,7 +30,7 @@ public class RiskParameterFacade implements IClearingFacade { * Создает clientCode, TCR и опционально TCRList, если указаны валюты. */ public void createRiskParameter(RiskParameterNewRequest request) { - log.trace("Start process creating new client code"); + log.trace("Start process creating new risk_parameter"); RiskParameter riskParameter = new RiskParameter(); riskParameter.setCurrencyPairId(request.getCurrencyPairId()); @@ -42,6 +43,16 @@ public class RiskParameterFacade implements IClearingFacade { log.debug("successfully processed, new risk_parameter id {}", riskParameter.getId()); } + public void updateRiskParameter(RiskParameterUpdateRequest request) { + log.trace("Start process update risk_parameter"); + RiskParameter riskParameterForUpdate = riskParameterImdg.getSingleObjectByID(request.getId()); + + riskParameterForUpdate.setValue(request.getValue()); + riskParameterForUpdate.setWorkflowStatus(request.getStatus()); + + riskParameterImdg.update(riskParameterForUpdate); + log.debug("successfully processed, updated risk_parameter id {}", riskParameterForUpdate.getId()); + } @Override public void lock() { diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/listeners/RiskParameterMessageListener.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/listeners/RiskParameterMessageListener.java index 1e51fca1d..9949eadf6 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/listeners/RiskParameterMessageListener.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/listeners/RiskParameterMessageListener.java @@ -26,7 +26,8 @@ public class RiskParameterMessageListener extends QueueConsumer implements Initi private final Logger log = LoggerFactory.getLogger(getClass()); private final ImdgProvider imdgProvider; private final RiskParameterFacade riskParameterFacade; - private final Function riskParameterValidator; + private final Function riskParameterNewValidator; + private final Function riskParameterUpdateValidator; private final UserRoleVerification userRoleVerification; private final IMessageResolver messageResolver; @@ -34,13 +35,15 @@ public class RiskParameterMessageListener extends QueueConsumer implements Initi Producer kafkaProducer, ImdgProvider imdgProvider, RiskParameterFacade riskParameterFacade, - Function riskParameterValidator, + Function riskParameterNewValidator, + Function riskParameterUpdateValidator, UserRoleVerification userRoleVerification, IMessageResolver messageResolver) { super(kafkaQueue, kafkaProducer); this.imdgProvider = imdgProvider; this.riskParameterFacade = riskParameterFacade; - this.riskParameterValidator = riskParameterValidator; + this.riskParameterNewValidator = riskParameterNewValidator; + this.riskParameterUpdateValidator = riskParameterUpdateValidator; this.userRoleVerification = userRoleVerification; this.messageResolver = messageResolver; } @@ -63,7 +66,7 @@ public class RiskParameterMessageListener extends QueueConsumer implements Initi RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(riskParameterRequest); if (requestInfoUpdate != null) return requestInfoUpdate; RiskParameterNewRequest request = riskParameterRequest.getRequestPayload(); - IValidator validator = riskParameterValidator.apply(request); + IValidator validator = riskParameterNewValidator.apply(request); Optional error = validator.tillFirstError(); if (error.isPresent()) { String errMsg = messageResolver.resolve(error.get()); @@ -77,16 +80,21 @@ public class RiskParameterMessageListener extends QueueConsumer implements Initi return null; } - private RequestInfoUpdate riskParameterUpdate(BaseRequest clientCodeNewRequest) { -// RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(clientCodeNewRequest); -// if (requestInfoUpdate != null) return requestInfoUpdate; -// RiskParameterUpdateRequest request = clientCodeNewRequest.getRequestPayload(); -// ValidationResult validationResult = clientCodeValidator.checkBackendNewRequest(request); -// if (!validationResult.isValid()) { -// return makeErrorResponse(clientCodeNewRequest, validationResult); -// } -// -// clientCodeFacade.createClientCode(request, validationResult.validator()); + private RequestInfoUpdate riskParameterUpdate(BaseRequest riskParameterUpdateRequest) { + RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(riskParameterUpdateRequest); + if (requestInfoUpdate != null) return requestInfoUpdate; + RiskParameterUpdateRequest request = riskParameterUpdateRequest.getRequestPayload(); + IValidator validator = riskParameterUpdateValidator.apply(request); + Optional error = validator.tillFirstError(); + if (error.isPresent()) { + String errMsg = messageResolver.resolve(error.get()); + return new RequestInfoUpdate() + .setId(riskParameterUpdateRequest.getId()) + .setStatus(ru.spcex.clearing.platform.messaging.service.Status.Error) + .setMessage(errMsg); + } + + riskParameterFacade.updateRiskParameter(request); return null; } }