This commit is contained in:
parent
c10e41b29e
commit
a9ef98f4da
9 changed files with 63 additions and 31 deletions
|
|
@ -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<P> extends CSVReportBuilder<P, ExecutedDealReport> {
|
||||
protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
|
||||
protected final Imdg<ExecutionFond> executionFondImdg;
|
||||
protected final Imdg<Session> sessionImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<STrades> sTradesImdg;
|
||||
protected final Imdg<Company> companyImdg;
|
||||
protected final ReportsServiceSettings reportsServiceSettings;
|
||||
|
||||
private final String[] headers = {
|
||||
"securityId", "tradeNo", "tradeDate", "tradeTime",
|
||||
"settleDate", "settleCode", "price", "quanity", "value"
|
||||
};
|
||||
private List<ExecutedDealReport> 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
|
||||
|
|
|
|||
|
|
@ -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<SessionIdParam> {
|
||||
|
||||
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]))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<SessionIdParam> {
|
||||
|
||||
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]))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<SessionIdParam> {
|
||||
|
||||
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]))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<SessionIdParam> {
|
||||
|
||||
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]))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<SessionIdParam, UnfulfilledDealReport> {
|
||||
private final Imdg<ExecutionFond> executionFondImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<STrades> sTradesImdg;
|
||||
private final Imdg<Session> 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<UnfulfilledDealReport> rows = null;
|
||||
|
|
@ -69,7 +66,8 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
|
|||
pb.or(
|
||||
pb.equals("side", Side.SELL.getKey()),
|
||||
pb.equals("side", MoneyFlowSide.SELL.getKey())
|
||||
)
|
||||
),
|
||||
pb.in("market", reportsServiceSettings.getBfxClassCodes().toArray(new String[0]))
|
||||
);
|
||||
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate);
|
||||
log.debug("Found {} ExecutionFond by query: {}", executionFonds.size(), predicate);
|
||||
|
|
|
|||
|
|
@ -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<String> bfxClassCodes;
|
||||
|
||||
|
||||
public HazelcastClientParams getHazelcast() {
|
||||
return hazelcast;
|
||||
}
|
||||
|
|
@ -56,4 +63,12 @@ public class ReportsServiceSettings {
|
|||
public void setNotificationsStore(Store notificationsStore) {
|
||||
this.notificationsStore = notificationsStore;
|
||||
}
|
||||
|
||||
public List<String> getBfxClassCodes() {
|
||||
return bfxClassCodes;
|
||||
}
|
||||
|
||||
public void setBfxClassCodes(List<String> bfxClassCodes) {
|
||||
this.bfxClassCodes = bfxClassCodes;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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<String, Object> 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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue