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.ApiResponse;
import io.swagger.annotations.ApiResponses;
import java.util.Collections;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
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.RequestMethod;
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.request.cud.misc.OvernightNewAction;
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.service.IOperator;
import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
@Controller
@ -40,8 +43,11 @@ public class OvernightSettingsController extends AbstractQueueController {
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(
IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class
);
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(Collections.EMPTY_LIST);
response.fromEntity(all);
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.OrderCurrencyValidationStored;
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.SpotPairPresent;
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
@ -176,7 +175,6 @@ public class ValidationConfig {
return new ValidatorImpl<>(ctx,
orderCurrencyPresentById,
OvernightTypeChanged.INSTANCE,
DictionaryPresentRule.instance(
"overnightType",
OrderCurrencyUpdateRequest::getOvernightType,

View file

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

View file

@ -78,7 +78,9 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
Function<OrderCurrencyUpdateRequest, IValidator> overnightTypeUpdateValidator,
@Qualifier("orderCurrencyUpdateValidator")
Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateValidator,
@Qualifier("orderCurrencyNewCompany")
Function<OrderCompanyNewRequest, IValidator> orderCompanyNewValidator,
@Qualifier("orderCurrencyUpdateCompany")
Function<OrderCompanyUpdateRequest, IValidator> orderCompanyUpdateValidator,
Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator,
ImdgQueryService imdgQueryService,
@ -152,6 +154,10 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
return new RequestInfoUpdate(req.getId(), Status.Error, msgResolver.resolve(error.get()));
}
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);
if (OvernightType.SWAP.equalsByKey(order.getOvernightType())) {
Pair<OrderCurrency, OrderCurrency> newSpotPair = swapToSpotSplit(order, rgs);