From 37c0112525d3d42f9951fabb7a35649269037ed5 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Fri, 24 Apr 2026 13:15:11 +0300 Subject: [PATCH] fix overnightType creating OrderCurrency --- .../validation/OvernightTypeChanged.java | 3 -- ...Context.java => OrderCurrencyContext.java} | 21 +++++++++--- .../service/OrderCalculationService.java | 6 ++-- .../service/OrderTemplateBuilder.java | 32 +++++++++---------- .../service/SpotOvernightOrderService.java | 6 ++-- .../service/SwapOvernightOrderService.java | 6 ++-- 6 files changed, 43 insertions(+), 31 deletions(-) rename clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/model/{SwapContext.java => OrderCurrencyContext.java} (81%) diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OvernightTypeChanged.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OvernightTypeChanged.java index 062d00079..0a257e3d3 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OvernightTypeChanged.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/component/validation/OvernightTypeChanged.java @@ -15,9 +15,6 @@ public class OvernightTypeChanged implements IValidationRule validate(ImdgValidationContext ctx) { OrderCurrencyUpdateRequest validatedObject = ctx.getValidatedObject(); OrderCurrency oc = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency); - if (oc.getOvernightType() == null) { - return of(DefaultManagementErrors.GeneralError); //не понятно че с ним делать... - } if (oc.getOvernightType().equalsIgnoreCase(validatedObject.getOvernightType())) { return of(DefaultManagementErrors.GeneralError); //todo нормальную ошибку } diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/model/SwapContext.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/model/OrderCurrencyContext.java similarity index 81% rename from clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/model/SwapContext.java rename to clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/model/OrderCurrencyContext.java index 28cfb35b1..2bd7d8f86 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/model/SwapContext.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/model/OrderCurrencyContext.java @@ -3,8 +3,9 @@ package ru.spcex.clearing.dflt.management.model; import ru.clearing.classes.statics.data.misc.Market; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.security.RiskParameter; +import ru.spcex.platform.enumeration.OvernightType; -public class SwapContext { +public class OrderCurrencyContext { private final Registry registry; private final String orderCategory; private final Market market; @@ -12,8 +13,9 @@ public class SwapContext { private final CounterpartyInfo categoryP; private final CounterpartyInfo clcc; private final CounterpartyInfo rgcm; + private final OvernightType overnightType; - private SwapContext(Builder builder) { + private OrderCurrencyContext(Builder builder) { this.registry = builder.registry; this.orderCategory = builder.orderCategory; this.market = builder.market; @@ -21,6 +23,7 @@ public class SwapContext { this.categoryP = builder.categoryP; this.clcc = builder.clcc; this.rgcm = builder.rgcm; + this.overnightType = builder.overnightType; } public Registry getRegistry() { @@ -51,6 +54,10 @@ public class SwapContext { return rgcm; } + public OvernightType getOvernightType() { + return overnightType; + } + public static Builder builder() { return new Builder(); } @@ -63,6 +70,7 @@ public class SwapContext { private CounterpartyInfo categoryP; private CounterpartyInfo clcc; private CounterpartyInfo rgcm; + private OvernightType overnightType; public Builder registry(Registry registry) { this.registry = registry; @@ -99,8 +107,13 @@ public class SwapContext { return this; } - public SwapContext build() { - return new SwapContext(this); + public Builder overnightType(OvernightType overnightType) { + this.overnightType = overnightType; + return this; + } + + public OrderCurrencyContext build() { + return new OrderCurrencyContext(this); } } } diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java index e871d7d65..335da6a62 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java @@ -12,7 +12,7 @@ import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.security.Rates; import ru.clearing.platform.dictionary.CurrencyPairDictionary; import ru.spcex.clearing.dflt.management.model.CalculationResult; -import ru.spcex.clearing.dflt.management.model.SwapContext; +import ru.spcex.clearing.dflt.management.model.OrderCurrencyContext; import ru.spcex.platform.enumeration.SettleCode; @Service @@ -29,7 +29,7 @@ public class OrderCalculationService { } public void calcAndEnrichSwap(OrderCurrency order, - SwapContext context) { + OrderCurrencyContext context) { Registry registry = context.getRegistry(); Listing listing = imdgQueryService.findListing(registry, context.getMarket().getCode(), order.getSettleCode()); @@ -49,7 +49,7 @@ public class OrderCalculationService { } public void calcAndEnrichSpot(OrderCurrency order, - SwapContext context) { + OrderCurrencyContext context) { Registry registry = context.getRegistry(); Listing listing = imdgQueryService.findListing(registry, context.getMarket().getCode(), order.getSettleCode()); diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderTemplateBuilder.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderTemplateBuilder.java index 79bc9bb74..2af0fa2ef 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderTemplateBuilder.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderTemplateBuilder.java @@ -6,9 +6,8 @@ import ru.clearing.classes.statics.data.misc.Listing; import ru.clearing.classes.statics.data.misc.Market; import ru.clearing.classes.statics.data.misc.OrderCurrency; import ru.clearing.classes.statics.data.registry.Registry; -import ru.clearing.classes.statics.data.security.RiskParameter; import ru.spcex.clearing.dflt.management.model.CounterpartyInfo; -import ru.spcex.clearing.dflt.management.model.SwapContext; +import ru.spcex.clearing.dflt.management.model.OrderCurrencyContext; import ru.spcex.platform.enumeration.SettleCode; import static ru.spcex.platform.enumeration.SettleCode.T0; import ru.spcex.platform.enumeration.Side; @@ -21,7 +20,7 @@ public class OrderTemplateBuilder { this.imdgQueryService = imdgQueryService; } - public OrderCurrency buildPrimaryTransfer(SwapContext context, SettleCode settleCode) { + public OrderCurrency buildPrimaryTransfer(OrderCurrencyContext context, SettleCode settleCode) { OrderCurrency orderCurrency; switch (context.getOrderCategory()) { case "PL" -> orderCurrency = buildPrimaryTransferPl(context); @@ -33,7 +32,7 @@ public class OrderTemplateBuilder { return orderCurrency; } - public OrderCurrency buildCounterTransfer(SwapContext context, SettleCode settleCode) { + public OrderCurrency buildCounterTransfer(OrderCurrencyContext context, SettleCode settleCode) { OrderCurrency orderCurrency; switch (context.getOrderCategory()) { case "PL" -> orderCurrency = buildCounterTransferPl(context); @@ -46,7 +45,7 @@ public class OrderTemplateBuilder { return orderCurrency; } - public OrderCurrency buildPrimaryBalancing(SwapContext context, SettleCode settleCode) { + public OrderCurrency buildPrimaryBalancing(OrderCurrencyContext context, SettleCode settleCode) { OrderCurrency orderCurrency; switch (context.getOrderCategory()) { case "PL" -> orderCurrency = buildPrimaryBalancingPl(context); @@ -59,7 +58,7 @@ public class OrderTemplateBuilder { return orderCurrency; } - public OrderCurrency buildCounterBalancing(SwapContext context, SettleCode settleCode) { + public OrderCurrency buildCounterBalancing(OrderCurrencyContext context, SettleCode settleCode) { OrderCurrency orderCurrency; switch (context.getOrderCategory()) { case "PL" -> orderCurrency = buildCounterBalancingPl(context); @@ -72,7 +71,7 @@ public class OrderTemplateBuilder { return orderCurrency; } - private OrderCurrency buildPrimaryTransferUk(SwapContext context) { + private OrderCurrency buildPrimaryTransferUk(OrderCurrencyContext context) { CounterpartyInfo clcc = context.getClcc(); Registry registry = context.getRegistry(); @@ -87,7 +86,7 @@ public class OrderTemplateBuilder { return order; } - private OrderCurrency buildCounterTransferUk(SwapContext context) { + private OrderCurrency buildCounterTransferUk(OrderCurrencyContext context) { CounterpartyInfo clcc = context.getClcc(); Registry registry = context.getRegistry(); @@ -102,7 +101,7 @@ public class OrderTemplateBuilder { return order; } - private OrderCurrency buildPrimaryBalancingUk(SwapContext context) { + private OrderCurrency buildPrimaryBalancingUk(OrderCurrencyContext context) { CounterpartyInfo categoryP = context.getCategoryP(); CounterpartyInfo clcc = context.getClcc(); @@ -117,7 +116,7 @@ public class OrderTemplateBuilder { return order; } - private OrderCurrency buildCounterBalancingUk(SwapContext context) { + private OrderCurrency buildCounterBalancingUk(OrderCurrencyContext context) { CounterpartyInfo categoryP = context.getCategoryP(); CounterpartyInfo clcc = context.getClcc(); @@ -132,7 +131,7 @@ public class OrderTemplateBuilder { return order; } - private OrderCurrency buildPrimaryTransferPl(SwapContext context) { + private OrderCurrency buildPrimaryTransferPl(OrderCurrencyContext context) { CounterpartyInfo clcc = context.getClcc(); Registry registry = context.getRegistry(); @@ -147,7 +146,7 @@ public class OrderTemplateBuilder { return order; } - private OrderCurrency buildCounterTransferPl(SwapContext context) { + private OrderCurrency buildCounterTransferPl(OrderCurrencyContext context) { CounterpartyInfo clcc = context.getClcc(); Registry registry = context.getRegistry(); @@ -162,7 +161,7 @@ public class OrderTemplateBuilder { return order; } - private OrderCurrency buildPrimaryBalancingPl(SwapContext context) { + private OrderCurrency buildPrimaryBalancingPl(OrderCurrencyContext context) { CounterpartyInfo rgcm = context.getRgcm(); CounterpartyInfo clcc = context.getClcc(); @@ -177,7 +176,7 @@ public class OrderTemplateBuilder { return order; } - private OrderCurrency buildCounterBalancingPl(SwapContext context) { + private OrderCurrency buildCounterBalancingPl(OrderCurrencyContext context) { CounterpartyInfo clcc = context.getClcc(); CounterpartyInfo rgcm = context.getRgcm(); @@ -193,16 +192,15 @@ public class OrderTemplateBuilder { } public void enrichOrder(OrderCurrency order, - SwapContext context, + OrderCurrencyContext context, Side side, String comment, SettleCode settleCode) { Registry registry = context.getRegistry(); Market market = context.getMarket(); - RiskParameter riskParameter = context.getRiskParameter(); Listing listing = imdgQueryService.findListing(registry, market.getCode(), settleCode.getKey()); - order.setOvernightType("SWAP"); + order.setOvernightType(context.getOvernightType().getKey()); order.setMarket(market.getCode()); order.setListingId(listing.getId()); order.setSecuritySymbol(listing.getSymbolCode()); diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/SpotOvernightOrderService.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/SpotOvernightOrderService.java index 03c2663c1..9b9991915 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/SpotOvernightOrderService.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/SpotOvernightOrderService.java @@ -8,9 +8,10 @@ import ru.clearing.classes.statics.data.misc.OrderCurrency; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.security.RiskParameter; import ru.spcex.clearing.dflt.management.model.CounterpartyInfo; -import ru.spcex.clearing.dflt.management.model.SwapContext; +import ru.spcex.clearing.dflt.management.model.OrderCurrencyContext; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.CompanyRole; +import ru.spcex.platform.enumeration.OvernightType; import ru.spcex.platform.enumeration.RegistryStatus; import ru.spcex.platform.enumeration.SettleCode; import ru.spcex.platform.imdg.api.Imdg; @@ -46,7 +47,7 @@ public class SpotOvernightOrderService { CounterpartyInfo clcc = imdgQueryService.getCompanyByRole(CompanyRole.CLCC); CounterpartyInfo rgcm = imdgQueryService.getCompanyByRole(CompanyRole.RGCM); - SwapContext context = SwapContext.builder() + OrderCurrencyContext context = OrderCurrencyContext.builder() .registry(registry) .orderCategory(orderCategory) .market(market) @@ -54,6 +55,7 @@ public class SpotOvernightOrderService { .categoryP(categoryP) .clcc(clcc) .rgcm(rgcm) + .overnightType(OvernightType.SPOT) .build(); OrderCurrency primaryTransferT0 = templateBuilder.buildPrimaryTransfer(context, SettleCode.T0); diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/SwapOvernightOrderService.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/SwapOvernightOrderService.java index 3e4cab785..67f95849c 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/SwapOvernightOrderService.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/SwapOvernightOrderService.java @@ -8,9 +8,10 @@ import ru.clearing.classes.statics.data.misc.OrderCurrency; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.security.RiskParameter; import ru.spcex.clearing.dflt.management.model.CounterpartyInfo; -import ru.spcex.clearing.dflt.management.model.SwapContext; +import ru.spcex.clearing.dflt.management.model.OrderCurrencyContext; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.CompanyRole; +import ru.spcex.platform.enumeration.OvernightType; import ru.spcex.platform.enumeration.RegistryStatus; import ru.spcex.platform.enumeration.SettleCode; import ru.spcex.platform.imdg.api.Imdg; @@ -46,7 +47,7 @@ public class SwapOvernightOrderService { CounterpartyInfo clcc = imdgQueryService.getCompanyByRole(CompanyRole.CLCC); CounterpartyInfo rgcm = imdgQueryService.getCompanyByRole(CompanyRole.RGCM); - SwapContext context = SwapContext.builder() + OrderCurrencyContext context = OrderCurrencyContext.builder() .registry(registry) .orderCategory(orderCategory) .market(market) @@ -54,6 +55,7 @@ public class SwapOvernightOrderService { .categoryP(categoryP) .clcc(clcc) .rgcm(rgcm) + .overnightType(OvernightType.SWAP) .build(); OrderCurrency primaryTransfer = templateBuilder.buildPrimaryTransfer(context, SettleCode.T1);