This commit is contained in:
parent
07293ff3eb
commit
95ff52de20
12 changed files with 224 additions and 104 deletions
|
|
@ -2,6 +2,7 @@ package ru.spcex.clearing.reports.reports.bean;
|
|||
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -28,10 +29,12 @@ public class KSRepCashRegisterSumsReport {
|
|||
|
||||
@CsvBindByName(column = "ADD_TIME")
|
||||
@CsvBindByPosition(position = 4)
|
||||
@CsvDate(value = "HH:mm:ss")
|
||||
private LocalTime addTime;
|
||||
|
||||
@CsvBindByName(column = "ADD_DATE")
|
||||
@CsvBindByPosition(position = 5)
|
||||
@CsvDate(value = "dd.MM.yyyy")
|
||||
private LocalDate addDate;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ public class KSRepDepoRegisterQuantitiesReport {
|
|||
|
||||
@CsvBindByName(column = "ADD_TIME")
|
||||
@CsvBindByPosition(position = 5)
|
||||
@CsvDate(value = "HH:mm:ss")
|
||||
private LocalTime addTime;
|
||||
|
||||
@CsvBindByName(column = "ADD_DATE")
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.reports.ks;
|
|||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.statement.Statement;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
|
||||
import ru.spcex.clearing.reports.reports.EmptyParams;
|
||||
|
|
@ -12,10 +13,12 @@ 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 ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
|
@ -23,14 +26,16 @@ import java.util.List;
|
|||
|
||||
@Component
|
||||
public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegisterSumsReport> {
|
||||
private final Imdg<Statement> statementImdg;
|
||||
private final Imdg<Registry> registryImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
|
||||
private List<KSRepCashRegisterSumsReport> rows = null;
|
||||
|
||||
public KSRepCashRegisterSumsReportBuilder(ImdgProvider imdgProvider) {
|
||||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -63,48 +68,65 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyPa
|
|||
LocalDate nowDate = LocalDate.now();
|
||||
Instant instantNow = Instant.now();
|
||||
|
||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||
String sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AM__).build();
|
||||
ImdgPredicateBuilder pb = statementImdg.predicateBuilder();
|
||||
ImdgPredicate finalPredicate = pb.and(
|
||||
pb.sql(sql),
|
||||
pb.greatEqual("updated", instantNow.truncatedTo(ChronoUnit.DAYS)),
|
||||
pb.less("updated", instantNow.plus(1, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS)),
|
||||
pb.or(
|
||||
pb.equals("accountType", AccountType.Clrn.getKey()),
|
||||
pb.equals("accountType", AccountType.Info.getKey())
|
||||
)
|
||||
pb.equals("inOutSDfType", InOutSDfType.type6.getKey()),
|
||||
pb.equals("operationStatus", OperationStatus.Executed.getKey()),
|
||||
pb.notNull("amount")
|
||||
);
|
||||
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||
rows = new ArrayList<>(registries.size());
|
||||
for (Registry registry : registries) {
|
||||
Collection<Statement> statements = statementImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||
rows = new ArrayList<>(statements.size());
|
||||
for (Statement statement : statements) {
|
||||
try {
|
||||
Company company = companyImdg.getSingleObjectByID(registry.getCompanyId());
|
||||
Company company = companyImdg.getSingleObjectByID(statement.getAddresseeId());
|
||||
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) continue;
|
||||
|
||||
// Если есть одновременно registry.credit и registry.debit, записываем две записи по одному registry
|
||||
if (registry.getCredit() != null) {
|
||||
KSRepCashRegisterSumsReport ksRepCashRegisterSumsReport = new KSRepCashRegisterSumsReport();
|
||||
ksRepCashRegisterSumsReport.setFirmId(registry.getTradingCode());
|
||||
ksRepCashRegisterSumsReport.setAccount(registry.getAccount());
|
||||
ksRepCashRegisterSumsReport.setRegisterCode(registry.getRegistryCode());
|
||||
ksRepCashRegisterSumsReport.setAddDate(nowDate);
|
||||
ksRepCashRegisterSumsReport.setAddTime(null);
|
||||
ksRepCashRegisterSumsReport.setAddSum(registry.getCredit());
|
||||
rows.add(ksRepCashRegisterSumsReport);
|
||||
}
|
||||
if (registry.getDebit() != null) {
|
||||
KSRepCashRegisterSumsReport ksRepCashRegisterSumsReport = new KSRepCashRegisterSumsReport();
|
||||
ksRepCashRegisterSumsReport.setFirmId(registry.getTradingCode());
|
||||
ksRepCashRegisterSumsReport.setAccount(registry.getAccount());
|
||||
ksRepCashRegisterSumsReport.setRegisterCode(registry.getRegistryCode());
|
||||
ksRepCashRegisterSumsReport.setAddDate(nowDate);
|
||||
ksRepCashRegisterSumsReport.setAddTime(null);
|
||||
ksRepCashRegisterSumsReport.setAddSum(registry.getDebit().negate());
|
||||
rows.add(ksRepCashRegisterSumsReport);
|
||||
ImdgPredicateBuilder pbRegistry = registryImdg.predicateBuilder();
|
||||
Registry registry = registryImdg.getSingleObjectByPredicate(
|
||||
pbRegistry.and(
|
||||
pbRegistry.equals("companyId", statement.getAddresseeId()),
|
||||
pbRegistry.equals("account", statement.getAccount()),
|
||||
pbRegistry.in("accountType", AccountType.Clrn.getKey(), AccountType.Info.getKey()),
|
||||
pbRegistry.notNull("registryCode")
|
||||
)
|
||||
);
|
||||
if (registry == null) {
|
||||
log.warn(
|
||||
"Can't find registry for companyId = {} and account = {}. Statement id = {} skipped",
|
||||
statement.getAddresseeId(),
|
||||
statement.getAccount(),
|
||||
statement.getId()
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
KSRepCashRegisterSumsReport ksRepCashRegisterSumsReport = new KSRepCashRegisterSumsReport();
|
||||
ksRepCashRegisterSumsReport.setFirmId(String.valueOf(statement.getAddresseeId()));
|
||||
ksRepCashRegisterSumsReport.setAccount(statement.getAccount());
|
||||
ksRepCashRegisterSumsReport.setRegisterCode(registry.getRegistryCode());
|
||||
ksRepCashRegisterSumsReport.setAddDate(nowDate);
|
||||
ksRepCashRegisterSumsReport.setAddTime(LocalTime.ofInstant(statement.getUpdated(), ZoneId.systemDefault()));
|
||||
|
||||
InOutDirection inOutDirection = IEnumKey.getEnumByKey(InOutDirection.class, statement.getInOutDirection());
|
||||
if (inOutDirection == InOutDirection.in) {
|
||||
ksRepCashRegisterSumsReport.setAddSum(statement.getAmount());
|
||||
} else if (inOutDirection == InOutDirection.out) {
|
||||
ksRepCashRegisterSumsReport.setAddSum(statement.getAmount().negate());
|
||||
} else {
|
||||
log.warn(
|
||||
"Invalid statement.in_out_direction ({}). Statement id = {} skipped",
|
||||
statement.getInOutDirection(),
|
||||
statement.getId()
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
rows.add(ksRepCashRegisterSumsReport);
|
||||
|
||||
} catch (Throwable e) {
|
||||
log.error("Can't create report row for registry (id = %d), skipped".formatted(registry.getId()), e);
|
||||
log.error("Can't create report row for registry (id = %d), skipped".formatted(statement.getId()), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,12 @@ package ru.spcex.clearing.reports.reports.ks;
|
|||
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.security.MoneyMarketSecurity;
|
||||
import ru.clearing.classes.statics.data.security.Security;
|
||||
import ru.clearing.classes.statics.data.statement.Statement;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
|
||||
import ru.spcex.clearing.reports.reports.EmptyParams;
|
||||
|
|
@ -12,10 +17,12 @@ 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 ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
|
@ -23,14 +30,22 @@ import java.util.List;
|
|||
|
||||
@Component
|
||||
public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepDepoRegisterQuantitiesReport> {
|
||||
private final Imdg<Statement> statementImdg;
|
||||
private final Imdg<Registry> registryImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
|
||||
private final Imdg<EquitySecurity> equitySecurityImdg;
|
||||
private final Imdg<MoneyMarketSecurity> moneyMarketSecurityImdg;
|
||||
|
||||
private List<KSRepDepoRegisterQuantitiesReport> rows = null;
|
||||
|
||||
public KSRepDepoRegisterQuantitiesReportBuilder(ImdgProvider imdgProvider) {
|
||||
statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class);
|
||||
equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
|
||||
moneyMarketSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -63,49 +78,102 @@ public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<E
|
|||
LocalDate nowDate = LocalDate.now();
|
||||
Instant instantNow = Instant.now();
|
||||
|
||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||
String sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AS__).build();
|
||||
ImdgPredicateBuilder pb = statementImdg.predicateBuilder();
|
||||
ImdgPredicate finalPredicate = pb.and(
|
||||
pb.sql(sql),
|
||||
pb.greatEqual("updated", instantNow.truncatedTo(ChronoUnit.DAYS)),
|
||||
pb.less("updated", instantNow.plus(1, ChronoUnit.DAYS).truncatedTo(ChronoUnit.DAYS)),
|
||||
pb.equals("accountType", AccountType.Depo.getKey())
|
||||
pb.equals("inOutSDfType", InOutSDfType.type10.getKey()),
|
||||
pb.equals("operationStatus", OperationStatus.Executed.getKey())
|
||||
);
|
||||
Collection<Registry> registries = registryImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||
Collection<Statement> statements = statementImdg.getCollectionObjectsByPredicate(finalPredicate);
|
||||
|
||||
rows = new ArrayList<>(registries.size());
|
||||
for (Registry registry : registries) {
|
||||
rows = new ArrayList<>(statements.size());
|
||||
for (Statement statement : statements) {
|
||||
try {
|
||||
Company company = companyImdg.getSingleObjectByID(registry.getCompanyId());
|
||||
Company company = companyImdg.getSingleObjectByID(statement.getAddresseeId());
|
||||
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) continue;
|
||||
|
||||
// Если есть одновременно registry.credit и registry.debit, записываем две записи по одному registry
|
||||
if (registry.getCredit() != null) {
|
||||
KSRepDepoRegisterQuantitiesReport ksRepDepoRegisterQuantitiesReport = new KSRepDepoRegisterQuantitiesReport();
|
||||
ksRepDepoRegisterQuantitiesReport.setFirmId(registry.getTradingCode());
|
||||
ksRepDepoRegisterQuantitiesReport.setAccount(registry.getAccount());
|
||||
ksRepDepoRegisterQuantitiesReport.setSecurityId(registry.getSecuritySymbol());
|
||||
ksRepDepoRegisterQuantitiesReport.setRegisterCode(registry.getRegistryCode());
|
||||
ksRepDepoRegisterQuantitiesReport.setAddTime(null);
|
||||
ksRepDepoRegisterQuantitiesReport.setAddDate(nowDate);
|
||||
ksRepDepoRegisterQuantitiesReport.setAddQuantity(registry.getCredit());
|
||||
rows.add(ksRepDepoRegisterQuantitiesReport);
|
||||
}
|
||||
if (registry.getDebit() != null) {
|
||||
KSRepDepoRegisterQuantitiesReport ksRepDepoRegisterQuantitiesReport = new KSRepDepoRegisterQuantitiesReport();
|
||||
ksRepDepoRegisterQuantitiesReport.setFirmId(registry.getTradingCode());
|
||||
ksRepDepoRegisterQuantitiesReport.setAccount(registry.getAccount());
|
||||
ksRepDepoRegisterQuantitiesReport.setSecurityId(registry.getSecuritySymbol());
|
||||
ksRepDepoRegisterQuantitiesReport.setRegisterCode(registry.getRegistryCode());
|
||||
ksRepDepoRegisterQuantitiesReport.setAddTime(null);
|
||||
ksRepDepoRegisterQuantitiesReport.setAddDate(nowDate);
|
||||
ksRepDepoRegisterQuantitiesReport.setAddQuantity(registry.getDebit().negate());
|
||||
rows.add(ksRepDepoRegisterQuantitiesReport);
|
||||
ImdgPredicateBuilder pbRegistry = registryImdg.predicateBuilder();
|
||||
Registry registry = registryImdg.getSingleObjectByPredicate(
|
||||
pbRegistry.and(
|
||||
pbRegistry.equals("companyId", statement.getAddresseeId()),
|
||||
pbRegistry.equals("account", statement.getAccount()),
|
||||
pbRegistry.equals("accountType", AccountType.Depo.getKey()),
|
||||
pbRegistry.notNull("registryCode")
|
||||
)
|
||||
);
|
||||
if (registry == null) {
|
||||
log.warn(
|
||||
"Can't find registry for companyId = {} and account: {}. Statement id = {} skipped",
|
||||
statement.getAddresseeId(),
|
||||
statement.getAccount(),
|
||||
statement.getId()
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
Security security = getSecurityWithSecuritySymbolForId(statement.getSecurityId());
|
||||
if (security == null) {
|
||||
log.warn(
|
||||
"Can't find security for securityId = {}. Statement id = {} skipped",
|
||||
statement.getSecurityId(),
|
||||
statement.getId()
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
KSRepDepoRegisterQuantitiesReport ksRepDepoRegisterQuantitiesReport = new KSRepDepoRegisterQuantitiesReport();
|
||||
ksRepDepoRegisterQuantitiesReport.setFirmId(String.valueOf(statement.getAddresseeId()));
|
||||
ksRepDepoRegisterQuantitiesReport.setAccount(statement.getAccount());
|
||||
ksRepDepoRegisterQuantitiesReport.setSecurityId(security.getSecuritySymbol());
|
||||
ksRepDepoRegisterQuantitiesReport.setRegisterCode(registry.getRegistryCode());
|
||||
ksRepDepoRegisterQuantitiesReport.setAddDate(nowDate);
|
||||
ksRepDepoRegisterQuantitiesReport.setAddTime(LocalTime.ofInstant(statement.getUpdated(), ZoneId.systemDefault()));
|
||||
|
||||
InOutDirection inOutDirection = IEnumKey.getEnumByKey(InOutDirection.class, statement.getInOutDirection());
|
||||
if (inOutDirection == InOutDirection.in) {
|
||||
ksRepDepoRegisterQuantitiesReport.setAddQuantity(statement.getAmount());
|
||||
} else if (inOutDirection == InOutDirection.out) {
|
||||
ksRepDepoRegisterQuantitiesReport.setAddQuantity(statement.getAmount().negate());
|
||||
} else {
|
||||
log.warn(
|
||||
"Invalid statement.in_out_direction ({}). Statement id = {} skipped",
|
||||
statement.getInOutDirection(),
|
||||
statement.getId()
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
rows.add(ksRepDepoRegisterQuantitiesReport);
|
||||
} catch (Throwable e) {
|
||||
log.error("Can't create report row for registry (id = %d), skipped".formatted(registry.getId()), e);
|
||||
log.error("Can't create report row for registry (id = %d), skipped".formatted(statement.getId()), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Security getSecurityWithSecuritySymbolForId(Long securityId) {
|
||||
Security security;
|
||||
security = equitySecurityImdg.getFirstObjectByPredicate(
|
||||
equitySecurityImdg.predicateBuilder().and(
|
||||
equitySecurityImdg.predicateBuilder().equals("securityId", securityId),
|
||||
equitySecurityImdg.predicateBuilder().notNull("securitySymbol")
|
||||
)
|
||||
);
|
||||
if (security == null) {
|
||||
security = fixedIncomeSecurityImdg.getFirstObjectByPredicate(
|
||||
fixedIncomeSecurityImdg.predicateBuilder().and(
|
||||
fixedIncomeSecurityImdg.predicateBuilder().equals("securityId", securityId),
|
||||
fixedIncomeSecurityImdg.predicateBuilder().notNull("securitySymbol")
|
||||
)
|
||||
);
|
||||
}
|
||||
if (security == null)
|
||||
security = moneyMarketSecurityImdg.getFirstObjectByPredicate(
|
||||
moneyMarketSecurityImdg.predicateBuilder().and(
|
||||
moneyMarketSecurityImdg.predicateBuilder().equals("securityId", securityId),
|
||||
moneyMarketSecurityImdg.predicateBuilder().notNull("securitySymbol")
|
||||
)
|
||||
);
|
||||
return security;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,11 +123,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
|||
} else if (coverage == CoverageStatus.DNED) {
|
||||
|
||||
String marketCode = execution.getMarket();
|
||||
Market market = marketImdg.getSingleObjectByFieldValues(Map.of(
|
||||
"code",
|
||||
marketCode
|
||||
)
|
||||
);
|
||||
Market market = marketImdg.getFirstObjectByFieldValues(Map.of("code", marketCode));
|
||||
if (market == null) {
|
||||
log.warn(
|
||||
"Broken execution (can't find market for market.code = {}). Execution (id = {}) skipped",
|
||||
|
|
|
|||
|
|
@ -18,10 +18,12 @@ import ru.clearing.classes.statics.data.company.Company;
|
|||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
||||
import ru.clearing.classes.statics.data.misc.Market;
|
||||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.statement.Statement;
|
||||
import ru.clearing.platform.dictionary.RegistryCodeDictionary;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
|
|
@ -70,6 +72,7 @@ public class ReportServiceTest_KS {
|
|||
private static int reportRequestWithSessionIdCnt = 0;
|
||||
private static int reportRequestWithSessionIdListCnt = 0;
|
||||
private static int reportRequestWithPeriodCnt = 0;
|
||||
private Imdg<Statement> statementImdg;
|
||||
private Imdg<Registry> registryImdg;
|
||||
private Imdg<Market> marketImdg;
|
||||
private Imdg<Company> companyImdg;
|
||||
|
|
@ -79,6 +82,7 @@ public class ReportServiceTest_KS {
|
|||
private Imdg<Session> sessionImdg;
|
||||
private Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private Imdg<ProfileDocument> profileDocumentImdg;
|
||||
private Imdg<EquitySecurity> equitySecurityImdg;
|
||||
|
||||
private Long COMPANY_ID;
|
||||
@Autowired
|
||||
|
|
@ -161,17 +165,21 @@ public class ReportServiceTest_KS {
|
|||
|
||||
Registry registry_1 = new Registry();
|
||||
registry_1.setCompanyId(COMPANY_ID);
|
||||
registry_1.setRegistryCode("AM__");
|
||||
registry_1.setRegistryDesignation(RegistryDesignation.A.getKey());
|
||||
registry_1.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
|
||||
registry_1.setUpdated(Instant.now());
|
||||
registry_1.setTradingCode("TRADING_CODE");
|
||||
registry_1.setAccount("ACCOUNT");
|
||||
registry_1.setAccountType(AccountType.Clrn.getKey());
|
||||
registry_1.setDebit(BigDecimal.valueOf(22.2222222));
|
||||
registry_1.setCredit(BigDecimal.valueOf(44.4444444));
|
||||
registry_1.setRegistryCode(RegistryCode.T.getKey());
|
||||
registryImdg.insert(registry_1);
|
||||
|
||||
Statement statement_1 = new Statement();
|
||||
statement_1.setAddresseeId(COMPANY_ID);
|
||||
statement_1.setAccount("ACCOUNT");
|
||||
statement_1.setInOutDirection(InOutDirection.in.getKey());
|
||||
statement_1.setInOutSDfType(InOutSDfType.type6.getKey());
|
||||
statement_1.setOperationStatus(OperationStatus.Executed.getKey());
|
||||
statement_1.setAmount(BigDecimal.valueOf(7777.777777777));
|
||||
statement_1.setUpdated(Instant.now());
|
||||
statementImdg.insert(statement_1);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
|
|
@ -184,9 +192,10 @@ public class ReportServiceTest_KS {
|
|||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/ks/KS_REP_CASH_REGISTER_SUMS_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("ADD_DATE"));
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("FIRMID", "ADD_DATE", "ADD_TIME"));
|
||||
|
||||
registryImdg.delete(registry_1);
|
||||
statementImdg.delete(statement_1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -248,18 +257,27 @@ public class ReportServiceTest_KS {
|
|||
|
||||
Registry registry_1 = new Registry();
|
||||
registry_1.setCompanyId(COMPANY_ID);
|
||||
registry_1.setRegistryCode("AS__");
|
||||
registry_1.setRegistryDesignation(RegistryDesignation.A.getKey());
|
||||
registry_1.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
|
||||
registry_1.setSecuritySymbol("SECURITY_SYMBOL");
|
||||
registry_1.setUpdated(Instant.now());
|
||||
registry_1.setTradingCode("TRADING_CODE");
|
||||
registry_1.setAccount("ACCOUNT");
|
||||
registry_1.setAccountType(AccountType.Depo.getKey());
|
||||
registry_1.setDebit(BigDecimal.valueOf(22.2222222));
|
||||
registry_1.setCredit(BigDecimal.valueOf(44.4444444));
|
||||
registry_1.setRegistryCode(RegistryCode.T.getKey());
|
||||
registryImdg.insert(registry_1);
|
||||
|
||||
EquitySecurity equitySecurity = new EquitySecurity();
|
||||
equitySecurity.setSecuritySymbol("value");
|
||||
equitySecurity.setSecurityId(777L);
|
||||
equitySecurityImdg.insert(equitySecurity);
|
||||
|
||||
Statement statement_1 = new Statement();
|
||||
statement_1.setAddresseeId(COMPANY_ID);
|
||||
statement_1.setAccount("ACCOUNT");
|
||||
statement_1.setInOutDirection(InOutDirection.in.getKey());
|
||||
statement_1.setInOutSDfType(InOutSDfType.type10.getKey());
|
||||
statement_1.setOperationStatus(OperationStatus.Executed.getKey());
|
||||
statement_1.setAmount(BigDecimal.valueOf(7777.777777777));
|
||||
statement_1.setUpdated(Instant.now());
|
||||
statement_1.setSecurityId(777L);
|
||||
statementImdg.insert(statement_1);
|
||||
|
||||
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||
|
||||
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||
|
|
@ -272,9 +290,11 @@ public class ReportServiceTest_KS {
|
|||
|
||||
File outFile = outFolder.listFiles()[0];
|
||||
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/ks/KS_REP_DEPO_REGISTER_QUANTITIES_expected.csv").getFile());
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("ADD_DATE"));
|
||||
compareCSVFiles(expectedFile, outFile, Arrays.asList("FIRMID", "ADD_DATE", "ADD_TIME"));
|
||||
|
||||
registryImdg.delete(registry_1);
|
||||
equitySecurityImdg.delete(equitySecurity);
|
||||
statementImdg.delete(statement_1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -560,15 +580,6 @@ public class ReportServiceTest_KS {
|
|||
session_1.setClearingDate(LocalDate.now());
|
||||
sessionImdg.insert(session_1);
|
||||
|
||||
Session session_2 = new Session();
|
||||
session_2.setCreated(Instant.ofEpochSecond(3777777777L));
|
||||
session_2.setUpdated(Instant.ofEpochSecond(4777777777L));
|
||||
session_2.setSection(Section.FOND.getKey());
|
||||
session_2.setSessionType(SessionType.IPO0.getKey());
|
||||
session_2.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||
session_2.setClearingDate(LocalDate.now());
|
||||
sessionImdg.insert(session_2);
|
||||
|
||||
ReportRequest reportRequest = new ReportRequest();
|
||||
reportRequest.setReportId(ReportBuilderType.KS_SESSION_LIST.getKey());
|
||||
|
||||
|
|
@ -587,7 +598,6 @@ public class ReportServiceTest_KS {
|
|||
compareCSVFiles(expectedFile, outFile, List.of("ID"));
|
||||
|
||||
sessionImdg.delete(session_1);
|
||||
sessionImdg.delete(session_2);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -652,6 +662,8 @@ public class ReportServiceTest_KS {
|
|||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
|
||||
statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
|
||||
}
|
||||
|
||||
private void clearTestDir() throws IOException {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,2 @@
|
|||
"FIRMID","ACCOUNT","REGISTER_CODE","ADD_SUM","ADD_TIME","ADD_DATE"
|
||||
"TRADING_CODE","ACCOUNT","AM__","44.44","","2023-07-07"
|
||||
"TRADING_CODE","ACCOUNT","AM__","-22.22","","2023-07-07"
|
||||
"1","ACCOUNT","T","7777.78","17:00:50","17.07.2023"
|
||||
|
|
|
|||
|
|
|
@ -1,3 +1,2 @@
|
|||
"FIRMID","ACCOUNT","SECURITYID","REGISTER_CODE","ADD_QUANTITY","ADD_TIME","ADD_DATE"
|
||||
"TRADING_CODE","ACCOUNT","SECURITY_SYMBOL","AS__","44.44","","07.07.2023"
|
||||
"TRADING_CODE","ACCOUNT","SECURITY_SYMBOL","AS__","-22.22","","07.07.2023"
|
||||
"1","ACCOUNT","value","T","7777.78","18:39:59","17.07.2023"
|
||||
|
|
|
|||
|
|
|
@ -1,3 +1,2 @@
|
|||
"ID","CREATED_AT","UPDATED_AT","SESSION_DATE","SESSION_TYPE","WORKFLOW_STATUS"
|
||||
"2","03.05.2026T03:09:37","09.01.2058T04:56:17","MKR","FINL","ACTV"
|
||||
"3","17.09.2089T06:42:57","27.05.2121T08:29:37","FOND","IPO0","BLKD"
|
||||
|
|
|
|||
|
|
|
@ -3,7 +3,14 @@ package ru.spcex.platform.enumeration;
|
|||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
public enum InOutSDfType implements IEnumKey {
|
||||
type1("0102"), type6("0607"), type16("1617"), type9("0910"), type57("57"), type08("0809");
|
||||
type1("0102"),
|
||||
type6("0607"),
|
||||
type16("1617"),
|
||||
type9("0910"),
|
||||
type57("57"),
|
||||
type08("0809"),
|
||||
type10("1011"),
|
||||
;
|
||||
|
||||
private final String key;
|
||||
|
||||
|
|
|
|||
|
|
@ -296,6 +296,15 @@ public class ImdgHazelcast<T extends SpcexObjectBase> implements Imdg<T> {
|
|||
return els.size() == 1 ? els.iterator().next() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T getFirstObjectByPredicate(ImdgPredicate predicate) {
|
||||
Collection<T> els = getCollectionObjectsByPredicate(predicate);
|
||||
Iterator<T> iterator = els.iterator();
|
||||
if (iterator.hasNext()) {
|
||||
return iterator.next();
|
||||
} else return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImdgPredicateBuilder predicateBuilder() {
|
||||
return ImdgPredicateBuilderHazelcast.instance();
|
||||
|
|
|
|||
|
|
@ -114,6 +114,11 @@ public interface Imdg<T extends SpcexObjectBase> {
|
|||
throw new UnsupportedOperationException("not implemented getSingleObjectByPredicate");
|
||||
}
|
||||
|
||||
// Predicate API
|
||||
default T getFirstObjectByPredicate(ImdgPredicate predicate) {
|
||||
throw new UnsupportedOperationException("not implemented getFirstObjectByPredicate");
|
||||
}
|
||||
|
||||
default ImdgPredicateBuilder predicateBuilder() {
|
||||
throw new UnsupportedOperationException("not implemented predicateBuilder API");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue