From 63d0a12f55ed81eb539035fe02b3ea8205c089bb Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 17 Oct 2023 16:04:00 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-523 conditions fix --- .../backendapi/config/HistoryConfig.java | 28 +++++++++++++++++++ .../queue/history/HistController.java | 4 +-- .../history/condition/ConditionProvider.java | 2 ++ .../specific/ClearingDateFromCondition.java | 25 +++++++++++++++++ .../specific/ClearingDateToCondition.java | 25 +++++++++++++++++ .../specific/CreatedFromCondition.java | 2 +- .../specific/CreatedToCondition.java | 2 +- .../service/impl/StateLoaderImpl.java | 2 +- 8 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/ClearingDateFromCondition.java create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/ClearingDateToCondition.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HistoryConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HistoryConfig.java index bbe3a540a..ff53063d6 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HistoryConfig.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/HistoryConfig.java @@ -4,6 +4,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import ru.spcex.clearing.backendapi.controller.queue.history.condition.HistorySubscription; +import ru.spcex.clearing.backendapi.controller.queue.history.condition.specific.ClearingDateFromCondition; +import ru.spcex.clearing.backendapi.controller.queue.history.condition.specific.ClearingDateToCondition; import ru.spcex.clearing.backendapi.controller.queue.history.condition.specific.CreatedFromCondition; import ru.spcex.clearing.backendapi.controller.queue.history.condition.specific.CreatedToCondition; import ru.spcex.clearing.imdg.IMDGDistributedNames; @@ -31,6 +33,8 @@ public class HistoryConfig { public List histSubscriptions() { List hst = new LinkedList<>(); hst.add(moneyBalanceRegister()); + hst.add(admittedLiabilitiesRegister()); + hst.add(moneyPaymentInstructionRegister()); return hst; } @@ -45,4 +49,28 @@ public class HistoryConfig { )); return sbscr; } + + private HistorySubscription admittedLiabilitiesRegister() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("admitted-liabilities-registers"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchAdmittedLiabilitiesRegister); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_AdmittedLiabilitiesRegister); + sbscr.setConditions(List.of( + new ClearingDateFromCondition(pb), + new ClearingDateToCondition(pb) + )); + return sbscr; + } + + private HistorySubscription moneyPaymentInstructionRegister() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("money-payment-instruction-registers"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchMoneyPaymentInstructionRegister); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_MoneyPaymentInstructionRegister); + sbscr.setConditions(List.of( + new ClearingDateFromCondition(pb), + new ClearingDateToCondition(pb) + )); + return sbscr; + } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/HistController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/HistController.java index 4af1fc7fa..9659a9d76 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/HistController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/HistController.java @@ -52,11 +52,11 @@ public class HistController { @ApiParam(value = "destination сущности по которой запрашивается история", example = "money-balance-registers", required = true) @RequestParam("destination") String destination, - @ApiParam(value = "Начальная точка поиска по дате", example = "2023-01-15", required = true) + @ApiParam(value = "Начальная точка поиска по дате", example = "2023-01-15") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) @RequestParam(name = "from", required = false) LocalDate from, - @ApiParam(value = "Конечная точка поиска по дате", example = "2023-01-15", required = true) + @ApiParam(value = "Конечная точка поиска по дате", example = "2023-01-15") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) @RequestParam(name = "to", required = false) LocalDate to diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/ConditionProvider.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/ConditionProvider.java index a33be2274..f99e76c6b 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/ConditionProvider.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/ConditionProvider.java @@ -61,6 +61,8 @@ public class ConditionProvider { //add boundary conditions? log.warn("destination '{}' zero predicates found", destination); result = pb.alwaysTrue(); + } else if (predicates.size() == 1) { + result = predicates.iterator().next(); } else { result = pb.and(predicates.toArray(new ImdgPredicate[0])); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/ClearingDateFromCondition.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/ClearingDateFromCondition.java new file mode 100644 index 000000000..461bb3e1c --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/ClearingDateFromCondition.java @@ -0,0 +1,25 @@ +package ru.spcex.clearing.backendapi.controller.queue.history.condition.specific; + +import ru.spcex.clearing.backendapi.controller.queue.history.condition.IHistoryCondition; +import ru.spcex.clearing.backendapi.controller.request.cud.history.HistoryRequest; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; + +import java.util.Optional; + +public class ClearingDateFromCondition implements IHistoryCondition { + + private final ImdgPredicateBuilder pb; + + public ClearingDateFromCondition(ImdgPredicateBuilder pb) { + this.pb = pb; + } + + @Override + public Optional condition(HistoryRequest req) { + if (req.getFrom() != null) { + return Optional.ofNullable(pb.greatEqual("clearingDate", req.getFrom())); + } + return Optional.empty(); + } +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/ClearingDateToCondition.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/ClearingDateToCondition.java new file mode 100644 index 000000000..e7e70c4c7 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/ClearingDateToCondition.java @@ -0,0 +1,25 @@ +package ru.spcex.clearing.backendapi.controller.queue.history.condition.specific; + +import ru.spcex.clearing.backendapi.controller.queue.history.condition.IHistoryCondition; +import ru.spcex.clearing.backendapi.controller.request.cud.history.HistoryRequest; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; + +import java.util.Optional; + +public class ClearingDateToCondition implements IHistoryCondition { + + private final ImdgPredicateBuilder pb; + + public ClearingDateToCondition(ImdgPredicateBuilder pb) { + this.pb = pb; + } + + @Override + public Optional condition(HistoryRequest req) { + if (req.getTo() != null) { + return Optional.ofNullable(pb.lessEqual("clearingDate", req.getTo())); + } + return Optional.empty(); + } +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/CreatedFromCondition.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/CreatedFromCondition.java index 1198f8e8c..6c2eca4ab 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/CreatedFromCondition.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/CreatedFromCondition.java @@ -19,7 +19,7 @@ public class CreatedFromCondition implements IHistoryCondition { @Override public Optional condition(HistoryRequest req) { if (req.getFrom() != null) { - pb.greatEqual("created", TimeUtil.localDateToInstant(req.getFrom())); + return Optional.of(pb.greatEqual("created", TimeUtil.localDateToInstant(req.getFrom()))); } return Optional.empty(); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/CreatedToCondition.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/CreatedToCondition.java index 65814d39b..c71447b54 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/CreatedToCondition.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/CreatedToCondition.java @@ -19,7 +19,7 @@ public class CreatedToCondition implements IHistoryCondition { @Override public Optional condition(HistoryRequest req) { if (req.getTo() != null) { - pb.lessEqual("created", TimeUtil.localDateToInstant(req.getTo())); + return Optional.of(pb.lessEqual("created", TimeUtil.localDateToInstant(req.getTo()))); } return Optional.empty(); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java index 183b1eda5..dcc6f5fee 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/StateLoaderImpl.java @@ -89,7 +89,7 @@ public class StateLoaderImpl implements IStateLoader { String mapName, Class clazz, ImdgPredicate conditions) { - Imdg imdgSearch = getHistImdg(searchMapName, clazz); + Imdg imdgSearch = getHistImdg(searchMapName, SpcexObjectBase.class); Imdg imdgHistory = getHistImdg(mapName, clazz); Collection ids = imdgSearch.getCollectionIdsByPredicate(conditions); return ids.stream()