tests done
This commit is contained in:
parent
94ab971af1
commit
15abb8cbfa
29 changed files with 909 additions and 203 deletions
|
|
@ -8,39 +8,47 @@ import ru.spcex.platform.enumeration.ReportType;
|
|||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Configuration
|
||||
public class ReportBuildersConfig {
|
||||
@Bean("reportBuildersWithoutParams")
|
||||
public Map<ReportType, CSVReportBuilder<EmptyParams>> reportBuildersWithoutParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, CSVReportBuilder<EmptyParams>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.SUMMARY_LIABILITIES_CLAIMS, new SummaryLiabilitiesClaimsReportBuilder(imdgProvider));
|
||||
resultMap.put(ReportType.SUMMARY_MONEY_CHANGE, new SummaryMoneyChangeReportBuilder(imdgProvider));
|
||||
public Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, List<CSVReportBuilder<EmptyParams>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.SUMMARY_LIABILITIES_CLAIMS, List.of(new SummaryLiabilitiesClaimsReportBuilder(imdgProvider)));
|
||||
resultMap.put(ReportType.SUMMARY_MONEY_CHANGE, List.of(new SummaryMoneyChangeReportBuilder(imdgProvider)));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Bean("reportBuildersWithSessionIdParam")
|
||||
public Map<ReportType, CSVReportBuilder<SessionIdParam>> reportBuildersWithSessionIdParam(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, CSVReportBuilder<SessionIdParam>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.OPERATIONAL_LIABILITIES_CLAIMS, new OperationalLiabilitiesClaimsReportBuilder(imdgProvider));
|
||||
resultMap.put(ReportType.OPERATIONAL_MONEY_CHANGE, new OperationalMoneyChangeReportBuilder(imdgProvider));
|
||||
resultMap.put(ReportType.EXECUTED_DEAL_REPORT, new ExecutedDealReportBuilder(imdgProvider));
|
||||
resultMap.put(ReportType.UNFULFILLED_DEAL_REPORT, new UnfulfilledDealReportBuilder(imdgProvider));
|
||||
public Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.OPERATIONAL_LIABILITIES_CLAIMS, List.of(new OperationalLiabilitiesClaimsReportBuilder(imdgProvider)));
|
||||
resultMap.put(ReportType.OPERATIONAL_MONEY_CHANGE, List.of(new OperationalMoneyChangeReportBuilder(imdgProvider)));
|
||||
resultMap.put(ReportType.EXECUTED_DEAL_REPORT,
|
||||
List.of(
|
||||
new ExecutedDealReportBuilder_INFTYPE_1(imdgProvider),
|
||||
new ExecutedDealReportBuilder_INFTYPE_2(imdgProvider),
|
||||
new ExecutedDealReportBuilder_INFTYPE_3(imdgProvider),
|
||||
new ExecutedDealReportBuilder_INFTYPE_4(imdgProvider)
|
||||
)
|
||||
);
|
||||
resultMap.put(ReportType.UNFULFILLED_DEAL_REPORT, List.of(new UnfulfilledDealReportBuilder(imdgProvider)));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Bean("reportBuildersWithSessionIdListParam")
|
||||
public Map<ReportType, CSVReportBuilder<SessionIdListParams>> reportBuildersWithSessionIdListParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, CSVReportBuilder<SessionIdListParams>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.PERIOD_LIABILITIES_CLAIMS, new PeriodLiabilitiesClaimsReportBuilder(imdgProvider));
|
||||
public Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.PERIOD_LIABILITIES_CLAIMS, List.of(new PeriodLiabilitiesClaimsReportBuilder(imdgProvider)));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Bean("reportBuildersWithPeriodParams")
|
||||
public Map<ReportType, CSVReportBuilder<PeriodParams>> reportBuildersWithPeriodParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, CSVReportBuilder<PeriodParams>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.PERIOD_MONEY_CHANGE, new PeriodMoneyChangeReportBuilder(imdgProvider));
|
||||
public Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, List<CSVReportBuilder<PeriodParams>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.PERIOD_MONEY_CHANGE, List.of(new PeriodMoneyChangeReportBuilder(imdgProvider)));
|
||||
return resultMap;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public abstract class CSVReportBuilder<P> {
|
|||
/**
|
||||
* Тип отчета по {@link ReportType}
|
||||
*/
|
||||
protected abstract ReportType getReportType();
|
||||
public abstract ReportType getReportType();
|
||||
|
||||
/**
|
||||
* Формирование отчета на основе параметров
|
||||
|
|
|
|||
|
|
@ -5,24 +5,23 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
|||
import ru.clearing.classes.statics.data.misc.STrades;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.enumeration.Allowed;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class ExecutedDealReportBuilder extends CSVReportBuilder<SessionIdParam> {
|
||||
private final Imdg<ExecutionFond> executionFondImdg;
|
||||
public abstract class ExecutedDealReportBuilderCommon<T> extends CSVReportBuilder<T> {
|
||||
protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
|
||||
protected final Imdg<ExecutionFond> executionFondImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<STrades> sTradesImdg;
|
||||
|
||||
|
|
@ -32,7 +31,7 @@ public class ExecutedDealReportBuilder extends CSVReportBuilder<SessionIdParam>
|
|||
};
|
||||
private List<String[]> lines = null;
|
||||
|
||||
public ExecutedDealReportBuilder(ImdgProvider imdgProvider) {
|
||||
public ExecutedDealReportBuilderCommon(ImdgProvider imdgProvider) {
|
||||
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
|
||||
|
|
@ -49,23 +48,15 @@ public class ExecutedDealReportBuilder extends CSVReportBuilder<SessionIdParam>
|
|||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "executed_deal_report.%s".formatted(LocalDateTime.now());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReportType getReportType() {
|
||||
public ReportType getReportType() {
|
||||
return ReportType.EXECUTED_DEAL_REPORT;
|
||||
}
|
||||
|
||||
protected abstract Collection<ExecutionFond> getExecutionFondsForReport(T params);
|
||||
|
||||
@Override
|
||||
protected void collect(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
ImdgPredicate predicate = pb.and(
|
||||
pb.equals("sessionId", params.getSessionId()),
|
||||
pb.equals("coverageStatus", Allowed.DENIED.getKey())
|
||||
);
|
||||
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate);
|
||||
protected void collect(T params) {
|
||||
Collection<ExecutionFond> executionFonds = getExecutionFondsForReport(params);
|
||||
|
||||
lines = new ArrayList<>(executionFonds.size());
|
||||
for (ExecutionFond executionFond : executionFonds) {
|
||||
|
|
@ -82,7 +73,7 @@ public class ExecutedDealReportBuilder extends CSVReportBuilder<SessionIdParam>
|
|||
String securityId = String.valueOf(executionFond.getSecurityId());
|
||||
String tradeNo = String.valueOf(executionFond.getExchangeExecutionId());
|
||||
String tradeDate = dateFormatter.format(executionFond.getTradingDate());
|
||||
String tradeTime = dateFormatter.format(executionFond.getCreated());
|
||||
String tradeTime = dateFormatter.format(LocalDate.ofInstant(executionFond.getCreated(), ZoneId.systemDefault()));
|
||||
String settleDate = dateFormatter.format(executionFond.getSettlementDate());
|
||||
String settleCode = sTrade != null ? sTrade.getSettleCode() : "";
|
||||
String quantity = String.valueOf(executionFond.getQuantity());
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
||||
public ExecutedDealReportBuilder_INFTYPE_1(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "KS_BR_PFX64_INFTYPE_1_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.equals("sessionId", params.getSessionId()),
|
||||
pb.less("tradingDate", LocalDate.now()),
|
||||
pb.equals("settlementDate", LocalDate.now())
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
||||
public ExecutedDealReportBuilder_INFTYPE_2(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "KS_BR_PFX64_INFTYPE_2_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.equals("sessionId", params.getSessionId()),
|
||||
pb.equals("tradingDate", LocalDate.now()),
|
||||
pb.equals("settlementDate", LocalDate.now())
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
||||
public ExecutedDealReportBuilder_INFTYPE_3(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "KS_BR_PFX64_INFTYPE_3_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(pb.greater("settlementDate", LocalDate.now()));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package ru.spcex.clearing.reports.reports.bp;
|
||||
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
import ru.spcex.platform.enumeration.Allowed;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
||||
public ExecutedDealReportBuilder_INFTYPE_4(ImdgProvider imdgProvider) {
|
||||
super(imdgProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "KS_BR_PFX64_INFTYPE_4_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.equals("coverageStatus", Allowed.DENIED.getKey()),
|
||||
pb.equals("settlementDate", LocalDate.now())
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -11,9 +11,11 @@ import ru.spcex.platform.enumeration.InOutDirection;
|
|||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
|
@ -30,6 +32,7 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
|
|||
"account", "currency", "registry_code", "registry_name", "open_balance", "change_balance", "add_withdraw",
|
||||
"close_balance", "remarks", "add_sum", "add_time", "withdraw_sum", "withdraw_time"
|
||||
};
|
||||
|
||||
protected List<String[]> lines = null;
|
||||
|
||||
public MoneyChangeReportBuilder(ImdgProvider imdgProvider) {
|
||||
|
|
@ -54,13 +57,13 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
|
|||
|
||||
@Override
|
||||
protected void collect(P params) {
|
||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||
Collection<Registry> registries = getRegistryForReport(params);
|
||||
|
||||
Company clearingHouseCompany = companyImdg.getSingleObjectByID(1L);
|
||||
String clearingHouse = clearingHouseCompany.getFullName();
|
||||
|
||||
Instant now = Instant.now();
|
||||
LocalDate nowDate = LocalDate.now();
|
||||
LocalTime nowTime = LocalTime.now();
|
||||
lines = new ArrayList<>(registries.size());
|
||||
for (Registry registry : registries) {
|
||||
Company company = companyImdg.getSingleObjectByID(registry.getCompanyId());
|
||||
|
|
@ -71,13 +74,13 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
|
|||
PaymentInstruction paymentInstruction = paymentInstructionImdg.getSingleObjectByFieldValues(
|
||||
Map.of(
|
||||
"id", registry.getPaymentId(),
|
||||
"creditLegDirection", InOutDirection.out.getKey()
|
||||
"creditLeg_direction", InOutDirection.out.getKey()
|
||||
)
|
||||
);
|
||||
|
||||
String id = String.valueOf(registry.getId());
|
||||
String docDate = dateFormatter.format(now);
|
||||
String docTime = timeFormatter.format(now);
|
||||
String docDate = dateFormatter.format(nowDate);
|
||||
String docTime = timeFormatter.format(nowTime);
|
||||
String docName = "Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга";
|
||||
String docType = "KS_FIRMID_ASSETS";
|
||||
String firmId = String.valueOf(registry.getCompanyId());
|
||||
|
|
@ -93,9 +96,9 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
|
|||
String closeBalance = String.valueOf(registry.getCloseBalance());
|
||||
String remarks = "";
|
||||
String addSum = String.valueOf(registry.getCredit());
|
||||
String addTime = dateTimeFormatter.format(statement.getCreated());
|
||||
String addTime = dateTimeFormatter.format(LocalDateTime.ofInstant(statement.getCreated(), ZoneId.systemDefault()));
|
||||
String withdrawSum = String.valueOf(registry.getDebit());
|
||||
String withdrawTime = dateTimeFormatter.format(paymentInstruction.getPaymentDate());
|
||||
String withdrawTime = dateTimeFormatter.format(LocalDateTime.ofInstant(paymentInstruction.getPaymentDate(), ZoneId.systemDefault()));
|
||||
|
||||
int valueIdx = 0;
|
||||
String[] line = new String[getHeaders().length];
|
||||
|
|
@ -103,7 +106,6 @@ public abstract class MoneyChangeReportBuilder<P> extends CSVReportBuilder<P> {
|
|||
line[valueIdx++] = docDate;
|
||||
line[valueIdx++] = docTime;
|
||||
line[valueIdx++] = docName;
|
||||
line[valueIdx++] = docTime;
|
||||
line[valueIdx++] = docType;
|
||||
line[valueIdx++] = clearingHouse;
|
||||
line[valueIdx++] = firmId;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public class OperationalLiabilitiesClaimsReportBuilder extends LiabilitiesClaims
|
|||
}
|
||||
|
||||
@Override
|
||||
protected ReportType getReportType() {
|
||||
public ReportType getReportType() {
|
||||
return ReportType.OPERATIONAL_LIABILITIES_CLAIMS;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import ru.spcex.clearing.reports.reports.SessionIdParam;
|
|||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -23,11 +23,11 @@ public class OperationalMoneyChangeReportBuilder extends MoneyChangeReportBuilde
|
|||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "operational_money_change.%s".formatted(dateTimeFormatter.format(Instant.now()));
|
||||
return "operational_money_change.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReportType getReportType() {
|
||||
public ReportType getReportType() {
|
||||
return ReportType.OPERATIONAL_MONEY_CHANGE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import ru.spcex.clearing.reports.reports.SessionIdListParams;
|
|||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
|
|
@ -18,11 +18,11 @@ public class PeriodLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsRepor
|
|||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdListParams params) {
|
||||
return "period_liabilities_claims.%s".formatted(dateTimeFormatter.format(Instant.now()));
|
||||
return "period_liabilities_claims.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReportType getReportType() {
|
||||
public ReportType getReportType() {
|
||||
return ReportType.PERIOD_LIABILITIES_CLAIMS;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import ru.spcex.platform.enumeration.ReportType;
|
|||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<PeriodParams> {
|
||||
|
|
@ -31,12 +31,12 @@ public class PeriodMoneyChangeReportBuilder extends MoneyChangeReportBuilder<Per
|
|||
return "period_money_change.%s-%s.%s".formatted(
|
||||
dateFormatter.format(params.getStartDate()),
|
||||
dateFormatter.format(params.getEndDate()),
|
||||
dateTimeFormatter.format(Instant.now())
|
||||
dateTimeFormatter.format(LocalDateTime.now())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReportType getReportType() {
|
||||
public ReportType getReportType() {
|
||||
return ReportType.PERIOD_MONEY_CHANGE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import ru.spcex.clearing.reports.reports.EmptyParams;
|
|||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class SummaryLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsReportBuilder<EmptyParams> {
|
||||
|
|
@ -26,11 +26,11 @@ public class SummaryLiabilitiesClaimsReportBuilder extends LiabilitiesClaimsRepo
|
|||
|
||||
@Override
|
||||
protected String getReportFilename(EmptyParams params) {
|
||||
return "summary_money_change.%s".formatted(dateTimeFormatter.format(Instant.now()));
|
||||
return "summary_money_change.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReportType getReportType() {
|
||||
public ReportType getReportType() {
|
||||
return ReportType.SUMMARY_LIABILITIES_CLAIMS;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import ru.spcex.clearing.reports.reports.EmptyParams;
|
|||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<EmptyParams> {
|
||||
|
|
@ -20,11 +20,11 @@ public class SummaryMoneyChangeReportBuilder extends MoneyChangeReportBuilder<Em
|
|||
|
||||
@Override
|
||||
protected String getReportFilename(EmptyParams params) {
|
||||
return "summary_money_change.%s".formatted(dateTimeFormatter.format(Instant.now()));
|
||||
return "summary_money_change.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReportType getReportType() {
|
||||
public ReportType getReportType() {
|
||||
return ReportType.SUMMARY_MONEY_CHANGE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
|
|||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -26,7 +27,7 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
|
|||
private final String[] headers = {
|
||||
"id", "securityId", "tradeNo", "tradeDate", "settleCode"
|
||||
};
|
||||
private final List<String[]> lines = null;
|
||||
private List<String[]> lines = null;
|
||||
|
||||
public UnfulfilledDealReportBuilder(ImdgProvider imdgProvider) {
|
||||
executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
|
|
@ -46,11 +47,11 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
|
|||
|
||||
@Override
|
||||
protected String getReportFilename(SessionIdParam params) {
|
||||
return "unfulfilled_deal_report.%s".formatted(dateTimeFormatter.format(Instant.now()));
|
||||
return "unfulfilled_deal_report.%s".formatted(dateTimeFormatter.format(LocalDateTime.now()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReportType getReportType() {
|
||||
public ReportType getReportType() {
|
||||
return ReportType.UNFULFILLED_DEAL_REPORT;
|
||||
}
|
||||
|
||||
|
|
@ -80,6 +81,7 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
|
|||
String settleCode = sTrade != null ? sTrade.getClassCode() : null;
|
||||
|
||||
int valueIdx = 0;
|
||||
lines = new ArrayList<>(executionFonds.size());
|
||||
String[] line = new String[getHeaders().length];
|
||||
line[valueIdx++] = id;
|
||||
line[valueIdx++] = securityId;
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
|
|
@ -38,10 +40,10 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
private final Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator;
|
||||
private final Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator;
|
||||
private final Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator;
|
||||
private final Map<ReportType, CSVReportBuilder<EmptyParams>> reportBuildersWithoutParams;
|
||||
private final Map<ReportType, CSVReportBuilder<SessionIdParam>> reportBuildersWithSessionIdParam;
|
||||
private final Map<ReportType, CSVReportBuilder<SessionIdListParams>> reportBuildersWithSessionIdListParam;
|
||||
private final Map<ReportType, CSVReportBuilder<PeriodParams>> reportBuildersWithPeriodParams;
|
||||
private final Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams;
|
||||
private final Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam;
|
||||
private final Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam;
|
||||
private final Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams;
|
||||
|
||||
private final File outFolder;
|
||||
|
||||
|
|
@ -52,13 +54,13 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
RequestHelper requestHelper,
|
||||
ReportsServiceSettings reportsServiceSettings,
|
||||
@Qualifier("reportBuildersWithoutParams")
|
||||
Map<ReportType, CSVReportBuilder<EmptyParams>> reportBuildersWithoutParams,
|
||||
Map<ReportType, List<CSVReportBuilder<EmptyParams>>> reportBuildersWithoutParams,
|
||||
@Qualifier("reportBuildersWithSessionIdParam")
|
||||
Map<ReportType, CSVReportBuilder<SessionIdParam>> reportBuildersWithSessionIdParam,
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdParam>>> reportBuildersWithSessionIdParam,
|
||||
@Qualifier("reportBuildersWithSessionIdListParam")
|
||||
Map<ReportType, CSVReportBuilder<SessionIdListParams>> reportBuildersWithSessionIdListParam,
|
||||
Map<ReportType, List<CSVReportBuilder<SessionIdListParams>>> reportBuildersWithSessionIdListParam,
|
||||
@Qualifier("reportBuildersWithPeriodParams")
|
||||
Map<ReportType, CSVReportBuilder<PeriodParams>> reportBuildersWithPeriodParams,
|
||||
Map<ReportType, List<CSVReportBuilder<PeriodParams>>> reportBuildersWithPeriodParams,
|
||||
@Qualifier("reportRequestValidator")
|
||||
Function<ReportRequest, IValidator> reportRequestValidator,
|
||||
@Qualifier("reportRequestWithSessionIdValidator")
|
||||
|
|
@ -111,14 +113,24 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
ReportRequest req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
CSVReportBuilder<EmptyParams> builder = reportBuildersWithoutParams.get(
|
||||
List<CSVReportBuilder<EmptyParams>> builders = reportBuildersWithoutParams.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
File outFile = builder.createReport(new EmptyParams(), outFolder);
|
||||
if (outFile == null) {
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
for (CSVReportBuilder<EmptyParams> builder : builders) {
|
||||
File outFile = builder.createReport(new EmptyParams(), outFolder);
|
||||
if (outFile == null) continue;
|
||||
outFilenames.add(outFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
|
||||
int outFilesCnt = outFilenames.size();
|
||||
if (outFilesCnt == 0) {
|
||||
log.error("Create report {} failed, see log", req.getReportId());
|
||||
} else if (outFilesCnt < builders.size()) {
|
||||
log.error("Create some error for {} failed, see log", req.getReportId());
|
||||
} else {
|
||||
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -133,14 +145,26 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
ReportRequestWithSessionId req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
CSVReportBuilder<SessionIdParam> builder = reportBuildersWithSessionIdParam.get(
|
||||
List<CSVReportBuilder<SessionIdParam>> builders = reportBuildersWithSessionIdParam.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
SessionIdParam sessionIdParam = new SessionIdParam();
|
||||
sessionIdParam.setSessionId(req.getSessionId());
|
||||
File outFile = builder.createReport(sessionIdParam, outFolder);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
for (CSVReportBuilder<SessionIdParam> builder : builders) {
|
||||
SessionIdParam sessionIdParam = new SessionIdParam();
|
||||
sessionIdParam.setSessionId(req.getSessionId());
|
||||
File outFile = builder.createReport(sessionIdParam, outFolder);
|
||||
if (outFile == null) continue;
|
||||
outFilenames.add(outFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
|
||||
int outFilesCnt = outFilenames.size();
|
||||
if (outFilesCnt == 0) {
|
||||
log.error("Create report {} failed, see log", req.getReportId());
|
||||
} else if (outFilesCnt < builders.size()) {
|
||||
log.error("Create some error for {} failed, see log", req.getReportId());
|
||||
} else {
|
||||
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -155,14 +179,26 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
ReportRequestWithSessionIdList req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
CSVReportBuilder<SessionIdListParams> builder = reportBuildersWithSessionIdListParam.get(
|
||||
List<CSVReportBuilder<SessionIdListParams>> builders = reportBuildersWithSessionIdListParam.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
SessionIdListParams sessionIdListParams = new SessionIdListParams();
|
||||
sessionIdListParams.setSessionIdList(req.getSessionIdList());
|
||||
File outFile = builder.createReport(sessionIdListParams, outFolder);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
for (CSVReportBuilder<SessionIdListParams> builder : builders) {
|
||||
SessionIdListParams sessionIdListParams = new SessionIdListParams();
|
||||
sessionIdListParams.setSessionIdList(req.getSessionIdList());
|
||||
File outFile = builder.createReport(sessionIdListParams, outFolder);
|
||||
if (outFile == null) continue;
|
||||
outFilenames.add(outFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
|
||||
int outFilesCnt = outFilenames.size();
|
||||
if (outFilesCnt == 0) {
|
||||
log.error("Create report {} failed, see log", req.getReportId());
|
||||
} else if (outFilesCnt < builders.size()) {
|
||||
log.error("Create some error for {} failed, see log", req.getReportId());
|
||||
} else {
|
||||
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -177,15 +213,27 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
ReportRequestWithPeriod req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
CSVReportBuilder<PeriodParams> builder = reportBuildersWithPeriodParams.get(
|
||||
List<CSVReportBuilder<PeriodParams>> builders = reportBuildersWithPeriodParams.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
PeriodParams periodParams = new PeriodParams();
|
||||
periodParams.setStartDate(req.getStartDate());
|
||||
periodParams.setEndDate(req.getEndDate());
|
||||
File outFile = builder.createReport(periodParams, outFolder);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
for (CSVReportBuilder<PeriodParams> builder : builders) {
|
||||
PeriodParams periodParams = new PeriodParams();
|
||||
periodParams.setStartDate(req.getStartDate());
|
||||
periodParams.setEndDate(req.getEndDate());
|
||||
File outFile = builder.createReport(periodParams, outFolder);
|
||||
if (outFile == null) continue;
|
||||
outFilenames.add(outFile.getAbsolutePath());
|
||||
}
|
||||
|
||||
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
|
||||
int outFilesCnt = outFilenames.size();
|
||||
if (outFilesCnt == 0) {
|
||||
log.error("Create report {} failed, see log", req.getReportId());
|
||||
} else if (outFilesCnt < builders.size()) {
|
||||
log.error("Create some error for {} failed, see log", req.getReportId());
|
||||
} else {
|
||||
log.debug("Reports {} successfully created. Output files: {}", req.getReportId(), String.join(", ", outFilenames));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,10 +9,7 @@ import org.apache.commons.io.FileUtils;
|
|||
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||
import org.apache.kafka.clients.producer.MockProducer;
|
||||
import org.apache.kafka.clients.producer.ProducerRecord;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.*;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Captor;
|
||||
|
|
@ -26,11 +23,17 @@ import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
|||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.misc.STrades;
|
||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.clearing.classes.statics.data.statement.Statement;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
||||
import ru.spcex.clearing.reports.config.BeanConfiguration;
|
||||
import ru.spcex.clearing.reports.config.ReportBuildersConfig;
|
||||
import ru.spcex.clearing.reports.config.TestConfig;
|
||||
|
|
@ -64,25 +67,18 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||
ReportBuildersConfig.class,
|
||||
TestConfig.class
|
||||
})
|
||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||
public class ReportServiceTest {
|
||||
private Imdg<ExecutionFond> executionFondImdg;
|
||||
private Imdg<ExecutionDeposit> executionDepositImdg;
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<Registry> registryImdg;
|
||||
private Imdg<Listing> listingImdg;
|
||||
private Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
|
||||
private Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
||||
|
||||
private static File outFolder;
|
||||
private final ExecutionFond testExecutionFond = new ExecutionFond();
|
||||
private final ExecutionDeposit testExecutionDeposit = new ExecutionDeposit();
|
||||
|
||||
private final Registry testRegistry_1 = new Registry();
|
||||
private final Registry testRegistry_2 = new Registry();
|
||||
private final Company testCompany_1 = new Company();
|
||||
private final Company testCompany_2 = new Company();
|
||||
private final Company testCompanyHouse = new Company();
|
||||
|
||||
private final Registry testRegistryForCompanyId_1 = new Registry();
|
||||
private final Registry testRegistryForCompanyId_2 = new Registry();
|
||||
|
||||
private final Registry tm_tRegistry_1 = new Registry();
|
||||
private final Registry om_tRegistry_1 = new Registry();
|
||||
private final Registry ts_tRegistry_1 = new Registry();
|
||||
|
|
@ -91,31 +87,88 @@ public class ReportServiceTest {
|
|||
private final Registry om_tRegistry_2 = new Registry();
|
||||
private final Registry ts_tRegistry_2 = new Registry();
|
||||
private final Registry os_tRegistry_2 = new Registry();
|
||||
|
||||
private final Listing testListing_1 = new Listing();
|
||||
private final Listing testListing_2 = new Listing();
|
||||
|
||||
private final FixedIncomeSecurity testFixedIncomeSecurity_1 = new FixedIncomeSecurity();
|
||||
private final FixedIncomeSecurity testFixedIncomeSecurity_2 = new FixedIncomeSecurity();
|
||||
|
||||
private final TradingClearingRegistry testTradingClearingRegistry_1 = new TradingClearingRegistry();
|
||||
private final TradingClearingRegistry testTradingClearingRegistry_2 = new TradingClearingRegistry();
|
||||
|
||||
private static File outFolder;
|
||||
|
||||
private final PaymentInstruction testPaymentInstruction_1 = new PaymentInstruction();
|
||||
private final PaymentInstruction testPaymentInstruction_2 = new PaymentInstruction();
|
||||
private final Statement testStatement_1 = new Statement();
|
||||
private final Statement testStatement_2 = new Statement();
|
||||
private final STrades testSTrade = new STrades();
|
||||
private final Instant TEST_EXCHANGE_EXECUTION_TIME_1 = Instant.ofEpochMilli(777777777777L);
|
||||
private final Instant TEST_EXCHANGE_EXECUTION_TIME_2 = Instant.ofEpochMilli(888888888888L);
|
||||
private final LocalDate TEST_TRADING_DATE_1 = LocalDate.now().minus(10, ChronoUnit.DAYS);
|
||||
private final LocalDate TEST_TRADING_DATE_2 = LocalDate.now().minus(20, ChronoUnit.DAYS);
|
||||
private final String TEST_MARKET_1 = Market.fond.getKey();
|
||||
private final String TEST_MARKET_2 = Market.mkrs.getKey();
|
||||
private final BigDecimal TEST_PRICE_1 = BigDecimal.valueOf(77L);
|
||||
private final BigDecimal TEST_PRICE_2 = BigDecimal.valueOf(88L);
|
||||
private final BigDecimal TEST_LOTS_1 = BigDecimal.valueOf(777L);
|
||||
private final BigDecimal TEST_LOTS_2 = BigDecimal.valueOf(888L);
|
||||
private final BigDecimal TEST_QUANTITY_1 = BigDecimal.valueOf(7777L);
|
||||
private final BigDecimal TEST_QUANTITY_2 = BigDecimal.valueOf(8888L);
|
||||
private final BigDecimal TEST_INTEREST_AMOUNT_1 = BigDecimal.valueOf(77777L);
|
||||
private final BigDecimal TEST_INTEREST_AMOUNT_2 = BigDecimal.valueOf(88888L);
|
||||
private final String TEST_SIDE_1 = Side.SELL.getKey();
|
||||
private final String TEST_SIDE_2 = Side.BUY.getKey();
|
||||
private final String TEST_COVERAGE_STATUS_1 = Allowed.DENIED.getKey();
|
||||
private final String TEST_COVERAGE_STATUS_2 = Allowed.ALLOWED.getKey();
|
||||
private final Long TEST_SESSION_ID_1 = 10007L;
|
||||
private final Long TEST_SESSION_ID_2 = 10008L;
|
||||
private final Long TEST_SESSION_ID_3 = 10009L;
|
||||
private final LocalDate TEST_CLEARING_DATE_1 = LocalDate.now().minus(30, ChronoUnit.DAYS);
|
||||
private final LocalDate TEST_CLEARING_DATE_2 = LocalDate.now().minus(40, ChronoUnit.DAYS);
|
||||
private final BigDecimal TEST_SETTLEMENT_AMOUNT = BigDecimal.valueOf(7777777L);
|
||||
private final LocalDate TEST_SETTLEMENT_DATE = LocalDate.now().minus(22, ChronoUnit.DAYS);
|
||||
private final Instant TEST_EXCHANGE_EXECUTION_MICROSECONDS = Instant.now().minus(777L, ChronoUnit.SECONDS);
|
||||
private final BigDecimal TEST_FIRST_LEG_AMOUNT = BigDecimal.valueOf(1L);
|
||||
private final BigDecimal TEST_SECOND_LEG_AMOUNT = BigDecimal.valueOf(2L);
|
||||
private final LocalDate TEST_FIRST_LEG_SETTLEMENT_DATE = LocalDate.now().minus(1, ChronoUnit.DAYS);
|
||||
private final LocalDate TEST_SECOND_LEG_SETTLEMENT_DATE = LocalDate.now().minus(2, ChronoUnit.DAYS);
|
||||
private final BigDecimal TEST_LOT_SIZE_1 = BigDecimal.valueOf(12L);
|
||||
private final BigDecimal TEST_LOT_SIZE_2 = BigDecimal.valueOf(34L);
|
||||
private final BigDecimal TEST_NOMINAL_1 = BigDecimal.valueOf(333L);
|
||||
private final BigDecimal TEST_NOMINAL_2 = BigDecimal.valueOf(444L);
|
||||
private final BigDecimal TEST_COUPON_1 = BigDecimal.valueOf(3333L);
|
||||
private final BigDecimal TEST_COUPON_2 = BigDecimal.valueOf(4444L);
|
||||
private final BigDecimal TEST_OPEN_BALANCE_1 = BigDecimal.valueOf(3L);
|
||||
private final BigDecimal TEST_CLOSE_BALANCE_1 = BigDecimal.valueOf(780L);
|
||||
private final BigDecimal TEST_OPEN_BALANCE_2 = BigDecimal.valueOf(2L);
|
||||
private final BigDecimal TEST_CLOSE_BALANCE_2 = BigDecimal.valueOf(890L);
|
||||
private final BigDecimal TEST_CREDIT_1 = BigDecimal.valueOf(777777L);
|
||||
private final BigDecimal TEST_CREDIT_2 = BigDecimal.valueOf(999999L);
|
||||
private final BigDecimal TEST_DEBIT_1 = BigDecimal.valueOf(77777L);
|
||||
private final BigDecimal TEST_DEBIT_2 = BigDecimal.valueOf(99999L);
|
||||
private final LocalDate TEST_START_CLEARING_DATE = LocalDate.now();
|
||||
private final LocalDate TEST_END_CLEARING_DATE = LocalDate.now();
|
||||
private Imdg<ExecutionFond> executionFondImdg;
|
||||
private Imdg<ExecutionDeposit> executionDepositImdg;
|
||||
private Imdg<Company> companyImdg;
|
||||
private Imdg<Registry> registryImdg;
|
||||
private Imdg<Listing> listingImdg;
|
||||
private Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
|
||||
private Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
|
||||
private Imdg<PaymentInstruction> paymentInstructionImdg;
|
||||
private Imdg<Statement> statementImdg;
|
||||
private Imdg<STrades> sTradeImdg;
|
||||
@Autowired
|
||||
private ReportService reportService;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("hazelcastServiceTest")
|
||||
private ImdgProvider imdgProvider;
|
||||
|
||||
@Captor
|
||||
private ArgumentCaptor<ProducerRecord> producerRecord;
|
||||
|
||||
@SpyBean
|
||||
private MockProducer<String, Object> producer;
|
||||
|
||||
private static int reportRequestCnt = 0;
|
||||
private static int reportRequestWithSessionIdCnt = 0;
|
||||
private static int reportRequestWithSessionIdListCnt = 0;
|
||||
private static int reportRequestWithPeriodCnt = 0;
|
||||
|
||||
@BeforeAll
|
||||
public static void createTestFolder() {
|
||||
outFolder = new File("out");
|
||||
|
|
@ -128,7 +181,9 @@ public class ReportServiceTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void createReportTest_OPERATIONAL_LIABILITIES_CLAIMS() throws InterruptedException, IOException, CsvValidationException {
|
||||
@Order(1)
|
||||
public void createReportTest_OPERATIONAL_LIABILITIES_CLAIMS() throws IOException, CsvValidationException {
|
||||
clearTestDir();
|
||||
final Long oldSessionIdDeposit = testExecutionDeposit.getSessionId();
|
||||
final Long oldSessionIdFond = testExecutionFond.getSessionId();
|
||||
|
||||
|
|
@ -145,17 +200,15 @@ public class ReportServiceTest {
|
|||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
|
||||
0,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("operational_liabilities_claims_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time"));
|
||||
|
||||
System.out.println("hello");
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/operational_liabilities_claims_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "tr_date", "clearing_date", "tr_execDate", "clearing_time", "repaym_date"));
|
||||
|
||||
testExecutionDeposit.setSessionId(oldSessionIdDeposit);
|
||||
testExecutionFond.setSessionId(oldSessionIdFond);
|
||||
|
|
@ -165,7 +218,405 @@ public class ReportServiceTest {
|
|||
outFile.delete();
|
||||
}
|
||||
|
||||
public void compareCSVFiles(File expectedFile, File actualFile, List<String> columnsForSkip) throws IOException, CsvValidationException {
|
||||
@Test
|
||||
@Order(2)
|
||||
public void createReportTest_PERIOD_LIABILITIES_CLAIMS() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
ReportRequestWithSessionIdList reportRequestWithPeriod = new ReportRequestWithSessionIdList();
|
||||
reportRequestWithPeriod.setReportId(ReportType.PERIOD_LIABILITIES_CLAIMS.getKey());
|
||||
reportRequestWithPeriod.setSessionIdList(Arrays.asList(testExecutionDeposit.getSessionId(), testExecutionFond.getSessionId()));
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequestWithPeriod, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID_LIST,
|
||||
reportRequestWithSessionIdListCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/period_liabilities_claims_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "tr_date", "clearing_date", "tr_execDate", "clearing_time", "repaym_date"));
|
||||
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(3)
|
||||
public void createReportTest_SUMMARY_LIABILITIES_CLAIMS() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
ReportRequest reportRequest = new ReportRequest();
|
||||
reportRequest.setReportId(ReportType.SUMMARY_LIABILITIES_CLAIMS.getKey());
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT,
|
||||
reportRequestCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/summary_liabilities_claims_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "tr_date", "clearing_date", "tr_execDate", "clearing_time", "repaym_date"));
|
||||
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(4)
|
||||
public void createReportTest_OPERATIONAL_MONEY_CHANGE() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
final Long oldRegistrySessionId_1 = testRegistry_1.getSessionId();
|
||||
final Long oldRegistrySessionId_2 = testRegistry_2.getSessionId();
|
||||
testRegistry_1.setSessionId(TEST_SESSION_ID_3);
|
||||
testRegistry_2.setSessionId(TEST_SESSION_ID_3);
|
||||
registryImdg.update(testRegistry_1);
|
||||
registryImdg.update(testRegistry_2);
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.OPERATIONAL_MONEY_CHANGE.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/operational_money_change_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "add_time", "withdraw_time"));
|
||||
|
||||
testRegistry_1.setSessionId(oldRegistrySessionId_1);
|
||||
testRegistry_2.setSessionId(oldRegistrySessionId_2);
|
||||
registryImdg.update(testRegistry_1);
|
||||
registryImdg.update(testRegistry_2);
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(5)
|
||||
public void createReportTest_PERIOD_MONEY_CHANGE() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
ReportRequestWithPeriod reportRequest = new ReportRequestWithPeriod();
|
||||
reportRequest.setReportId(ReportType.PERIOD_MONEY_CHANGE.getKey());
|
||||
reportRequest.setStartDate(TEST_START_CLEARING_DATE);
|
||||
reportRequest.setEndDate(TEST_END_CLEARING_DATE);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT_FOR_PERIOD,
|
||||
reportRequestWithPeriodCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/period_money_change_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "add_time", "withdraw_time"));
|
||||
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(6)
|
||||
public void createReportTest_SUMMARY_MONEY_CHANGE() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
ReportRequest reportRequest = new ReportRequest();
|
||||
reportRequest.setReportId(ReportType.SUMMARY_MONEY_CHANGE.getKey());
|
||||
TestUtils.clearAllInImdg(registryImdg);
|
||||
registryImdg.insert(testRegistry_1);
|
||||
registryImdg.insert(testRegistry_2);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT,
|
||||
reportRequestCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/summary_money_change_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("doc_time", "doc_date", "add_time", "withdraw_time"));
|
||||
|
||||
registryImdg.insert(testRegistryForCompanyId_1);
|
||||
registryImdg.insert(testRegistryForCompanyId_2);
|
||||
registryImdg.insert(tm_tRegistry_1);
|
||||
registryImdg.insert(om_tRegistry_1);
|
||||
registryImdg.insert(ts_tRegistry_1);
|
||||
registryImdg.insert(os_tRegistry_1);
|
||||
registryImdg.insert(tm_tRegistry_2);
|
||||
registryImdg.insert(om_tRegistry_2);
|
||||
registryImdg.insert(ts_tRegistry_2);
|
||||
registryImdg.insert(os_tRegistry_2);
|
||||
registryImdg.insert(testRegistry_1);
|
||||
registryImdg.insert(testRegistry_2);
|
||||
outFile.delete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(7)
|
||||
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_1() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
|
||||
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_3);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
// TEST INFTYPE_1
|
||||
testExecutionFond.setTradingDate(LocalDate.now().minus(10, ChronoUnit.DAYS));
|
||||
testExecutionFond.setSettlementDate(LocalDate.now());
|
||||
testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_1"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_1_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
compareCSVFiles(expectedEmptyFile, file, null);
|
||||
}
|
||||
FileUtils.delete(file);
|
||||
}
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
|
||||
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(8)
|
||||
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_2() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
|
||||
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_3);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
// TEST INFTYPE_2
|
||||
testExecutionFond.setTradingDate(LocalDate.now());
|
||||
testExecutionFond.setSettlementDate(LocalDate.now());
|
||||
testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_2"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_2_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
compareCSVFiles(expectedEmptyFile, file, null);
|
||||
}
|
||||
FileUtils.delete(file);
|
||||
}
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
|
||||
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(9)
|
||||
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_3() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
|
||||
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
// TEST INFTYPE_3
|
||||
testExecutionFond.setSettlementDate(LocalDate.now().plus(10, ChronoUnit.DAYS));
|
||||
testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS));
|
||||
testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_3"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_3_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
compareCSVFiles(expectedEmptyFile, file, null);
|
||||
}
|
||||
FileUtils.delete(file);
|
||||
}
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
|
||||
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(10)
|
||||
public void createReportTest_EXECUTED_DEAL_REPORT_INFTYPE_4() throws CsvValidationException, IOException {
|
||||
clearTestDir();
|
||||
File expectedEmptyFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_empty_expected.csv").getFile());
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.EXECUTED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate();
|
||||
final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
// TEST INFTYPE_4
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_1);
|
||||
testExecutionFond.setSettlementDate(LocalDate.now());
|
||||
testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS));
|
||||
testExecutionFond.setCoverageStatus(Allowed.DENIED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles((dir, name) -> name.contains("INFTYPE_4"))[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/KS_BR_PFX64_INFTYPE_4_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate", "tradeTime", "settleDate"));
|
||||
|
||||
for (File file : outFolder.listFiles()) {
|
||||
if (!outFile.getName().equalsIgnoreCase(file.getName())) {
|
||||
compareCSVFiles(expectedEmptyFile, file, null);
|
||||
}
|
||||
FileUtils.delete(file);
|
||||
}
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setTradingDate(oldExecutionFondTradingDate);
|
||||
testExecutionFond.setSettlementDate(oldExecutionFondSettlementDate);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(11)
|
||||
public void createReportTest_UNFULFILLED_DEAL_REPORT() throws IOException, CsvValidationException {
|
||||
clearTestDir();
|
||||
|
||||
ReportRequestWithSessionId reportRequest = new ReportRequestWithSessionId();
|
||||
reportRequest.setReportId(ReportType.UNFULFILLED_DEAL_REPORT.getKey());
|
||||
reportRequest.setSessionId(TEST_SESSION_ID_3);
|
||||
|
||||
final Long oldExecutionFondSessionId = testExecutionFond.getSessionId();
|
||||
final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus();
|
||||
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_3);
|
||||
testExecutionFond.setCoverageStatus(Allowed.DENIED.getKey());
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
final String oldSTradeSettleCode = testSTrade.getSettleCode();
|
||||
final String oldSTradeOperation = testSTrade.getOperation();
|
||||
testSTrade.setSettleCode(testExecutionFond.getSettlementCode());
|
||||
testSTrade.setOperation(testExecutionFond.getSide());
|
||||
sTradeImdg.update(testSTrade);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID,
|
||||
reportRequestWithSessionIdCnt++,
|
||||
0,
|
||||
jsonString);
|
||||
|
||||
TestUtils.waitingWhenAddedRecordAndCheckIt(0L, producer, producerRecord);
|
||||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/unfulfilled_deal_report_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("tradeDate"));
|
||||
|
||||
testExecutionFond.setSessionId(oldExecutionFondSessionId);
|
||||
testExecutionFond.setCoverageStatus(oldExecutionFondCoverageStatus);
|
||||
executionFondImdg.update(testExecutionFond);
|
||||
|
||||
testSTrade.setSettleCode(oldSTradeSettleCode);
|
||||
testSTrade.setOperation(oldSTradeOperation);
|
||||
sTradeImdg.update(testSTrade);
|
||||
}
|
||||
|
||||
|
||||
private void compareCSVFiles(File expectedFile, File actualFile, List<String> columnsForSkip) throws IOException, CsvValidationException {
|
||||
if (columnsForSkip == null) columnsForSkip = Collections.emptyList();
|
||||
CSVParser csvParser = new CSVParserBuilder().withSeparator(',').withQuoteChar('\"').build();
|
||||
CSVReader expectedCSVReader = new CSVReaderBuilder(new FileReader(expectedFile)).withCSVParser(csvParser).build();
|
||||
|
|
@ -199,7 +650,7 @@ public class ReportServiceTest {
|
|||
int actualIdx = actualValueForColumn.get(expectedHeader);
|
||||
String expected = expectedLines[expectedIdx];
|
||||
String actual = actualLines[actualIdx];
|
||||
assertEquals(expected, actual);
|
||||
assertEquals(expected, actual, expectedHeader);
|
||||
}
|
||||
} while (true);
|
||||
|
||||
|
|
@ -207,14 +658,17 @@ public class ReportServiceTest {
|
|||
actualCSVReader.close();
|
||||
}
|
||||
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId();
|
||||
|
||||
Long TEST_EXECUTION_FOND_ID = 888L;
|
||||
testExecutionFond.setId(TEST_EXECUTION_FOND_ID);
|
||||
Long TEST_EXCHANGE_EXECUTION_ID_1 = 777L;
|
||||
testExecutionFond.setExchangeExecutionId(TEST_EXCHANGE_EXECUTION_ID_1);
|
||||
testExecutionFond.setExchangeExecutionTime(TEST_EXCHANGE_EXECUTION_TIME_1);
|
||||
testExecutionFond.setTradingDate(TEST_TRADING_DATE_1);
|
||||
Long TEST_TRADING_CLEARING_REGISTRY_ID_1 = 777L;
|
||||
testExecutionFond.setTradingClearingRegistryId(TEST_TRADING_CLEARING_REGISTRY_ID_1);
|
||||
testExecutionFond.setMarket(TEST_MARKET_1);
|
||||
testExecutionFond.setPrice(TEST_PRICE_1);
|
||||
|
|
@ -222,27 +676,43 @@ public class ReportServiceTest {
|
|||
testExecutionFond.setQuantity(TEST_QUANTITY_1);
|
||||
testExecutionFond.setInterestAmount(TEST_INTEREST_AMOUNT_1);
|
||||
testExecutionFond.setSide(TEST_SIDE_1);
|
||||
String TEST_SETTLEMENT_CURRENCY_1 = "test-settlement-currency-1";
|
||||
testExecutionFond.setSettlementCurrency(TEST_SETTLEMENT_CURRENCY_1);
|
||||
Long TEST_COMPANY_ID_1 = 1007L;
|
||||
testExecutionFond.setCompanyId(TEST_COMPANY_ID_1);
|
||||
Long TEST_DURATION_1 = 2007L;
|
||||
testExecutionFond.setDuration(TEST_DURATION_1);
|
||||
String TEST_SECURITY_FULL_NAME_1 = "test-security-full-name-1";
|
||||
testExecutionFond.setSecurityFullName(TEST_SECURITY_FULL_NAME_1);
|
||||
String TEST_SECURITY_SYMBOL_1 = "test-security-symbol-1";
|
||||
testExecutionFond.setSecuritySymbol(TEST_SECURITY_SYMBOL_1);
|
||||
Long TEST_SECURITY_ID_1 = 3007L;
|
||||
testExecutionFond.setSecurityId(TEST_SECURITY_ID_1);
|
||||
Long TEST_COUNTER_PARTY_ID_1 = 4007L;
|
||||
testExecutionFond.setCounterPartyId(TEST_COUNTER_PARTY_ID_1);
|
||||
testExecutionFond.setCoverageStatus(TEST_COVERAGE_STATUS_1);
|
||||
testExecutionFond.setSessionId(TEST_SESSION_ID_1);
|
||||
testExecutionFond.setClearingDate(TEST_CLEARING_DATE_1);
|
||||
Long TEST_EXCHANGE_ORDER_ID = 20007L;
|
||||
testExecutionFond.setExchangeOrderId(TEST_EXCHANGE_ORDER_ID);
|
||||
testExecutionFond.setSettlementAmount(TEST_SETTLEMENT_AMOUNT);
|
||||
String TEST_COMMENT = "test-comment";
|
||||
testExecutionFond.setComment(TEST_COMMENT);
|
||||
Long TEST_CLIENT_CODE_ID = 222222L;
|
||||
testExecutionFond.setClientCodeId(TEST_CLIENT_CODE_ID);
|
||||
String TEST_SETTLEMENT_CODE = "test-settlement-code";
|
||||
testExecutionFond.setSettlementCode(TEST_SETTLEMENT_CODE);
|
||||
testExecutionFond.setSettlementDate(TEST_SETTLEMENT_DATE);
|
||||
testExecutionFond.setExchangeExecutionMicroseconds(TEST_EXCHANGE_EXECUTION_MICROSECONDS);
|
||||
testExecutionFond.setCreated(Instant.now());
|
||||
|
||||
Long TEST_EXECUTION_DEPOSIT_ID = 777L;
|
||||
testExecutionDeposit.setId(TEST_EXECUTION_DEPOSIT_ID);
|
||||
Long TEST_EXCHANGE_EXECUTION_ID_2 = 888L;
|
||||
testExecutionDeposit.setExchangeExecutionId(TEST_EXCHANGE_EXECUTION_ID_2);
|
||||
testExecutionDeposit.setExchangeExecutionTime(TEST_EXCHANGE_EXECUTION_TIME_2);
|
||||
testExecutionDeposit.setTradingDate(TEST_TRADING_DATE_2);
|
||||
Long TEST_TRADING_CLEARING_REGISTRY_ID_2 = 888L;
|
||||
testExecutionDeposit.setTradingClearingRegistryId(TEST_TRADING_CLEARING_REGISTRY_ID_2);
|
||||
testExecutionDeposit.setMarket(TEST_MARKET_2);
|
||||
testExecutionDeposit.setPrice(TEST_PRICE_2);
|
||||
|
|
@ -250,12 +720,19 @@ public class ReportServiceTest {
|
|||
testExecutionDeposit.setQuantity(TEST_QUANTITY_2);
|
||||
testExecutionDeposit.setInterestAmount(TEST_INTEREST_AMOUNT_2);
|
||||
testExecutionDeposit.setSide(TEST_SIDE_2);
|
||||
String TEST_SETTLEMENT_CURRENCY_2 = "test-settlement-currency-2";
|
||||
testExecutionDeposit.setSettlementCurrency(TEST_SETTLEMENT_CURRENCY_2);
|
||||
Long TEST_COMPANY_ID_2 = 1008L;
|
||||
testExecutionDeposit.setCompanyId(TEST_COMPANY_ID_2);
|
||||
Long TEST_DURATION_2 = 2008L;
|
||||
testExecutionDeposit.setDuration(TEST_DURATION_2);
|
||||
String TEST_SECURITY_FULL_NAME_2 = "test-security-full-name-2";
|
||||
testExecutionDeposit.setSecurityFullName(TEST_SECURITY_FULL_NAME_2);
|
||||
String TEST_SECURITY_SYMBOL_2 = "test-security-symbol-2";
|
||||
testExecutionDeposit.setSecuritySymbol(TEST_SECURITY_SYMBOL_2);
|
||||
Long TEST_SECURITY_ID_2 = 3008L;
|
||||
testExecutionDeposit.setSecurityId(TEST_SECURITY_ID_2);
|
||||
Long TEST_COUNTER_PARTY_ID_2 = 4008L;
|
||||
testExecutionDeposit.setCounterPartyId(TEST_COUNTER_PARTY_ID_2);
|
||||
testExecutionDeposit.setCoverageStatus(TEST_COVERAGE_STATUS_2);
|
||||
testExecutionDeposit.setSessionId(TEST_SESSION_ID_2);
|
||||
|
|
@ -264,8 +741,11 @@ public class ReportServiceTest {
|
|||
testExecutionDeposit.setSecondLegAmount(TEST_SECOND_LEG_AMOUNT);
|
||||
testExecutionDeposit.setFirstLegSettlementDate(TEST_FIRST_LEG_SETTLEMENT_DATE);
|
||||
testExecutionDeposit.setSecondLegSettlementDate(TEST_SECOND_LEG_SETTLEMENT_DATE);
|
||||
String TEST_FIRST_LEG_SETTLEMENT_CODE = "test-first-leg-settlement-code";
|
||||
testExecutionDeposit.setFirstLegSettlementCode(TEST_FIRST_LEG_SETTLEMENT_CODE);
|
||||
String TEST_SECOND_LEG_SETTLEMENT_CODE = "test-second-leg-settlement-code";
|
||||
testExecutionDeposit.setSecondLegSettlementCode(TEST_SECOND_LEG_SETTLEMENT_CODE);
|
||||
String TEST_CONTRACT = "test_contract";
|
||||
testExecutionDeposit.setContract(TEST_CONTRACT);
|
||||
|
||||
executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
|
|
@ -276,9 +756,11 @@ public class ReportServiceTest {
|
|||
|
||||
testCompany_1.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
testCompany_1.setId(TEST_COMPANY_ID_1);
|
||||
String TEST_COMPANY_FULLNAME_1 = "test-company-fullname-1";
|
||||
testCompany_1.setFullName(TEST_COMPANY_FULLNAME_1);
|
||||
testCompany_2.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
testCompany_2.setId(TEST_COMPANY_ID_2);
|
||||
String TEST_COMPANY_FULLNAME_2 = "test-company-fullname-2";
|
||||
testCompany_2.setFullName(TEST_COMPANY_FULLNAME_2);
|
||||
testCompanyHouse.setId(1L);
|
||||
testCompanyHouse.setFullName("COMPANY_HOUSE");
|
||||
|
|
@ -289,36 +771,83 @@ public class ReportServiceTest {
|
|||
|
||||
|
||||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
|
||||
Long TEST_REGISTRY_ID_1 = 999L;
|
||||
testRegistry_1.setId(TEST_REGISTRY_ID_1);
|
||||
testRegistry_1.setCompanyId(TEST_COMPANY_ID_1);
|
||||
testRegistry_1.setSecurityId(TEST_SECURITY_ID_1);
|
||||
Long TEST_PAYMT_ID_1 = 222L;
|
||||
testRegistry_1.setPaymentId(TEST_PAYMT_ID_1);
|
||||
String TEST_TRADING_CLEARING_REGISTRY_1 = "test-trading-clearing-registry-1";
|
||||
testRegistry_1.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_1);
|
||||
Long TEST_MONEY_ACCOUNT_1 = 11L;
|
||||
testRegistry_1.setAccountId(TEST_MONEY_ACCOUNT_1);
|
||||
String TEST_REGISTRY_CODE_1 = "test-registry-code-1";
|
||||
testRegistry_1.setRegistryCode(TEST_REGISTRY_CODE_1);
|
||||
testRegistry_1.setOpenBalance(TEST_OPEN_BALANCE_1);
|
||||
testRegistry_1.setCloseBalance(TEST_CLOSE_BALANCE_1);
|
||||
testRegistry_1.setCredit(TEST_CREDIT_1);
|
||||
testRegistry_1.setDebit(TEST_DEBIT_1);
|
||||
testRegistry_1.setClearingDate(TEST_START_CLEARING_DATE);
|
||||
testRegistry_1.setUpdated(Instant.now());
|
||||
Long TEST_REGISTRY_ID_2 = 666L;
|
||||
testRegistry_2.setId(TEST_REGISTRY_ID_2);
|
||||
testRegistry_2.setCompanyId(TEST_COMPANY_ID_2);
|
||||
testRegistry_2.setSecurityId(TEST_SECURITY_ID_2);
|
||||
Long TEST_PAYMT_ID_2 = 333L;
|
||||
testRegistry_2.setPaymentId(TEST_PAYMT_ID_2);
|
||||
String TEST_TRADING_CLEARING_REGISTRY_2 = "test-trading-clearing-registry-2";
|
||||
testRegistry_2.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_2);
|
||||
Long TEST_MONEY_ACCOUNT_2 = 12L;
|
||||
testRegistry_2.setAccountId(TEST_MONEY_ACCOUNT_2);
|
||||
String TEST_REGISTRY_CODE_2 = "test-registry-code-2";
|
||||
testRegistry_2.setRegistryCode(TEST_REGISTRY_CODE_2);
|
||||
testRegistry_2.setOpenBalance(TEST_OPEN_BALANCE_2);
|
||||
testRegistry_2.setCloseBalance(TEST_CLOSE_BALANCE_2);
|
||||
testRegistry_2.setCredit(TEST_CREDIT_2);
|
||||
testRegistry_2.setDebit(TEST_DEBIT_2);
|
||||
testRegistry_2.setClearingDate(TEST_END_CLEARING_DATE);
|
||||
testRegistry_2.setUpdated(Instant.now());
|
||||
testRegistryForCompanyId_1.setCompanyId(TEST_COMPANY_ID_1);
|
||||
testRegistryForCompanyId_1.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_1);
|
||||
testRegistryForCompanyId_1.setUpdated(Instant.now());
|
||||
testRegistryForCompanyId_2.setCompanyId(TEST_COMPANY_ID_2);
|
||||
testRegistryForCompanyId_2.setTradingClearingRegistry(TEST_TRADING_CLEARING_REGISTRY_2);
|
||||
registryImdg.insert(testRegistryForCompanyId_1);
|
||||
registryImdg.insert(testRegistryForCompanyId_2);
|
||||
testRegistryForCompanyId_2.setUpdated(Instant.now());
|
||||
tm_tRegistry_1.setRegistryCode("TM_T");
|
||||
tm_tRegistry_1.setBalance(BigDecimal.valueOf(779L));
|
||||
tm_tRegistry_1.setUpdated(Instant.now());
|
||||
om_tRegistry_1.setRegistryCode("OM_T");
|
||||
om_tRegistry_1.setBalance(BigDecimal.valueOf(2L));
|
||||
om_tRegistry_1.setUpdated(Instant.now());
|
||||
ts_tRegistry_1.setRegistryCode("TS_T");
|
||||
ts_tRegistry_1.setBalance(BigDecimal.valueOf(889L));
|
||||
ts_tRegistry_1.setUpdated(Instant.now());
|
||||
os_tRegistry_1.setRegistryCode("OS_T");
|
||||
os_tRegistry_1.setBalance(BigDecimal.valueOf(1L));
|
||||
os_tRegistry_1.setUpdated(Instant.now());
|
||||
tm_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
|
||||
om_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
|
||||
ts_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
|
||||
os_tRegistry_1.setSessionId(TEST_SESSION_ID_1);
|
||||
tm_tRegistry_2.setRegistryCode("TM_T");
|
||||
tm_tRegistry_2.setBalance(BigDecimal.valueOf(779L));
|
||||
tm_tRegistry_2.setUpdated(Instant.now());
|
||||
om_tRegistry_2.setRegistryCode("OM_T");
|
||||
om_tRegistry_2.setBalance(BigDecimal.valueOf(2L));
|
||||
om_tRegistry_2.setUpdated(Instant.now());
|
||||
ts_tRegistry_2.setRegistryCode("TS_T");
|
||||
ts_tRegistry_2.setBalance(BigDecimal.valueOf(889L));
|
||||
ts_tRegistry_2.setUpdated(Instant.now());
|
||||
os_tRegistry_2.setRegistryCode("OS_T");
|
||||
os_tRegistry_2.setBalance(BigDecimal.valueOf(1L));
|
||||
os_tRegistry_2.setUpdated(Instant.now());
|
||||
tm_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
|
||||
om_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
|
||||
ts_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
|
||||
os_tRegistry_2.setSessionId(TEST_SESSION_ID_2);
|
||||
registryImdg.insert(testRegistryForCompanyId_1);
|
||||
registryImdg.insert(testRegistryForCompanyId_2);
|
||||
registryImdg.insert(tm_tRegistry_1);
|
||||
registryImdg.insert(om_tRegistry_1);
|
||||
registryImdg.insert(ts_tRegistry_1);
|
||||
|
|
@ -327,12 +856,18 @@ public class ReportServiceTest {
|
|||
registryImdg.insert(om_tRegistry_2);
|
||||
registryImdg.insert(ts_tRegistry_2);
|
||||
registryImdg.insert(os_tRegistry_2);
|
||||
registryImdg.insert(testRegistry_1);
|
||||
registryImdg.insert(testRegistry_2);
|
||||
|
||||
listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||
testListing_1.setSecurityId(TEST_SECURITY_ID_1);
|
||||
testListing_1.setLotSize(TEST_LOT_SIZE_1);
|
||||
String TEST_TRADING_CURRENCY_1 = "test-trading-currency-1";
|
||||
testListing_1.setTradingCurrency(TEST_TRADING_CURRENCY_1);
|
||||
testListing_2.setSecurityId(TEST_SECURITY_ID_2);
|
||||
testListing_2.setLotSize(TEST_LOT_SIZE_2);
|
||||
String TEST_TRADING_CURRENCY_2 = "test-trading-currency-2";
|
||||
testListing_2.setTradingCurrency(TEST_TRADING_CURRENCY_2);
|
||||
listingImdg.insert(testListing_1);
|
||||
listingImdg.insert(testListing_2);
|
||||
|
||||
|
|
@ -349,81 +884,45 @@ public class ReportServiceTest {
|
|||
tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
testTradingClearingRegistry_1.setId(TEST_TRADING_CLEARING_REGISTRY_ID_1);
|
||||
testTradingClearingRegistry_1.setMoneyAccountId(TEST_MONEY_ACCOUNT_1);
|
||||
Long TEST_DEPO_ACCOUNT_1 = 13L;
|
||||
testTradingClearingRegistry_1.setDepoAccountId(TEST_DEPO_ACCOUNT_1);
|
||||
tradingClearingRegistryImdg.insert(testTradingClearingRegistry_1);
|
||||
testTradingClearingRegistry_2.setId(TEST_TRADING_CLEARING_REGISTRY_ID_2);
|
||||
testTradingClearingRegistry_2.setMoneyAccountId(TEST_MONEY_ACCOUNT_2);
|
||||
Long TEST_DEPO_ACCOUNT_2 = 14L;
|
||||
testTradingClearingRegistry_2.setDepoAccountId(TEST_DEPO_ACCOUNT_2);
|
||||
tradingClearingRegistryImdg.insert(testTradingClearingRegistry_2);
|
||||
|
||||
statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
testStatement_1.setAddresseeId(TEST_COMPANY_ID_1);
|
||||
testStatement_1.setCreated(Instant.now());
|
||||
testStatement_2.setAddresseeId(TEST_COMPANY_ID_2);
|
||||
testStatement_2.setCreated(Instant.now());
|
||||
statementImdg.insert(testStatement_1);
|
||||
statementImdg.insert(testStatement_2);
|
||||
|
||||
paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
|
||||
testPaymentInstruction_1.setId(TEST_PAYMT_ID_1);
|
||||
testPaymentInstruction_1.setCreditLeg_direction(InOutDirection.out.getKey());
|
||||
testPaymentInstruction_1.setPaymentDate(Instant.now());
|
||||
testPaymentInstruction_2.setId(TEST_PAYMT_ID_2);
|
||||
testPaymentInstruction_2.setCreditLeg_direction(InOutDirection.out.getKey());
|
||||
testPaymentInstruction_2.setPaymentDate(Instant.now());
|
||||
paymentInstructionImdg.insert(testPaymentInstruction_1);
|
||||
paymentInstructionImdg.insert(testPaymentInstruction_2);
|
||||
|
||||
sTradeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
|
||||
testSTrade.setTradeNum(testExecutionFond.getExchangeExecutionId());
|
||||
testSTrade.setOperation(testExecutionFond.getSide());
|
||||
String TEST_SETTLE_CODE = "test-settle-code";
|
||||
testSTrade.setSettleCode(TEST_SETTLE_CODE);
|
||||
String TEST_CLASS_CODE = "test-class-code";
|
||||
testSTrade.setClassCode(TEST_CLASS_CODE);
|
||||
sTradeImdg.insert(testSTrade);
|
||||
}
|
||||
|
||||
private final Long TEST_EXCHANGE_EXECUTION_ID_1 = 777L;
|
||||
private final Long TEST_EXCHANGE_EXECUTION_ID_2 = 888L;
|
||||
private final Instant TEST_EXCHANGE_EXECUTION_TIME_1 = Instant.ofEpochMilli(777777777777L);
|
||||
private final Instant TEST_EXCHANGE_EXECUTION_TIME_2 = Instant.ofEpochMilli(888888888888L);
|
||||
private final LocalDate TEST_TRADING_DATE_1 = LocalDate.now().minus(10, ChronoUnit.DAYS);
|
||||
private final LocalDate TEST_TRADING_DATE_2 = LocalDate.now().minus(20, ChronoUnit.DAYS);
|
||||
private final Long TEST_TRADING_CLEARING_REGISTRY_ID_1 = 777L;
|
||||
private final Long TEST_TRADING_CLEARING_REGISTRY_ID_2 = 888L;
|
||||
private final String TEST_MARKET_1 = Market.fond.getKey();
|
||||
private final String TEST_MARKET_2 = Market.mkrs.getKey();
|
||||
private final BigDecimal TEST_PRICE_1 = BigDecimal.valueOf(77L);
|
||||
private final BigDecimal TEST_PRICE_2 = BigDecimal.valueOf(88L);
|
||||
private final BigDecimal TEST_LOTS_1 = BigDecimal.valueOf(777L);
|
||||
private final BigDecimal TEST_LOTS_2 = BigDecimal.valueOf(888L);
|
||||
private final BigDecimal TEST_QUANTITY_1 = BigDecimal.valueOf(7777L);
|
||||
private final BigDecimal TEST_QUANTITY_2 = BigDecimal.valueOf(8888L);
|
||||
private final BigDecimal TEST_INTEREST_AMOUNT_1 = BigDecimal.valueOf(77777L);
|
||||
private final BigDecimal TEST_INTEREST_AMOUNT_2 = BigDecimal.valueOf(88888L);
|
||||
private final String TEST_SIDE_1 = Side.SELL.getKey();
|
||||
private final String TEST_SIDE_2 = Side.BUY.getKey();
|
||||
private final String TEST_SETTLEMENT_CURRENCY_1 = "test-settlement-currency-1";
|
||||
private final String TEST_SETTLEMENT_CURRENCY_2 = "test-settlement-currency-2";
|
||||
private final Long TEST_COMPANY_ID_1 = 1007L;
|
||||
private final Long TEST_COMPANY_ID_2 = 1008L;
|
||||
private final String TEST_COMPANY_FULLNAME_1 = "test-company-fullname-1";
|
||||
private final String TEST_COMPANY_FULLNAME_2 = "test-company-fullname-2";
|
||||
private final Long TEST_DURATION_1 = 2007L;
|
||||
private final Long TEST_DURATION_2 = 2008L;
|
||||
private final String TEST_SECURITY_FULL_NAME_1 = "test-security-full-name-1";
|
||||
private final String TEST_SECURITY_FULL_NAME_2 = "test-security-full-name-2";
|
||||
private final String TEST_SECURITY_SYMBOL_1 = "test-security-symbol-1";
|
||||
private final String TEST_SECURITY_SYMBOL_2 = "test-security-symbol-2";
|
||||
private final Long TEST_SECURITY_ID_1 = 3007L;
|
||||
private final Long TEST_SECURITY_ID_2 = 3008L;
|
||||
private final Long TEST_COUNTER_PARTY_ID_1 = 4007L;
|
||||
private final Long TEST_COUNTER_PARTY_ID_2 = 4008L;
|
||||
private final String TEST_COVERAGE_STATUS_1 = Allowed.ALLOWED.getKey();
|
||||
private final String TEST_COVERAGE_STATUS_2 = Allowed.DENIED.getKey();
|
||||
private final Long TEST_SESSION_ID_1 = 10007L;
|
||||
private final Long TEST_SESSION_ID_2 = 10008L;
|
||||
private final LocalDate TEST_CLEARING_DATE_1 = LocalDate.now().minus(30, ChronoUnit.DAYS);
|
||||
private final LocalDate TEST_CLEARING_DATE_2 = LocalDate.now().minus(40, ChronoUnit.DAYS);
|
||||
private final Long TEST_EXCHANGE_ORDER_ID = 20007L;
|
||||
private final BigDecimal TEST_SETTLEMENT_AMOUNT = BigDecimal.valueOf(7777777L);
|
||||
private final String TEST_COMMENT = "test-comment";
|
||||
private final Long TEST_CLIENT_CODE_ID = 222222L;
|
||||
private final String TEST_SETTLEMENT_CODE = "test-settlement-code";
|
||||
private final LocalDate TEST_SETTLEMENT_DATE = LocalDate.now().minus(22, ChronoUnit.DAYS);
|
||||
private final Instant TEST_EXCHANGE_EXECUTION_MICROSECONDS = Instant.now().minus(777L, ChronoUnit.SECONDS);
|
||||
private final BigDecimal TEST_FIRST_LEG_AMOUNT = BigDecimal.valueOf(1L);
|
||||
private final BigDecimal TEST_SECOND_LEG_AMOUNT = BigDecimal.valueOf(2L);
|
||||
private final LocalDate TEST_FIRST_LEG_SETTLEMENT_DATE = LocalDate.now().minus(1, ChronoUnit.DAYS);
|
||||
private final LocalDate TEST_SECOND_LEG_SETTLEMENT_DATE = LocalDate.now().minus(2, ChronoUnit.DAYS);
|
||||
private final String TEST_FIRST_LEG_SETTLEMENT_CODE = "test-first-leg-settlement-code";
|
||||
private final String TEST_SECOND_LEG_SETTLEMENT_CODE = "test-second-leg-settlement-code";
|
||||
private final String TEST_CONTRACT = "test_contract";
|
||||
private final String TEST_TRADING_CLEARING_REGISTRY_1 = "test-trading-clearing-registry-1";
|
||||
private final String TEST_TRADING_CLEARING_REGISTRY_2 = "test-trading-clearing-registry-2";
|
||||
private final BigDecimal TEST_LOT_SIZE_1 = BigDecimal.valueOf(12L);
|
||||
private final BigDecimal TEST_LOT_SIZE_2 = BigDecimal.valueOf(34L);
|
||||
private final BigDecimal TEST_NOMINAL_1 = BigDecimal.valueOf(333L);
|
||||
private final BigDecimal TEST_NOMINAL_2 = BigDecimal.valueOf(444L);
|
||||
private final BigDecimal TEST_COUPON_1 = BigDecimal.valueOf(3333L);
|
||||
private final BigDecimal TEST_COUPON_2 = BigDecimal.valueOf(4444L);
|
||||
private final Long TEST_MONEY_ACCOUNT_1 = 11L;
|
||||
private final Long TEST_MONEY_ACCOUNT_2 = 12L;
|
||||
private final Long TEST_DEPO_ACCOUNT_1 = 13L;
|
||||
private final Long TEST_DEPO_ACCOUNT_2 = 14L;
|
||||
|
||||
private void clearTestDir() throws IOException {
|
||||
FileUtils.deleteDirectory(outFolder);
|
||||
outFolder.mkdir();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
"888","3007","777","07.05.2023","17.05.2023","17.05.2023","test-settle-code","1000","7777","7777777"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
"888","3007","777","17.05.2023","17.05.2023","17.05.2023","test-settle-code","1000","7777","7777777"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
"888","3007","777","27.05.2023","17.05.2023","27.05.2023","test-settle-code","1000","7777","7777777"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
"888","3007","777","27.05.2023","17.05.2023","17.05.2023","test-settle-code","1000","7777","7777777"
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
id,securityId,tradeNo,tradeDate,tradeTime,settleDate,settleCode,price,quanity,value
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
|
||||
"888","16.05.2023","20:45:22","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","16.04.2023","16.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","06.05.2023","24.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
|
||||
"777","16.05.2023","20:45:25","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10007","06.04.2023","06.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","26.04.2023","14.05.2023","Y","14.05.2023","88","","34","888","","1","","","","","1","","777","888"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,trdAccId,account,currency,registry_code,registry_name,open_balance,change_balance,add_withdraw,close_balance,remarks,add_sum,add_time,withdraw_sum,withdraw_time
|
||||
"999","17.05.2023","12:10:51","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1007","test-company-fullname-1","test-trading-clearing-registry-1","11","test-trading-currency-1","999","test-registry-code-1","3","777","700000","780","","777777","17.05.2023T12:10:50","77777","17.05.2023T12:10:50"
|
||||
"666","17.05.2023","12:10:51","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1008","test-company-fullname-2","test-trading-clearing-registry-2","12","test-trading-currency-2","666","test-registry-code-2","2","888","900000","890","","999999","17.05.2023T12:10:50","99999","17.05.2023T12:10:50"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
|
||||
"888","17.05.2023","10:51:13","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","17.04.2023","17.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","07.05.2023","25.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
|
||||
"777","17.05.2023","10:51:13","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10008","07.04.2023","07.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","27.04.2023","15.05.2023","Y","15.05.2023","88","","34","888","","1","","","","","1","","777","888"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,trdAccId,account,currency,registry_code,registry_name,open_balance,change_balance,add_withdraw,close_balance,remarks,add_sum,add_time,withdraw_sum,withdraw_time
|
||||
"999","17.05.2023","12:18:01","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1007","test-company-fullname-1","test-trading-clearing-registry-1","11","test-trading-currency-1","999","test-registry-code-1","3","777","700000","780","","777777","17.05.2023T12:18:01","77777","17.05.2023T12:18:01"
|
||||
"666","17.05.2023","12:18:01","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1008","test-company-fullname-2","test-trading-clearing-registry-2","12","test-trading-currency-2","666","test-registry-code-2","2","888","900000","890","","999999","17.05.2023T12:18:01","99999","17.05.2023T12:18:01"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,session_id,clearing_date,clearing_time,trdAccId,account,depo_account,currency,tr_id,securityId,tr_buySell,tr_date,tr_execDate,exec_status,repaym_date,tr_price,nominal,lot_value,tr_lot,tr_quantity,tr_value,tr_accruedint,accruedint,tr_clrComm,tr_exhComm,cash_liability,depo_liability,cash_netto,depo_netto
|
||||
"1","16.05.2023","20:45:22","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","16.04.2023","16.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","06.05.2023","24.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
|
||||
"2","16.05.2023","20:45:25","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10007","06.04.2023","06.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","26.04.2023","14.05.2023","N","14.05.2023","88","","34","888","","1","","","","","1","","777","888"
|
||||
888,"17.05.2023","10:58:08","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1007","test-company-fullname-1","10007","17.04.2023","17.04.2023","test-trading-clearing-registry-1","11","13","test-settlement-currency-1","777","3007","S","07.05.2023","25.04.2023","","","1000","333","12","777","7777","7777777","3333","0","","","7777777","7777","777","888"
|
||||
777,"17.05.2023","10:58:08","Отчет об обязательствах/требованиях Участника клиринга","KS_FIRMID_LIABILITIES","COMPANY_HOUSE","1008","test-company-fullname-2","10008","07.04.2023","07.04.2023","test-trading-clearing-registry-2","12","14","test-settlement-currency-2","888","3008","B","27.04.2023","15.05.2023",Y,"15.05.2023","88","","34","888","","1","","","","","1","","777","888"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
id,doc_date,doc_time,doc_name,doc_type,clearingHouse,firmId,firName,trdAccId,account,currency,registry_code,registry_name,open_balance,change_balance,add_withdraw,close_balance,remarks,add_sum,add_time,withdraw_sum,withdraw_time
|
||||
"999","17.05.2023","12:25:42","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1007","test-company-fullname-1","test-trading-clearing-registry-1","11","test-trading-currency-1","999","test-registry-code-1","3","777","700000","780","","777777","17.05.2023T12:25:42","77777","17.05.2023T12:25:42"
|
||||
"666","17.05.2023","12:25:42","Отчет об изменении суммы денежных средств и (или) количества иного имущества Участника клиринга","KS_FIRMID_ASSETS","COMPANY_HOUSE","1008","test-company-fullname-2","test-trading-clearing-registry-2","12","test-trading-currency-2","666","test-registry-code-2","2","888","900000","890","","999999","17.05.2023T12:25:42","99999","17.05.2023T12:25:42"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
id,securityId,tradeNo,tradeDate,settleCode
|
||||
"888","3007","777","07.05.2023","test-class-code"
|
||||
|
Loading…
Add table
Reference in a new issue