From 67939b37762e1c0669b932569552fb3a73812a2d Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 30 Jun 2025 11:05:41 +0300 Subject: [PATCH 1/2] execution sorting for RequirementsAndObligationCreation --- .../stage/impl/RequirementsAndObligationCreation.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreation.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreation.java index 47e72b956..b3a9210c1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreation.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreation.java @@ -42,8 +42,7 @@ import ru.spcex.clearing.session.stage.StageResult; import ru.spcex.clearing.session.stage.Task; import ru.spcex.clearing.session.stage.TaskType; import ru.spcex.clearing.session.stage.task.RequirementsAndObligationCreationPayload; -import static ru.spcex.clearing.util.ComparatorUtil.execIdComparator; -import static ru.spcex.clearing.util.ComparatorUtil.tradeTimeComparator; +import static ru.spcex.clearing.util.ComparatorUtil.*; import ru.spcex.platform.classes.base.interfaces.ExecutionType; import ru.spcex.platform.enumeration.ISide; import ru.spcex.platform.enumeration.MoneyFlowSide; @@ -206,7 +205,7 @@ public class RequirementsAndObligationCreation implements ISessionStage { protected StageResult createRegisters(List data, Long sessionId, Map rgsStorage) { this.ckTcr = null; - data.sort(tradeTimeComparator.thenComparing(execIdComparator)); + data.sort(tradeTimeComparator.thenComparing(execIdComparator).thenComparing(execMarketComparator)); Map newRgss = rgsStorage != null ? rgsStorage : storageMap(data); //см. описание к #matchExecutions for (int i = 0; i < data.size(); ) { From d319f562aab16ca40db3f006696f87b45f53836b Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 30 Jun 2025 13:17:35 +0300 Subject: [PATCH 2/2] execution loading bugfix --- .../service/execution/ExecUploadKey.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecUploadKey.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecUploadKey.java index de3290f73..3cfa3aed2 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecUploadKey.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecUploadKey.java @@ -22,21 +22,17 @@ public record ExecUploadKey(LocalDate tradeDate, Long exchangeExecutionId, Strin @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (!(o instanceof ExecUploadKey that)) return false; - ExecUploadKey that = (ExecUploadKey) o; - - if (!Objects.equals(tradeDate, that.tradeDate)) return false; - if (!Objects.equals(exchangeExecutionId, that.exchangeExecutionId)) - return false; - return Objects.equals(side, that.side); + return Objects.equals(side, that.side) && Objects.equals(market, that.market) && Objects.equals(tradeDate, that.tradeDate) && Objects.equals(exchangeExecutionId, that.exchangeExecutionId); } @Override public int hashCode() { - int result = tradeDate != null ? tradeDate.hashCode() : 0; - result = 31 * result + (exchangeExecutionId != null ? exchangeExecutionId.hashCode() : 0); - result = 31 * result + (side != null ? side.hashCode() : 0); + int result = Objects.hashCode(tradeDate); + result = 31 * result + Objects.hashCode(exchangeExecutionId); + result = 31 * result + Objects.hashCode(market); + result = 31 * result + Objects.hashCode(side); return result; } }