diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/db_direct/DBProvider.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/db_direct/DBProvider.java index da314c098..339a5d9ff 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/db_direct/DBProvider.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/db_direct/DBProvider.java @@ -248,7 +248,7 @@ public class DBProvider implements ImdgProvider { this.fieldsMatcherForTable.put(RegistryCodeDictionary.class, registryCodeDictionaryMatcher); Map clearingMemberCategoryMatcher = new HashMap<>(); - clearingMemberCategoryMatcher.put("company_id", "company_id"); + clearingMemberCategoryMatcher.put("companyId", "company_id"); clearingMemberCategoryMatcher.put("clearingMemberCategory", "clearing_member_category"); clearingMemberCategoryMatcher.put("id", "id"); this.fieldsMatcherForTable.put(ClearingMemberCategory.class, clearingMemberCategoryMatcher); @@ -300,7 +300,7 @@ public class DBProvider implements ImdgProvider { executionCurrencyMatcher.put("settlementAmount", "settlement_amount"); executionCurrencyMatcher.put("quantity", "quantity"); executionCurrencyMatcher.put("side", "side"); - executionCurrencyMatcher.put("currencyCode", "_currency_code"); + executionCurrencyMatcher.put("currencyCode", "currency_code"); executionCurrencyMatcher.put("settlementOrganization", "settlement_organization"); executionCurrencyMatcher.put("coverageStatus", "coverage_status"); executionCurrencyMatcher.put("sessionId", "session_id"); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java index 260c1d456..042f31ebc 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java @@ -1,5 +1,13 @@ package ru.spcex.clearing.reports.services; +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.producer.Producer; import org.slf4j.Logger; @@ -35,11 +43,6 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.validation.IValidator; -import java.io.File; -import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; - @Service public class ReportService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -146,147 +149,167 @@ public class ReportService extends QueueConsumer implements InitializingBean { public RequestInfoUpdate createReport(BaseRequest userRequest) { log.debug("ReportRequest received"); - RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestValidator); - if (requestInfoUpdate != null) return null; + try { + RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestValidator); + if (requestInfoUpdate != null) return null; - ReportRequest req = userRequest.getRequestPayload(); + ReportRequest req = userRequest.getRequestPayload(); - logUnknownProperties(userRequest); + logUnknownProperties(userRequest); - log.debug("Create report type {}...", req.getReportId()); + log.debug("Create report type {}...", req.getReportId()); - List> builders = reportBuildersWithoutParams.get( + List> builders = reportBuildersWithoutParams.get( IEnumKey.getEnumByKey(ReportBuilderType.class, req.getReportId()) - ); - List outFilenames = new ArrayList<>(); - List outFiles = new ArrayList<>(); - for (CSVReportBuilder builder : builders) { - File outFile = builder.createReport(new EmptyParams(), outFolder); - if (outFile == null) continue; - outFilenames.add(outFile.getAbsolutePath()); - outFiles.add(outFile); - } + ); + List outFilenames = new ArrayList<>(); + List outFiles = new ArrayList<>(); + for (CSVReportBuilder builder : builders) { + File outFile = builder.createReport(new EmptyParams(), outFolder); + if (outFile == null) continue; + outFilenames.add(outFile.getAbsolutePath()); + outFiles.add(outFile); + } - 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)); - } + 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)); + } - sendFilesToSftp(outFiles); + sendFilesToSftp(outFiles); + } catch (Exception e) { + log.error("Unexpected exception", e); + } return null; } public RequestInfoUpdate createReportForSessionId(BaseRequest userRequest) { log.debug("ReportRequestWithSessionId received"); - RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdValidator); - if (requestInfoUpdate != null) return null; + try { + RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdValidator); + if (requestInfoUpdate != null) return null; - ReportRequestWithSessionId req = userRequest.getRequestPayload(); + ReportRequestWithSessionId req = userRequest.getRequestPayload(); - logUnknownProperties(userRequest); + logUnknownProperties(userRequest); - log.debug("Create report type {}...", req.getReportId()); + log.debug("Create report type {}...", req.getReportId()); - List> builders = reportBuildersWithSessionIdParam.get( + List> builders = reportBuildersWithSessionIdParam.get( IEnumKey.getEnumByKey(ReportBuilderType.class, req.getReportId()) - ); - List outFilenames = new ArrayList<>(); - List outFiles = new ArrayList<>(); - for (CSVReportBuilder builder : builders) { - SessionIdParam sessionIdParam = new SessionIdParam(); - sessionIdParam.setSessionId(List.of(req.getSessionId())); - File outFile = builder.createReport(sessionIdParam, outFolder); - if (outFile == null) continue; - outFilenames.add(outFile.getAbsolutePath()); - } + ); + List outFilenames = new ArrayList<>(); + List outFiles = new ArrayList<>(); + for (CSVReportBuilder builder : builders) { + SessionIdParam sessionIdParam = new SessionIdParam(); + sessionIdParam.setSessionId(List.of(req.getSessionId())); + File outFile = builder.createReport(sessionIdParam, outFolder); + if (outFile == null) continue; + outFilenames.add(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)); - } + 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)); + } - sendFilesToSftp(outFiles); + sendFilesToSftp(outFiles); + } catch (Exception e) { + log.error("Unexpected exception", e); + } return null; } public RequestInfoUpdate createReportForGREP(BaseRequest userRequest) { log.debug("GREP task received"); - RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestGREPValidator); - if (requestInfoUpdate != null) return null; - logUnknownProperties(userRequest); + try { + RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestGREPValidator); + if (requestInfoUpdate != null) return null; + logUnknownProperties(userRequest); - List sessionIds = null; - if (userRequest.getRequestPayload().getSessionId() != null) { - sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); + List sessionIds = null; + if (userRequest.getRequestPayload().getSessionId() != null) { + sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); + } + Map outFiles = createReportsForTask(sessionIds, reportBuildersForGREP.values()); + + sendReportsToGateway(sessionIds, outFiles, ReportType.REPORT_KS_TMP.getKey()); + sendFilesToSftp(outFiles.keySet()); + } catch (Exception e) { + log.error("Unexpected exception", e); } - Map outFiles = createReportsForTask(sessionIds, reportBuildersForGREP.values()); - - sendReportsToGateway(sessionIds, outFiles, ReportType.REPORT_KS_TMP.getKey()); - sendFilesToSftp(outFiles.keySet()); return null; } public RequestInfoUpdate createReportForGRET(BaseRequest userRequest) { log.debug("GRET task received"); - RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestGRETValidator); - if (requestInfoUpdate != null) return null; - logUnknownProperties(userRequest); + try { + RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestGRETValidator); + if (requestInfoUpdate != null) return null; + logUnknownProperties(userRequest); - List sessionIds = null; - if (userRequest.getRequestPayload().getSessionId() != null) { - sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); - } - Map outFiles = createReportsForTask(sessionIds, reportBuildersForGRET.values()); - - Map outFilesWithReportType_PFX64 = new HashMap<>(); - Map outFilesWithReportType_PFX65 = new HashMap<>(); - for (Map.Entry entry : outFiles.entrySet()) { - File reportFile = entry.getKey(); - ReportInfo reportInfo = entry.getValue(); - ReportKeys reportKey = IEnumKey.getEnumByKey(ReportKeys.class, reportInfo.reportKey()); - if (reportKey == ReportKeys.KS_BR_PFX65_DEALS) { - outFilesWithReportType_PFX65.put(reportFile, reportInfo); - } else if ( - reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_1 || - reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_2 || - reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_3 || - reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_4 - ) { - outFilesWithReportType_PFX64.put(reportFile, reportInfo); + List sessionIds = null; + if (userRequest.getRequestPayload().getSessionId() != null) { + sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); } + Map outFiles = createReportsForTask(sessionIds, reportBuildersForGRET.values()); + + Map outFilesWithReportType_PFX64 = new HashMap<>(); + Map outFilesWithReportType_PFX65 = new HashMap<>(); + for (Map.Entry entry : outFiles.entrySet()) { + File reportFile = entry.getKey(); + ReportInfo reportInfo = entry.getValue(); + ReportKeys reportKey = IEnumKey.getEnumByKey(ReportKeys.class, reportInfo.reportKey()); + if (reportKey == ReportKeys.KS_BR_PFX65_DEALS) { + outFilesWithReportType_PFX65.put(reportFile, reportInfo); + } else if ( + reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_1 || + reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_2 || + reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_3 || + reportKey == ReportKeys.KS_BR_PFX64_INFTYPE_4 + ) { + outFilesWithReportType_PFX64.put(reportFile, reportInfo); + } + } + sendReportsToGateway(sessionIds, outFilesWithReportType_PFX64, ReportType.PFX64.getKey()); + sendReportsToGateway(sessionIds, outFilesWithReportType_PFX65, ReportType.PFX65.getKey()); + sendFilesToSftp(outFiles.keySet()); + } catch (Exception e) { + log.error("Unexpected exception", e); } - sendReportsToGateway(sessionIds, outFilesWithReportType_PFX64, ReportType.PFX64.getKey()); - sendReportsToGateway(sessionIds, outFilesWithReportType_PFX65, ReportType.PFX65.getKey()); - sendFilesToSftp(outFiles.keySet()); return null; } public RequestInfoUpdate createReportForGREF(BaseRequest userRequest) { log.debug("GREF task received"); - RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestGREFValidator); - if (requestInfoUpdate != null) return null; - logUnknownProperties(userRequest); + try { + RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestGREFValidator); + if (requestInfoUpdate != null) return null; + logUnknownProperties(userRequest); - List sessionIds = null; - if (userRequest.getRequestPayload().getSessionId() != null) { - sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); + List sessionIds = null; + if (userRequest.getRequestPayload().getSessionId() != null) { + sessionIds = List.of(userRequest.getRequestPayload().getSessionId()); + } + Map outFiles = createReportsForTask(sessionIds, reportBuildersForGREF.values()); + + sendReportsToGateway(sessionIds, outFiles, ReportType.REPORT_KS_FINAL.getKey()); + sendFilesToSftp(outFiles.keySet()); + } catch (Exception e) { + log.error("Unexpected exception", e); } - Map outFiles = createReportsForTask(sessionIds, reportBuildersForGREF.values()); - - sendReportsToGateway(sessionIds, outFiles, ReportType.REPORT_KS_FINAL.getKey()); - sendFilesToSftp(outFiles.keySet()); return null; }