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 ff53063d6..d75397db0 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,10 +4,7 @@ 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.backendapi.controller.queue.history.condition.specific.*; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -32,9 +29,17 @@ public class HistoryConfig { @Bean public List histSubscriptions() { List hst = new LinkedList<>(); + hst.add(executionDeposit()); + hst.add(executionFond()); + hst.add(depoBalanceRegister()); hst.add(moneyBalanceRegister()); hst.add(admittedLiabilitiesRegister()); + hst.add(coveredLiabilitiesRegister()); hst.add(moneyPaymentInstructionRegister()); + hst.add(depoPaymentInstructionRegister()); + hst.add(excludeLiabilitiesRegister()); + hst.add(liabilitiesRegister()); + hst.add(executionRegister()); return hst; } @@ -50,6 +55,54 @@ public class HistoryConfig { return sbscr; } + private HistorySubscription depoBalanceRegister() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("depo-balance-registers"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchDepoBalanceRegister); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_DepoBalanceRegister); + sbscr.setConditions(List.of( + new CreatedFromCondition(pb), + new CreatedToCondition(pb) + )); + return sbscr; + } + + private HistorySubscription depoPaymentInstructionRegister() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("depo-payment-instruction-registers"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchDepoPaymentInstructionRegister); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_DepoPaymentInstructionRegister); + sbscr.setConditions(List.of( + new CreatedFromCondition(pb), + new CreatedToCondition(pb) + )); + return sbscr; + } + + private HistorySubscription excludeLiabilitiesRegister() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("exclude-liabilities-registers"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchExcludeLiabilitiesRegister); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_ExcludeLiabilitiesRegister); + sbscr.setConditions(List.of( + new CreatedFromCondition(pb), + new CreatedToCondition(pb) + )); + return sbscr; + } + + private HistorySubscription liabilitiesRegister() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("liabilities-registers"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchLiabilitiesRegister); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_LiabilitiesRegister); + sbscr.setConditions(List.of( + new CreatedFromCondition(pb), + new CreatedToCondition(pb) + )); + return sbscr; + } + private HistorySubscription admittedLiabilitiesRegister() { HistorySubscription sbscr = new HistorySubscription(); sbscr.setDestination("admitted-liabilities-registers"); @@ -62,6 +115,18 @@ public class HistoryConfig { return sbscr; } + private HistorySubscription executionRegister() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("execution-registers"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchExecutionRegister); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_ExecutionRegister); + 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"); @@ -73,4 +138,40 @@ public class HistoryConfig { )); return sbscr; } + + private HistorySubscription coveredLiabilitiesRegister() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("covered-liabilities-registers"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchCoveredLiabilitiesRegister); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_CoveredLiabilitiesRegister); + sbscr.setConditions(List.of( + new ClearingDateFromCondition(pb), + new ClearingDateToCondition(pb) + )); + return sbscr; + } + + private HistorySubscription executionDeposit() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("execution-deposits"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchExecutionDeposit); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_ExecutionDeposit); + sbscr.setConditions(List.of( + new TradingDateFromCondition(pb), + new TradingDateToCondition(pb) + )); + return sbscr; + } + + private HistorySubscription executionFond() { + HistorySubscription sbscr = new HistorySubscription(); + sbscr.setDestination("execution-fonds"); + sbscr.setSearchProxyMapName(IMDGDistributedNames.Map_SearchExecutionFond); + sbscr.setFullHistoryMapName(IMDGDistributedNames.Map_ExecutionFond); + sbscr.setConditions(List.of( + new TradingDateFromCondition(pb), + new TradingDateToCondition(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 9659a9d76..707c53db8 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 @@ -46,7 +46,7 @@ public class HistController { @ApiOperation(value = "Get history") @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) - @RequestMapping(path = "/all", method = RequestMethod.POST) + @RequestMapping(path = "/all", method = RequestMethod.GET) @ResponseBody public CommonGetAllResponse getHistory( @ApiParam(value = "destination сущности по которой запрашивается история", example = "money-balance-registers", required = true) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/TradingDateFromCondition.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/TradingDateFromCondition.java new file mode 100644 index 000000000..081b0a8dc --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/TradingDateFromCondition.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 TradingDateFromCondition implements IHistoryCondition { + + private final ImdgPredicateBuilder pb; + + public TradingDateFromCondition(ImdgPredicateBuilder pb) { + this.pb = pb; + } + + @Override + public Optional condition(HistoryRequest req) { + if (req.getFrom() != null) { + return Optional.ofNullable(pb.greatEqual("tradingDate", req.getFrom())); + } + return Optional.empty(); + } +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/TradingDateToCondition.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/TradingDateToCondition.java new file mode 100644 index 000000000..50f086589 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/specific/TradingDateToCondition.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 TradingDateToCondition implements IHistoryCondition { + + private final ImdgPredicateBuilder pb; + + public TradingDateToCondition(ImdgPredicateBuilder pb) { + this.pb = pb; + } + + @Override + public Optional condition(HistoryRequest req) { + if (req.getTo() != null) { + return Optional.ofNullable(pb.lessEqual("tradingDate", req.getTo())); + } + return Optional.empty(); + } +} diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index a6e0603a9..8c896a1ca 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1,6 +1,6 @@ - + @@ -1339,7 +1339,7 @@
- + @@ -1375,7 +1375,7 @@ - + @@ -1410,7 +1410,7 @@ - + @@ -1420,7 +1420,7 @@ - + @@ -1435,7 +1435,7 @@ - + @@ -1449,7 +1449,7 @@ - + @@ -1463,7 +1463,7 @@ - + @@ -1475,7 +1475,7 @@ - + @@ -1505,7 +1505,7 @@ - + @@ -1523,7 +1523,7 @@ - + diff --git a/clearing-parent/imdg-hist/pom.xml b/clearing-parent/imdg-hist/pom.xml index 1653d470a..4ad7a8341 100644 --- a/clearing-parent/imdg-hist/pom.xml +++ b/clearing-parent/imdg-hist/pom.xml @@ -147,8 +147,6 @@ - true - exec ${project.artifactId} diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxyDepoBalanceRegister.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxyDepoBalanceRegister.java new file mode 100644 index 000000000..98f8e5b10 --- /dev/null +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxyDepoBalanceRegister.java @@ -0,0 +1,19 @@ +package ru.spcex.clearing.historyimdg.index; + +import ru.spcex.clearing.historyimdg.index.field.SearchWithCreated; + +import java.time.Instant; + +public class SearchProxyDepoBalanceRegister extends SearchProxy implements SearchWithCreated { + private Instant created; + + @Override + public Instant getCreated() { + return created; + } + + @Override + public void setCreated(Instant created) { + this.created = created; + } +} diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchDepoBalanceRegisterMapStore.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchDepoBalanceRegisterMapStore.java new file mode 100644 index 000000000..0358b1959 --- /dev/null +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchDepoBalanceRegisterMapStore.java @@ -0,0 +1,49 @@ +package ru.spcex.clearing.historyimdg.mapstores; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; +import ru.spcex.clearing.historyimdg.index.SearchProxyDepoBalanceRegister; +import ru.spcex.clearing.imdg.IMDGDistributedNames; + +import java.util.Collection; +import java.util.Collections; +import java.util.Map; + +@Component +public class SearchDepoBalanceRegisterMapStore extends AbstractSliceMapLoader { + public SearchDepoBalanceRegisterMapStore(JdbcTemplate jdbcTemplate) { + super(jdbcTemplate); + } + + @Override + protected String getTableName() { + return "depo_balance_register"; + } + + @Override + protected String fieldOfDay() { + return "CREATED_AT"; + } + + @Override + public Collection load(Collection keys) { + Map> paramMap = Collections.singletonMap("ids", keys); + return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, + (rs, rowNum) -> { + SearchProxyDepoBalanceRegister proxyRegistry = new SearchProxyDepoBalanceRegister(); + proxyRegistry.setId(rs.getObject("id", Long.class)); + proxyRegistry.setCreated(getInstantFromTimestamp(rs, "CREATED_AT")); + return proxyRegistry; + }); + } + + @Override + public String getMapName() { + return IMDGDistributedNames.Map_SearchDepoBalanceRegister; + } + + @Override + public String[] getIndexingField() { + return new String[]{"created"}; + } +} diff --git a/clearing-parent/imdg-hist/src/main/resources/logback.xml b/clearing-parent/imdg-hist/src/main/resources/logback.xml index bb03fe824..fce49ac69 100644 --- a/clearing-parent/imdg-hist/src/main/resources/logback.xml +++ b/clearing-parent/imdg-hist/src/main/resources/logback.xml @@ -8,7 +8,7 @@ - ./logs/imdg.log + ./logs/imdg-hist.log %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %class{0}:%msg%n @@ -16,7 +16,7 @@ - ./logs/imdg.%i.log + ./logs/imdg-hist.%i.log 1 10 diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java index 0047bd791..6e8744094 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java @@ -198,6 +198,7 @@ public final class IMDGDistributedNames { public static final String Map_SearchExecutionDeposit = "Map_SearchDeposit"; public static final String Map_SearchExecutionFond = "Map_SearchExecutionFond"; public static final String Map_SearchMoneyBalanceRegister = "Map_SearchMoneyBalanceRegister"; + public static final String Map_SearchDepoBalanceRegister = "Map_SearchDepoBalanceRegister"; public static final String Map_SearchAdmittedLiabilitiesRegister = "Map_SearchAdmittedLiabilitiesRegister"; public static final String Map_SearchCoveredLiabilitiesRegister = "Map_SearchCoveredLiabilitiesRegister"; public static final String Map_SearchMoneyPaymentInstructionRegister = "Map_SearchMoneyPaymentInstructionRegister"; diff --git a/pom.xml b/pom.xml index 758139362..68bfb7d6b 100644 --- a/pom.xml +++ b/pom.xml @@ -35,6 +35,7 @@ ${folder_root_clearing}/clearing-parent/securities-service ${folder_root_clearing}/clearing-parent/imdg + ${folder_root_clearing}/clearing-parent/imdg-hist ${folder_root_clearing}/clearing-parent/dbf-exporter ${folder_root_clearing}/clearing-parent/dbf-importer ${folder_root_clearing}/clearing-parent/lim-exporter diff --git a/z-distr/pom.xml b/z-distr/pom.xml index 1289682bf..02101ecef 100644 --- a/z-distr/pom.xml +++ b/z-distr/pom.xml @@ -158,6 +158,26 @@ + + copy-imdg-hist-bin + prepare-package + + copy + + + + + ${folder_root_clearing_imdg_hist}/target/imdg-hist.jar + ${folder.clearing.distr.bin}/imdg-hist.jar + + + ${folder_root_clearing_imdg_hist}/src/main/resources/application.properties + ${folder.clearing.distr.settings}/imdg-hist/application.properties + + + + + copy-dbf-exporter-bin prepare-package diff --git a/z-distr/src/main/resources/distr/sh/kill_all.sh b/z-distr/src/main/resources/distr/sh/kill_all.sh index 0b3751ff7..8af22de48 100644 --- a/z-distr/src/main/resources/distr/sh/kill_all.sh +++ b/z-distr/src/main/resources/distr/sh/kill_all.sh @@ -11,6 +11,7 @@ kill -9 $(ps -ef | grep java | grep swt-exporter.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep dbf-importer.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep trade-importer.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep imdg.jar | awk '{print $2}') +kill -9 $(ps -ef | grep java | grep imdg-hist.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep securities-service.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep utility-service.jar | awk '{print $2}') kill -9 $(ps -ef | grep java | grep scheduler-service.jar | awk '{print $2}') diff --git a/z-distr/src/main/resources/distr/sh/launch_all.sh b/z-distr/src/main/resources/distr/sh/launch_all.sh index 144c81fa2..91b90e3e9 100644 --- a/z-distr/src/main/resources/distr/sh/launch_all.sh +++ b/z-distr/src/main/resources/distr/sh/launch_all.sh @@ -1,6 +1,7 @@ #!/bin/bash cd /opt/mfd/clearing/bin /opt/mfd/clearing/bin/imdg.sh +/opt/mfd/clearing/bin/imdg-hist.sh /opt/mfd/clearing/bin/account-service.sh /opt/mfd/clearing/bin/backend-api.sh /opt/mfd/clearing/bin/balance-service.sh