ialbert 2026-04-27 14:08:23 +03:00
parent 5e6ce83584
commit c9f8ea7aa8
5 changed files with 16 additions and 35 deletions

View file

@ -4,7 +4,8 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import java.util.Collections; import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.misc.OvernightSettings;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.misc.OvernightNewAction; import ru.spcex.clearing.backendapi.controller.request.cud.misc.OvernightNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.misc.OvernightUpdateAction; import ru.spcex.clearing.backendapi.controller.request.cud.misc.OvernightUpdateAction;
@ -22,6 +24,7 @@ import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IOperator;
import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.Consts;
@Controller @Controller
@ -40,8 +43,11 @@ public class OvernightSettingsController extends AbstractQueueController {
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
public CommonGetAllResponse getAll() { public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(
IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class
);
CommonGetAllResponse response = new CommonGetAllResponse(); CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(Collections.EMPTY_LIST); response.fromEntity(all);
return response; return response;
} }

View file

@ -1,29 +0,0 @@
package ru.spcex.clearing.dflt.management.component.validation;
import java.util.Optional;
import ru.clearing.classes.statics.data.misc.OrderCurrency;
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCurrencyUpdateRequest;
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.validation.IValidationRule;
public class OvernightTypeChanged implements IValidationRule<ImdgValidationContext<OrderCurrencyUpdateRequest>> {
public static final OvernightTypeChanged INSTANCE = new OvernightTypeChanged();
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<OrderCurrencyUpdateRequest> ctx) {
OrderCurrencyUpdateRequest validatedObject = ctx.getValidatedObject();
OrderCurrency oc = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency);
if (oc.getOvernightType().equalsIgnoreCase(validatedObject.getOvernightType())) {
return of(DefaultManagementErrors.GeneralError); //todo нормальную ошибку
}
return empty();
}
@Override
public String ruleName() {
return "OvernightTypeChanged";
}
}

View file

@ -19,7 +19,6 @@ import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCom
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck; import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck;
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored; import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored;
import ru.spcex.clearing.dflt.management.component.validation.OvernightSettingAlreadyPresent; import ru.spcex.clearing.dflt.management.component.validation.OvernightSettingAlreadyPresent;
import ru.spcex.clearing.dflt.management.component.validation.OvernightTypeChanged;
import ru.spcex.clearing.dflt.management.component.validation.QuantityLotGreaterThanZero; import ru.spcex.clearing.dflt.management.component.validation.QuantityLotGreaterThanZero;
import ru.spcex.clearing.dflt.management.component.validation.SpotPairPresent; import ru.spcex.clearing.dflt.management.component.validation.SpotPairPresent;
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors; import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
@ -176,7 +175,6 @@ public class ValidationConfig {
return new ValidatorImpl<>(ctx, return new ValidatorImpl<>(ctx,
orderCurrencyPresentById, orderCurrencyPresentById,
OvernightTypeChanged.INSTANCE,
DictionaryPresentRule.instance( DictionaryPresentRule.instance(
"overnightType", "overnightType",
OrderCurrencyUpdateRequest::getOvernightType, OrderCurrencyUpdateRequest::getOvernightType,

View file

@ -6,8 +6,8 @@ public enum DefaultManagementErrors implements IErrorEnumId {
GeneralError(11000L), GeneralError(11000L),
UserVerifyDenial(11001L), UserVerifyDenial(11001L),
RequiredFieldIsEmpty(11002L), RequiredFieldIsEmpty(11007L),
DictionaryNotFound(11003L), DictionaryNotFound(11005L),
RecordNotFound(11006L), RecordNotFound(11006L),
RecordAlreadyPresent(11002L), RecordAlreadyPresent(11002L),
OnlyBalancingOrdersAllowed(11003L), OnlyBalancingOrdersAllowed(11003L),

View file

@ -78,7 +78,9 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
Function<OrderCurrencyUpdateRequest, IValidator> overnightTypeUpdateValidator, Function<OrderCurrencyUpdateRequest, IValidator> overnightTypeUpdateValidator,
@Qualifier("orderCurrencyUpdateValidator") @Qualifier("orderCurrencyUpdateValidator")
Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateValidator, Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateValidator,
@Qualifier("orderCurrencyNewCompany")
Function<OrderCompanyNewRequest, IValidator> orderCompanyNewValidator, Function<OrderCompanyNewRequest, IValidator> orderCompanyNewValidator,
@Qualifier("orderCurrencyUpdateCompany")
Function<OrderCompanyUpdateRequest, IValidator> orderCompanyUpdateValidator, Function<OrderCompanyUpdateRequest, IValidator> orderCompanyUpdateValidator,
Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator, Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator,
ImdgQueryService imdgQueryService, ImdgQueryService imdgQueryService,
@ -152,6 +154,10 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
return new RequestInfoUpdate(req.getId(), Status.Error, msgResolver.resolve(error.get())); return new RequestInfoUpdate(req.getId(), Status.Error, msgResolver.resolve(error.get()));
} }
OrderCurrency order = validator.getStored(OrderCurrencyValidationStored.OrderCurrency); OrderCurrency order = validator.getStored(OrderCurrencyValidationStored.OrderCurrency);
if (payload.getOvernightType().equalsIgnoreCase(order.getOvernightType())) {
log.info("overnightType from payload is the same for OrderCurrency.id[{}]: {}; skipping", order.getId(), payload.getOvernightType());
return null;
}
Registry rgs = validator.getStored(OrderCurrencyValidationStored.Registry); Registry rgs = validator.getStored(OrderCurrencyValidationStored.Registry);
if (OvernightType.SWAP.equalsByKey(order.getOvernightType())) { if (OvernightType.SWAP.equalsByKey(order.getOvernightType())) {
Pair<OrderCurrency, OrderCurrency> newSpotPair = swapToSpotSplit(order, rgs); Pair<OrderCurrency, OrderCurrency> newSpotPair = swapToSpotSplit(order, rgs);