From a4f2da37d4e4958f19185ac6f7b679d400a669cd Mon Sep 17 00:00:00 2001 From: akulikov Date: Fri, 7 Jul 2023 19:45:50 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-358 refactor --- .../gatewayapi/service/GatewayService.java | 8 +------ .../reports/reports/CSVReportBuilder.java | 8 ++++++- .../ExecutedDealReportBuilder_INFTYPE_1.java | 6 +++--- .../ExecutedDealReportBuilder_INFTYPE_2.java | 6 +++--- .../ExecutedDealReportBuilder_INFTYPE_3.java | 6 +++--- .../ExecutedDealReportBuilder_INFTYPE_4.java | 6 +++--- .../bp/UnfulfilledDealReportBuilder.java | 10 ++++----- .../ks/KSRepCashNettoReportBuilder.java | 14 +++++-------- .../KSRepCashRegisterSumsReportBuilder.java | 14 +++++-------- .../ks/KSRepCashRegistersReportBuilder.java | 15 +++++-------- .../ks/KSRepDepoNettoReportBuilder.java | 14 +++++-------- ...epDepoRegisterQuantitiesReportBuilder.java | 14 +++++-------- .../ks/KSRepDepoRegistersReportBuilder.java | 14 +++++-------- .../ks/KSRepFirmDetailsReportBuilder.java | 14 +++++-------- .../reports/ks/KSRepTradesReportBuilder.java | 9 ++++---- .../reports/services/ReportService.java | 21 ++++++++++--------- .../platform/enumeration/ReportKeys.java | 2 ++ 17 files changed, 77 insertions(+), 104 deletions(-) diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/GatewayService.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/GatewayService.java index a5396a561..50516961f 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/GatewayService.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/GatewayService.java @@ -35,7 +35,6 @@ import ru.spcex.platform.enumeration.Task; import ru.spcex.platform.utils.enumeration.IEnumKey; import java.util.*; -import java.util.regex.Matcher; import java.util.regex.Pattern; @Service @@ -236,12 +235,7 @@ public class GatewayService extends QueueConsumer implements InitializingBean { protected Map makeContentByReportRequest(ReportPart reportPart) { Map content = new HashMap<>(); - Matcher matcher = REPORT_FILE_NAME_PATTERN.matcher(reportPart.getFileName()); - ReportKeys reportKey = null; - if (matcher.matches()) { - String rowKey = matcher.group(1); - reportKey = IEnumKey.getEnumByKeyOrUndefined(ReportKeys.class, rowKey); - } + ReportKeys reportKey = IEnumKey.getEnumByKey(ReportKeys.class, reportPart.getReportType()); if (reportKey == null) { log.warn("Mismatched filename pattern : {}; {}", reportPart.getFileName(), REPORT_FILE_NAME_PATTERN); return content; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java index 365190613..019c72974 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/CSVReportBuilder.java @@ -10,6 +10,7 @@ import com.opencsv.exceptions.CsvRequiredFieldEmptyException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.spcex.platform.enumeration.ReportBuilderType; +import ru.spcex.platform.enumeration.ReportKeys; import java.io.File; import java.io.FileWriter; @@ -18,6 +19,7 @@ import java.io.Writer; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Locale; @@ -43,13 +45,17 @@ public abstract class CSVReportBuilder { * * @param params Параметры формирования отчета */ - protected abstract String getReportFilename(P params); + protected String getReportFilename(P params) { + return "%s_%s".formatted(getReportKey().getKey(), dateTimeFormatter_YYMMDDHHmmssSSS.format(LocalDateTime.now())); + } /** * Тип отчета по {@link ReportBuilderType} */ public abstract ReportBuilderType getReportType(); + public abstract ReportKeys getReportKey(); + /** * Тип параметров для построения отчетов */ diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java index 2f7992784..ca7ebb1b3 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_1.java @@ -5,11 +5,11 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.reports.SessionIdParam; +import ru.spcex.platform.enumeration.ReportKeys; 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; @Component @@ -21,8 +21,8 @@ public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuild } @Override - protected String getReportFilename(SessionIdParam params) { - return "KS_BR_PFX64_INFTYPE_1_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now())); + public ReportKeys getReportKey() { + return ReportKeys.KS_BR_PFX64_INFTYPE_1; } @Override diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java index fd00bbcfc..f0b349ccd 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_2.java @@ -5,11 +5,11 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.reports.SessionIdParam; +import ru.spcex.platform.enumeration.ReportKeys; 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; @Component @@ -21,8 +21,8 @@ public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuild } @Override - protected String getReportFilename(SessionIdParam params) { - return "KS_BR_PFX64_INFTYPE_2_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now())); + public ReportKeys getReportKey() { + return ReportKeys.KS_BR_PFX64_INFTYPE_2; } @Override diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java index 6c6f4b7de..819c1526d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_3.java @@ -5,11 +5,11 @@ import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.spcex.clearing.reports.reports.SessionIdParam; +import ru.spcex.platform.enumeration.ReportKeys; 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; @Component @@ -21,8 +21,8 @@ public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuild } @Override - protected String getReportFilename(SessionIdParam params) { - return "KS_BR_PFX64_INFTYPE_3_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now())); + public ReportKeys getReportKey() { + return ReportKeys.KS_BR_PFX64_INFTYPE_3; } @Override diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java index 0eb536efe..67f36cc29 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/ExecutedDealReportBuilder_INFTYPE_4.java @@ -6,11 +6,11 @@ import org.springframework.stereotype.Component; 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.enumeration.ReportKeys; 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; @Component @@ -22,8 +22,8 @@ public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuild } @Override - protected String getReportFilename(SessionIdParam params) { - return "KS_BR_PFX64_INFTYPE_4_%s".formatted(fileNameDateTimeFormatter.format(LocalDateTime.now())); + public ReportKeys getReportKey() { + return ReportKeys.KS_BR_PFX64_INFTYPE_4; } @Override diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java index c5946457c..79851703d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bp/UnfulfilledDealReportBuilder.java @@ -12,13 +12,13 @@ import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.clearing.reports.reports.bean.UnfulfilledDealReport; import ru.spcex.platform.enumeration.Allowed; import ru.spcex.platform.enumeration.ReportBuilderType; +import ru.spcex.platform.enumeration.ReportKeys; 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.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -45,13 +45,13 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder getRows() { return rows; } @Override - protected String getReportFilename(EmptyParams params) { - return "KS_REP_CASH_REGISTERS_%s".formatted(dateTimeFormatter_YYMMDDHHmmssSSS.format(LocalDateTime.now())); + public ReportBuilderType getReportType() { + return ReportBuilderType.KS_REP_CASH_REGISTERS; } @Override - public ReportBuilderType getReportType() { - return ReportBuilderType.KS_REP_CASH_REGISTERS; + public ReportKeys getReportKey() { + return ReportKeys.KS_REP_CASH_REGISTERS; } @Override diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepDepoNettoReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepDepoNettoReportBuilder.java index 579126ec5..0a512da06 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepDepoNettoReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/ks/KSRepDepoNettoReportBuilder.java @@ -10,10 +10,7 @@ import ru.spcex.clearing.reports.reports.CSVReportBuilder; import ru.spcex.clearing.reports.reports.PairRegistryId; import ru.spcex.clearing.reports.reports.SessionIdParam; import ru.spcex.clearing.reports.reports.bean.KSRepDepoNettoReport; -import ru.spcex.platform.enumeration.AccountType; -import ru.spcex.platform.enumeration.RegistryDesignation; -import ru.spcex.platform.enumeration.RegistryTradingParams; -import ru.spcex.platform.enumeration.ReportBuilderType; +import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; @@ -22,7 +19,6 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import java.math.BigDecimal; import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -45,13 +41,13 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder outFilenames = createReportsForTask(sessionId, reportBuildersForGREP.values()); + Map outFilenames = createReportsForTask(sessionId, reportBuildersForGREP.values()); sendReportsToGateway(sessionId, outFilenames, ReportType.REPORT_KS_TMP.getKey()); return null; @@ -222,7 +223,7 @@ public class ReportService extends QueueConsumer implements InitializingBean { logUnknownProperties(userRequest); Long sessionId = userRequest.getRequestPayload().getSessionId(); - Map outFilenames = createReportsForTask(sessionId, reportBuildersForGRET.values()); + Map outFilenames = createReportsForTask(sessionId, reportBuildersForGRET.values()); sendReportsToGateway(sessionId, outFilenames, null); return null; @@ -238,14 +239,14 @@ public class ReportService extends QueueConsumer implements InitializingBean { logUnknownProperties(userRequest); Long sessionId = userRequest.getRequestPayload().getSessionId(); - Map outFilenames = createReportsForTask(sessionId, reportBuildersForGREF.values()); + Map outFilenames = createReportsForTask(sessionId, reportBuildersForGREF.values()); - sendReportsToGateway(sessionId, outFilenames, "REPORT_KS_FINAL"); + sendReportsToGateway(sessionId, outFilenames, ReportType.REPORT_KS_FINAL.getKey()); return null; } - private Map createReportsForTask(Long sessionId, Collection>> buildersForTask) { - Map outFilenames = new HashMap<>(); + private Map createReportsForTask(Long sessionId, Collection>> buildersForTask) { + Map outFilenames = new HashMap<>(); int cntErrors = 0; for (List> builders : buildersForTask) { for (CSVReportBuilder builder : builders) { @@ -256,7 +257,7 @@ public class ReportService extends QueueConsumer implements InitializingBean { cntErrors++; continue; } - outFilenames.put(outFile.getName(), builder.getReportType()); + outFilenames.put(outFile.getName(), builder.getReportKey()); } else if (builder.getParamsClass() == SessionIdParam.class && sessionId != null) { SessionIdParam sessionIdParam = new SessionIdParam(); sessionIdParam.setSessionId(sessionId); @@ -266,7 +267,7 @@ public class ReportService extends QueueConsumer implements InitializingBean { cntErrors++; continue; } - outFilenames.put(outFile.getName(), builder.getReportType()); + outFilenames.put(outFile.getName(), builder.getReportKey()); } } } @@ -276,12 +277,12 @@ public class ReportService extends QueueConsumer implements InitializingBean { return outFilenames; } - private void sendReportsToGateway(Long sessionId, Map reportsWithReportType, String type) { + private void sendReportsToGateway(Long sessionId, Map reportsWithReportType, String type) { SendReportRequest sendReportRequest = new SendReportRequest(); sendReportRequest.setSessionId(sessionId); sendReportRequest.setType(type); List reports = new ArrayList<>(reportsWithReportType.size()); - for (Map.Entry entry : reportsWithReportType.entrySet()) { + for (Map.Entry entry : reportsWithReportType.entrySet()) { ReportPart reportPart = new ReportPart(); reportPart.setReportType(entry.getValue().getKey()); reportPart.setFileName(entry.getKey()); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportKeys.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportKeys.java index cbfd61eb0..188602013 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportKeys.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportKeys.java @@ -7,6 +7,7 @@ public enum ReportKeys implements IEnumKey { KS_BR_PFX64_INFTYPE_2("KS_BR_PFX64_INFTYPE_2"), KS_BR_PFX64_INFTYPE_3("KS_BR_PFX64_INFTYPE_3"), KS_BR_PFX64_INFTYPE_4("KS_BR_PFX64_INFTYPE_4"), + UNFULFILLED_DEAL_REPORT("UNFULFILLED_DEAL_REPORT"), KS_BR_PFX65_DEALS("KS_BR_PFX65_DEALS"), KS_REP_CASH_REGISTERS("KS_REP_CASH_REGISTERS"), KS_REP_CASH_REGISTER_SUMS("KS_REP_CASH_REGISTER_SUMS"), @@ -15,6 +16,7 @@ public enum ReportKeys implements IEnumKey { KS_REP_TRADES("KS_REP_TRADES"), KS_REP_CASH_NETTO("KS_REP_CASH_NETTO"), KS_REP_DEPO_NETTO("KS_REP_DEPO_NETTO"), + KS_REP_FIRM_DETAILS("KS_REP_FIRM_DETAILS"), ; private final String key;