diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilderCommon.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilderCommon.java index 7ad6e47a5..f0af0034d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilderCommon.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilderCommon.java @@ -2,11 +2,11 @@ package ru.spcex.clearing.reports.builders.bp; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.execution.ExecutionFond; -import ru.clearing.classes.statics.data.misc.STrades; import ru.clearing.classes.statics.data.misc.Session; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.builders.CSVReportBuilder; import ru.spcex.clearing.reports.builders.bean.ExecutedDealReport; +import ru.spcex.clearing.reports.config.settings.ReportsServiceSettings; import ru.spcex.platform.enumeration.ReportBuilderType; import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; @@ -14,29 +14,23 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collection; import java.util.List; public abstract class ExecutedDealReportBuilderCommon

extends CSVReportBuilder { - protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); protected final Imdg executionFondImdg; protected final Imdg sessionImdg; - private final Imdg companyImdg; - private final Imdg sTradesImdg; + protected final Imdg companyImdg; + protected final ReportsServiceSettings reportsServiceSettings; - private final String[] headers = { - "securityId", "tradeNo", "tradeDate", "tradeTime", - "settleDate", "settleCode", "price", "quanity", "value" - }; private List lines = null; - public ExecutedDealReportBuilderCommon(ImdgProvider imdgProvider) { + public ExecutedDealReportBuilderCommon(ImdgProvider imdgProvider, ReportsServiceSettings reportsServiceSettings) { this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class); + this.reportsServiceSettings = reportsServiceSettings; } @Override diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_1.java index 7f434dd7a..6683d6656 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_1.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.builders.bp; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.builders.SessionIdParam; +import ru.spcex.clearing.reports.config.settings.ReportsServiceSettings; import ru.spcex.platform.enumeration.CoverageStatus; import ru.spcex.platform.enumeration.MoneyFlowSide; import ru.spcex.platform.enumeration.ReportKeys; @@ -16,8 +17,9 @@ import java.util.Collection; @Component public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuilderCommon { - public ExecutedDealReportBuilder_INFTYPE_1(ImdgProvider imdgProvider) { - super(imdgProvider); + public ExecutedDealReportBuilder_INFTYPE_1(ImdgProvider imdgProvider, + ReportsServiceSettings reportsServiceSettings) { + super(imdgProvider, reportsServiceSettings); } @Override @@ -42,7 +44,8 @@ public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuild pb.equals("side", Side.SELL.getKey()), pb.equals("side", MoneyFlowSide.SELL.getKey()) ), - pb.equals("coverageStatus", CoverageStatus.ALWD) + pb.equals("coverageStatus", CoverageStatus.ALWD), + pb.in("market", reportsServiceSettings.getBfxClassCodes().toArray(new String[0])) ) ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_2.java index cfafe2469..18a61c9f6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_2.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.builders.bp; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.builders.SessionIdParam; +import ru.spcex.clearing.reports.config.settings.ReportsServiceSettings; import ru.spcex.platform.enumeration.CoverageStatus; import ru.spcex.platform.enumeration.MoneyFlowSide; import ru.spcex.platform.enumeration.ReportKeys; @@ -16,8 +17,9 @@ import java.util.Collection; @Component public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuilderCommon { - public ExecutedDealReportBuilder_INFTYPE_2(ImdgProvider imdgProvider) { - super(imdgProvider); + public ExecutedDealReportBuilder_INFTYPE_2(ImdgProvider imdgProvider, + ReportsServiceSettings reportsServiceSettings) { + super(imdgProvider, reportsServiceSettings); } @Override @@ -42,7 +44,8 @@ public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuild pb.equals("side", Side.SELL.getKey()), pb.equals("side", MoneyFlowSide.SELL.getKey()) ), - pb.equals("coverageStatus", CoverageStatus.ALWD) + pb.equals("coverageStatus", CoverageStatus.ALWD), + pb.in("market", reportsServiceSettings.getBfxClassCodes().toArray(new String[0])) ) ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_3.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_3.java index 6fea5fd00..353ed7aac 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_3.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_3.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.builders.bp; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.builders.SessionIdParam; +import ru.spcex.clearing.reports.config.settings.ReportsServiceSettings; import ru.spcex.platform.enumeration.MoneyFlowSide; import ru.spcex.platform.enumeration.ReportKeys; import ru.spcex.platform.enumeration.Side; @@ -15,8 +16,9 @@ import java.util.Collection; @Component public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuilderCommon { - public ExecutedDealReportBuilder_INFTYPE_3(ImdgProvider imdgProvider) { - super(imdgProvider); + public ExecutedDealReportBuilder_INFTYPE_3(ImdgProvider imdgProvider, + ReportsServiceSettings reportsServiceSettings) { + super(imdgProvider, reportsServiceSettings); } @Override @@ -38,7 +40,8 @@ public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuild pb.or( pb.equals("side", Side.SELL.getKey()), pb.equals("side", MoneyFlowSide.SELL.getKey()) - ) + ), + pb.in("market", reportsServiceSettings.getBfxClassCodes().toArray(new String[0])) ) ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_4.java index 236f33ab9..708879772 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_4.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/ExecutedDealReportBuilder_INFTYPE_4.java @@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.builders.bp; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.builders.SessionIdParam; +import ru.spcex.clearing.reports.config.settings.ReportsServiceSettings; import ru.spcex.platform.enumeration.Allowed; import ru.spcex.platform.enumeration.MoneyFlowSide; import ru.spcex.platform.enumeration.ReportKeys; @@ -16,8 +17,9 @@ import java.util.Collection; @Component public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuilderCommon { - public ExecutedDealReportBuilder_INFTYPE_4(ImdgProvider imdgProvider) { - super(imdgProvider); + public ExecutedDealReportBuilder_INFTYPE_4(ImdgProvider imdgProvider, + ReportsServiceSettings reportsServiceSettings) { + super(imdgProvider, reportsServiceSettings); } @Override @@ -40,7 +42,8 @@ public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuild pb.or( pb.equals("side", Side.SELL.getKey()), pb.equals("side", MoneyFlowSide.SELL.getKey()) - ) + ), + pb.in("market", reportsServiceSettings.getBfxClassCodes().toArray(new String[0])) ) ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/UnfulfilledDealReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/UnfulfilledDealReportBuilder.java index 5a358fad3..d7a2dac33 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/UnfulfilledDealReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/bp/UnfulfilledDealReportBuilder.java @@ -3,12 +3,11 @@ package ru.spcex.clearing.reports.builders.bp; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.execution.ExecutionFond; -import ru.clearing.classes.statics.data.misc.STrades; -import ru.clearing.classes.statics.data.misc.Session; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.builders.CSVReportBuilder; import ru.spcex.clearing.reports.builders.SessionIdParam; import ru.spcex.clearing.reports.builders.bean.UnfulfilledDealReport; +import ru.spcex.clearing.reports.config.settings.ReportsServiceSettings; import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -23,14 +22,12 @@ import java.util.List; public class UnfulfilledDealReportBuilder extends CSVReportBuilder { private final Imdg executionFondImdg; private final Imdg companyImdg; - private final Imdg sTradesImdg; - private final Imdg sessionImdg; + private final ReportsServiceSettings reportsServiceSettings; - public UnfulfilledDealReportBuilder(ImdgProvider imdgProvider) { + public UnfulfilledDealReportBuilder(ImdgProvider imdgProvider, ReportsServiceSettings reportsServiceSettings) { + this.reportsServiceSettings = reportsServiceSettings; executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); - sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class); - sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); } private List rows = null; @@ -69,7 +66,8 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate); log.debug("Found {} ExecutionFond by query: {}", executionFonds.size(), predicate); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/settings/ReportsServiceSettings.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/settings/ReportsServiceSettings.java index 1583c3774..2414d091c 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/settings/ReportsServiceSettings.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/settings/ReportsServiceSettings.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.reports.config.settings; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; @@ -7,6 +8,8 @@ import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings; import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; +import java.util.List; + @Component @PropertySource("file:${spring.config.location}/application.properties") @ConfigurationProperties("reports-service") @@ -17,6 +20,10 @@ public class ReportsServiceSettings { private Store reportsStore; private Store notificationsStore; + @Value("#{'${reports-service.reports.bfx-class-codes}'.split('\\s*,\\s*')}") + private List bfxClassCodes; + + public HazelcastClientParams getHazelcast() { return hazelcast; } @@ -56,4 +63,12 @@ public class ReportsServiceSettings { public void setNotificationsStore(Store notificationsStore) { this.notificationsStore = notificationsStore; } + + public List getBfxClassCodes() { + return bfxClassCodes; + } + + public void setBfxClassCodes(List bfxClassCodes) { + this.bfxClassCodes = bfxClassCodes; + } } diff --git a/clearing-parent/reports-service/src/main/resources/application.properties b/clearing-parent/reports-service/src/main/resources/application.properties index 93625597f..1cc28acc5 100644 --- a/clearing-parent/reports-service/src/main/resources/application.properties +++ b/clearing-parent/reports-service/src/main/resources/application.properties @@ -32,3 +32,5 @@ reports-service.notifications-store.password=password reports-service.notifications-store.server-ip=10.230.238.53 reports-service.notifications-store.server-port=2222 reports-service.notifications-store.delete-after-send=true + +reports-service.reports.bfx-class-codes=BKVC,SKVC,UKVC,NKVC,DKVC,BMVC,SMVC,UMVC,DMVC,MMVC,BMFC,SMFC,UMFC,DMFC,MMFC,BMMC,SMMC,UMMC,DMMC,MMMC,BMIC,SMIC,UMIC,DMIC,MMIC diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java index 301c66786..f7b2f046c 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java @@ -31,6 +31,7 @@ import ru.spcex.clearing.reports.config.BeanConfiguration; import ru.spcex.clearing.reports.config.ReportBuildersConfig; import ru.spcex.clearing.reports.config.SFTPTestConfig; import ru.spcex.clearing.reports.config.TestConfig; +import ru.spcex.clearing.reports.config.settings.ReportsServiceSettings; import ru.spcex.clearing.reports.config.validation.ValidationConfig; import ru.spcex.clearing.test.TestUtils; import ru.spcex.clearing.test.config.ImdgTestConfig; @@ -157,6 +158,9 @@ public class ReportServiceTest_BP { @Qualifier("mockProducer") private Producer producer; + @Autowired + private ReportsServiceSettings reportsServiceSettings; + private static int reportRequestCnt = 0; private static int reportRequestWithSessionIdCnt = 0; private static int reportRequestWithSessionIdListCnt = 0; @@ -195,6 +199,7 @@ public class ReportServiceTest_BP { testExecutionFond.setTradingDate(LocalDate.now().minus(10, ChronoUnit.DAYS)); testExecutionFond.setSettlementDate(LocalDate.now()); testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey()); + testExecutionFond.setMarket("BKVC"); executionFondImdg.update(testExecutionFond); String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); @@ -247,6 +252,7 @@ public class ReportServiceTest_BP { testExecutionFond.setTradingDate(LocalDate.now()); testExecutionFond.setSettlementDate(LocalDate.now()); testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey()); + testExecutionFond.setMarket("SKVC"); executionFondImdg.update(testExecutionFond); String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); @@ -296,6 +302,7 @@ public class ReportServiceTest_BP { testExecutionFond.setSettlementDate(LocalDate.now().plus(10, ChronoUnit.DAYS)); testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS)); testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey()); + testExecutionFond.setMarket("UKVC"); executionFondImdg.update(testExecutionFond); String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); @@ -346,6 +353,7 @@ public class ReportServiceTest_BP { testExecutionFond.setSettlementDate(LocalDate.now()); testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS)); testExecutionFond.setCoverageStatus(Allowed.DENIED.getKey()); + testExecutionFond.setMarket("NKVC"); executionFondImdg.update(testExecutionFond); String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); @@ -390,6 +398,7 @@ public class ReportServiceTest_BP { testExecutionFond.setSessionId(TEST_SESSION_ID_3); testExecutionFond.setCoverageStatus(Allowed.DENIED.getKey()); + testExecutionFond.setMarket("DKVC"); executionFondImdg.update(testExecutionFond); final String oldSTradeSettleCode = testSTrade.getSettleCode(); @@ -468,6 +477,8 @@ public class ReportServiceTest_BP { private void init() { ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId(); + reportsServiceSettings.setBfxClassCodes(List.of("BKVC", "SKVC", "UKVC", "NKVC", "DKVC")); + Long TEST_EXECUTION_FOND_ID = 888L; testExecutionFond.setId(TEST_EXECUTION_FOND_ID); Long TEST_EXCHANGE_EXECUTION_ID_1 = 777L;