diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java index 9fbfe63f5..db4e3a829 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSCommissionTradesReportBuilder.java @@ -23,7 +23,6 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Map; @Component public class KSCommissionTradesReportBuilder extends CSVReportBuilder { @@ -102,42 +101,15 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder executionDeposits = executionDepositImdg.getCollectionObjectsByPredicate( @@ -200,7 +170,7 @@ public class KSCommissionTradesReportBuilder extends CSVReportBuilder { private final Imdg statementImdg; private final Imdg registryImdg; private final Imdg companyImdg; + private final Imdg tradingClearingRegistryImdg; private List rows = null; @@ -36,6 +39,7 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder registries = registryImdg.getCollectionObjectsByPredicate( @@ -122,7 +142,8 @@ public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder registries = registryImdg.getCollectionObjectsByPredicate(finalPredicate); @@ -99,9 +100,7 @@ public class KSRepDepoRegistersReportBuilder extends CSVReportBuilder { @@ -97,17 +96,17 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder registryCollection = registryImdg.getCollectionObjectsByPredicate( + pbExecutionFond.and( + registryPredicate, pbExecutionFond.equals("groupId", groupId) + ) ); - continue; - } - ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); - String groupId = "%s%d%s".formatted( - dateFormatter_yyyyMMdd.format(nowDate), - execution.getExchangeExecutionId(), - market.getId() - ); - - String sql = RegistryCodeSqlBuilder.getInstance( - RegistryTradingParams.OS_T, - RegistryTradingParams.TS_T, - RegistryTradingParams.OM_T, - RegistryTradingParams.TM_T - ).build(); - Collection registryCollection = registryImdg.getCollectionObjectsByPredicate( - pb.and( - pb.sql(sql), - pb.equals("groupId", groupId) - ) - ); - if (registryCollection.isEmpty()) { - log.warn( - "Broken execution (empty registries). Registry for groupId = {} not found. Execution (id = {}) skipped", - groupId, - execution.getId() - ); - continue; - } - - boolean allNACCorNACK = checkRegistryStatus(registryCollection, List.of(RegistryStatus.NACK, RegistryStatus.NACC)); - boolean allFAILorUNCV = checkRegistryStatus(registryCollection, List.of(RegistryStatus.FAIL, RegistryStatus.UNCV)); - if (!allFAILorUNCV && !allNACCorNACK) { - log.warn( - "Broken execution (invalid registry statuses). Registry for groupId = {} has invalid registry set. Id = [{}]. Execution (id = {}) skipped", - groupId, - registryCollection.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(",")), - execution.getId() - ); - continue; - } - - if (allFAILorUNCV) { - boolean allS = checkRegistryInstrumentType(registryCollection, List.of(RegistryInstrumentType.S)); - boolean allM = checkRegistryInstrumentType(registryCollection, List.of(RegistryInstrumentType.M)); - if (!allS && !allM) { + if (registryCollection.isEmpty()) { log.warn( - "Broken execution (different instrument types). Registry for groupId = {} has invalid registry set. Id = [{}]. Execution (id = {}) skipped", + "Broken execution (empty registries). Registry for groupId = {} not found. Execution (id = {}) skipped", groupId, - registryCollection.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(",")), execution.getId() ); continue; } - status = allS ? "3" : "2"; - } else status = "0"; + boolean allOk = checkRegistryStatus( + registryCollection, + List.of(RegistryStatus.NACK, RegistryStatus.NACC, RegistryStatus.FAIL, RegistryStatus.UNCV) + ); + if (allOk) { + for (Registry registry : registryCollection) { + RegistryInstrumentType registryInstrumentType = IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()); + if (registryInstrumentType == RegistryInstrumentType.M) { + ksRepTradesReport.setStatus("2"); + break; + } + if (registryInstrumentType == RegistryInstrumentType.S) { + ksRepTradesReport.setStatus("3"); + break; + } + } + } + } } } diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java index fd67852cc..71e64c46f 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java @@ -181,14 +181,19 @@ public class ReportServiceTest_KS { registry_1.setTradingClearingRegistry("TRADING_CLEARING_REGISTRY"); registryImdg.insert(registry_1); + TradingClearingRegistry tkr = new TradingClearingRegistry(); + tkr.setMoneyAccountId(777L); + tradingClearingRegistryImdg.insert(tkr); + Statement statement_1 = new Statement(); statement_1.setAddresseeId(COMPANY_ID); statement_1.setAccount("ACCOUNT"); + statement_1.setAccountId(777L); statement_1.setInOutDirection(InOutDirection.in.getKey()); statement_1.setInOutSDfType(InOutSDfType.type57.getKey()); statement_1.setOperationStatus(OperationStatus.Executed.getKey()); statement_1.setAmount(BigDecimal.valueOf(7777.777777777)); - statement_1.setUpdated(Instant.now()); + statement_1.setCreated(Instant.now()); statementImdg.insert(statement_1); String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); @@ -207,6 +212,7 @@ public class ReportServiceTest_KS { registryImdg.delete(registry_1); statementImdg.delete(statement_1); + tradingClearingRegistryImdg.delete(tkr); } @Test @@ -276,6 +282,7 @@ public class ReportServiceTest_KS { registry_1.setRegistryDesignation("A"); registry_1.setRegistryInstrumentType("S"); registry_1.setRegistryUnit("T"); + registryImdg.insert(registry_1); EquitySecurity equitySecurity = new EquitySecurity(); @@ -290,7 +297,7 @@ public class ReportServiceTest_KS { statement_1.setInOutSDfType(InOutSDfType.type21.getKey()); statement_1.setOperationStatus(OperationStatus.Executed.getKey()); statement_1.setAmount(BigDecimal.valueOf(7777.777777777)); - statement_1.setUpdated(Instant.now()); + statement_1.setCreated(Instant.now()); statement_1.setSecurityId(777L); statementImdg.insert(statement_1); diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv index 78306fa0f..82be43293 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_COMMISSION_TRADES_expected.csv @@ -1,2 +1,2 @@ "FIRM_ID","FIRM_ID_INITIATOR","SECCODE","CLASS_CODE","AGREEMENT_NUMBER","AGREEMENT_NUMBER_POSTFIX","AGREEMENT_DATE","SUM","REPAYM_DATE","EXEC_STATUS" -"CLEARING_CODE","COMPANY_SYMBOL_VALUE","SECURITY_SYMBOL","market","CONT","CONT~RACT","01.01.1991","77.78","05.09.2023","OK" +"CLEARING_CODE","TRADING_CODE","SECURITY_SYMBOL","market","CONT","CONT~RACT","01.01.1991","77.78","05.09.2023","Исполнено" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTERS_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTERS_expected.csv index 5ca4fa93c..c35bdee4f 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTERS_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_CASH_REGISTERS_expected.csv @@ -1,2 +1,2 @@ "FIRMID","ACCOUNT","TKR","DATE","REGISTER_CODE","REGISTER_NAME","OPEN_BALANCE","CHANGE_BALANCE","ADD_WITHDRAW","CLOSE_BALANCE","REMARKS","TRADE_NUM" -"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","AM_T","AM_T_NAME","77.78","66.67","66.67","11.11","","" +"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","AM_T","AM_T_NAME","77.78","66.67","66.67","211.11","","" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTERS_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTERS_expected.csv index 94c4d6ce3..a2140ad54 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTERS_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_DEPO_REGISTERS_expected.csv @@ -1,2 +1,2 @@ "FIRMID","ACCOUNT","TKR","DATE","SECURITYID","REGISTER_CODE","REGISTER_NAME","OPEN_QUANTITY","CHANGE_QUANTITY","ADD_WITHDRAW_DEPO","CLOSE_QUANTITY","REMARKS","TRADE_NUM" -"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","","AS_T","AS_T_NAME","78","67","67","11","","" +"TRADING_CODE","ACCOUNT","TRADING_CLEARING_REGISTRY","01.08.2023","","AS_T","AS_T_NAME","78","67","67","211","","" diff --git a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_TRADES_expected.csv b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_TRADES_expected.csv index 66ebef9dd..288861943 100644 --- a/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_TRADES_expected.csv +++ b/clearing-parent/reports-service/src/test/resources/expected_reports_csv/ks/KS_REP_TRADES_expected.csv @@ -1,3 +1,3 @@ "SESSION_ID","SESSION_DATE","TR_ID","FIRM_ID","TKR","CASH_LIABILITY","DEPO_LIABILITY","TRADE_NUM","CLASS_CODE","TRADE_DATE","STATUS" -"4","20.01.1970T07:09:07","8","TRADING_CODE","TKR","8888.89","0","222",3333,"20.01.1970T02:49:58","3" +"4","20.01.1970T07:09:07","8","TRADING_CODE","TKR","8888.89","0","222",3333,"20.01.1970T02:49:58","0" "3","20.01.1970T15:54:43","5","TRADING_CODE","TKR","8888.89","123","222",3333,"20.01.1970T02:49:58","1"