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;