reports-service: http://jira.mfd.msk:8088/browse/CLS-711
This commit is contained in:
parent
3f57080c16
commit
05b19f488a
2 changed files with 126 additions and 103 deletions
|
|
@ -248,7 +248,7 @@ public class DBProvider implements ImdgProvider {
|
|||
this.fieldsMatcherForTable.put(RegistryCodeDictionary.class, registryCodeDictionaryMatcher);
|
||||
|
||||
Map<String, String> 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");
|
||||
|
|
|
|||
|
|
@ -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<ReportRequest> 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<CSVReportBuilder<EmptyParams, ?>> builders = reportBuildersWithoutParams.get(
|
||||
List<CSVReportBuilder<EmptyParams, ?>> builders = reportBuildersWithoutParams.get(
|
||||
IEnumKey.getEnumByKey(ReportBuilderType.class, req.getReportId())
|
||||
);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
List<File> outFiles = new ArrayList<>();
|
||||
for (CSVReportBuilder<EmptyParams, ?> builder : builders) {
|
||||
File outFile = builder.createReport(new EmptyParams(), outFolder);
|
||||
if (outFile == null) continue;
|
||||
outFilenames.add(outFile.getAbsolutePath());
|
||||
outFiles.add(outFile);
|
||||
}
|
||||
);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
List<File> outFiles = new ArrayList<>();
|
||||
for (CSVReportBuilder<EmptyParams, ?> 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<ReportRequestWithSessionId> 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<CSVReportBuilder<SessionIdParam, ?>> builders = reportBuildersWithSessionIdParam.get(
|
||||
List<CSVReportBuilder<SessionIdParam, ?>> builders = reportBuildersWithSessionIdParam.get(
|
||||
IEnumKey.getEnumByKey(ReportBuilderType.class, req.getReportId())
|
||||
);
|
||||
List<String> outFilenames = new ArrayList<>();
|
||||
List<File> outFiles = new ArrayList<>();
|
||||
for (CSVReportBuilder<SessionIdParam, ?> 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<String> outFilenames = new ArrayList<>();
|
||||
List<File> outFiles = new ArrayList<>();
|
||||
for (CSVReportBuilder<SessionIdParam, ?> 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<LauncherCommandRequest> 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<Long> sessionIds = null;
|
||||
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||
List<Long> sessionIds = null;
|
||||
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||
}
|
||||
Map<File, ReportInfo> 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<File, ReportInfo> outFiles = createReportsForTask(sessionIds, reportBuildersForGREP.values());
|
||||
|
||||
sendReportsToGateway(sessionIds, outFiles, ReportType.REPORT_KS_TMP.getKey());
|
||||
sendFilesToSftp(outFiles.keySet());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createReportForGRET(BaseRequest<LauncherCommandRequest> 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<Long> sessionIds = null;
|
||||
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||
}
|
||||
Map<File, ReportInfo> outFiles = createReportsForTask(sessionIds, reportBuildersForGRET.values());
|
||||
|
||||
Map<File, ReportInfo> outFilesWithReportType_PFX64 = new HashMap<>();
|
||||
Map<File, ReportInfo> outFilesWithReportType_PFX65 = new HashMap<>();
|
||||
for (Map.Entry<File, ReportInfo> 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<Long> sessionIds = null;
|
||||
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||
}
|
||||
Map<File, ReportInfo> outFiles = createReportsForTask(sessionIds, reportBuildersForGRET.values());
|
||||
|
||||
Map<File, ReportInfo> outFilesWithReportType_PFX64 = new HashMap<>();
|
||||
Map<File, ReportInfo> outFilesWithReportType_PFX65 = new HashMap<>();
|
||||
for (Map.Entry<File, ReportInfo> 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<LauncherCommandRequest> 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<Long> sessionIds = null;
|
||||
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||
List<Long> sessionIds = null;
|
||||
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||
}
|
||||
Map<File, ReportInfo> 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<File, ReportInfo> outFiles = createReportsForTask(sessionIds, reportBuildersForGREF.values());
|
||||
|
||||
sendReportsToGateway(sessionIds, outFiles, ReportType.REPORT_KS_FINAL.getKey());
|
||||
sendFilesToSftp(outFiles.keySet());
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue