From 1c1b134edf3dae318803c5915e113594e4462af5 Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 10 Aug 2023 17:48:38 +0300 Subject: [PATCH] =?UTF-8?q?SDF01=20SDF06=20fileName=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D1=81=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D1=8D=D0=BA=D1=81=D0=BF=D0=BE?= =?UTF-8?q?=D1=80=D1=82=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clearing/classes/statics/data/sdf/SDf01.java | 3 ++- .../clearing/classes/statics/data/sdf/SDf06.java | 3 ++- .../service/executors/AbstractExecutor.java | 9 +++++++++ .../service/executors/Sdf01Executor.java | 5 +++-- .../service/executors/Sdf06Executor.java | 16 ++++++++++++---- .../ru/spcex/clearing/service/model/Result.java | 9 +++++++++ .../classes/base/interfaces/WithFileName.java | 5 +++++ 7 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithFileName.java diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java index d17918ae7..787b655f7 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java @@ -3,6 +3,7 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.interfaces.WithAccount; +import ru.spcex.platform.classes.base.interfaces.WithFileName; import ru.spcex.platform.classes.base.interfaces.WithMarket; import java.time.Instant; @@ -12,7 +13,7 @@ import java.time.Instant; *

* DB table: S_DF01 **/ -public class SDf01 extends SpcexObjectBase implements WithAccount, WithMarket { +public class SDf01 extends SpcexObjectBase implements WithAccount, WithMarket, WithFileName { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String curr_code; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java index 1e2c5e432..9c879d92d 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java @@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithFileName; import java.math.BigDecimal; import java.time.Instant; @@ -11,7 +12,7 @@ import java.time.Instant; *

* DB table: S_DF06 **/ -public class SDf06 extends SpcexObjectBase { +public class SDf06 extends SpcexObjectBase implements WithFileName { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/AbstractExecutor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/AbstractExecutor.java index afead4914..a3230e4a1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/AbstractExecutor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/AbstractExecutor.java @@ -3,12 +3,21 @@ package ru.spcex.clearing.service.executors; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.service.model.Result; +import ru.spcex.platform.classes.base.interfaces.WithFileName; import java.util.Collection; +import java.util.Objects; public abstract class AbstractExecutor { public abstract Result execute(Collection sdf, StatementRequest statementRequest); public abstract String exportTableName(); public abstract boolean isNeedToSendCommand(); public abstract void sendCommand(KafkaSender kafkaSender, Result result); + public static String getFileName(Collection sdfs) { + return sdfs.stream() + .map(WithFileName::getFileName) + .filter(Objects::nonNull) + .findFirst() + .orElse(null); + } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java index 2e92d441e..279f19167 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java @@ -99,6 +99,7 @@ public class Sdf01Executor extends AbstractExecutor { ExportToFileRequest exportRequest = new ExportToFileRequest(); exportRequest.setSdfGroupId(result.getChildGenerationId()); exportRequest.setNameOfTable(exportTableName()); + exportRequest.setFileName(result.getFileName()); kafkaSender.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest); } @@ -106,8 +107,8 @@ public class Sdf01Executor extends AbstractExecutor { Result result = new Result(); Long generationIdForGroup = statementRequest.getChildGenerationId() != null ? statementRequest.getChildGenerationId() : imdgProvider.getImdgIdGenerator().nextId(); result.setChildGenerationId(generationIdForGroup); -// boolean reviseFailed = false; - log.info("SDF01 execution: sdf01 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf01::getGenerationId).orElse(null)); + result.setFileName(getFileName(sdf)); + log.info("SDF01 execution: sdf01 file={} number={}, groupId={}", result.getFileName(), sdf.size(), sdf.stream().findFirst().map(SDf01::getGenerationId).orElse(null)); for (SDf01 sdf01 : sdf) { IValidator validator = sDf01Validator.apply(sdf01); Optional error = validator.tillFirstError(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java index 95be88dd2..47a6fe3fe 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java @@ -34,6 +34,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.number.BigDecimalUtil; +import ru.spcex.platform.utils.text.TextUtil; import ru.spcex.platform.utils.validation.IValidator; import java.math.BigDecimal; @@ -105,6 +106,8 @@ public class Sdf06Executor { Collection sdfs = sdfImdg.getCollectionObjectsByFieldValues(Map.of( "generationId", groupId )); + String fileName = AbstractExecutor.getFileName(sdfs); + log.info("start processing SDF06: groupId={} file={}", groupId, fileName); Instant now = Instant.now(); Long sdf07GroupId = idGenerator.nextId(); if (sdf06GroupId != null) { @@ -114,7 +117,7 @@ public class Sdf06Executor { errorSdf07.setGenerationId(sdf07GroupId); sdf07Imdg.insert(errorSdf07); }); - sendToExporter(sdf07GroupId); + sendToExporter(sdf07GroupId, fileName); return; } Collection requests = new ArrayList<>(); @@ -169,7 +172,7 @@ public class Sdf06Executor { assetOperationListRequest.setAssetOperationRequests(requests); kafkaSender.sendRequestToQueue(Consts.ASSET_OPERATION, assetOperationListRequest); } else if (sdf07WasCreated) { - sendToExporter(sdf07GroupId); + sendToExporter(sdf07GroupId, fileName); } } @@ -197,6 +200,7 @@ public class Sdf06Executor { public void processGatewayResponse(BaseRequest req) { Instant now = Instant.now(); + String fileName = null; for (SingleAssetResponse gatewayMsg : req.getRequestPayload().getApprovals()) { //получаем запрос для текущей группы sdf06 //находим группу @@ -209,6 +213,9 @@ public class Sdf06Executor { Long sdf06Id = stmt.getInSDfId(); SDf06 sdf06 = sdf06Imdg.getSingleObjectByID(sdf06Id); + if (fileName == null && !TextUtil.isEmpty(sdf06.getFileName())) { + fileName = sdf06.getFileName(); + } if (sdf06 == null) { log.error("Sdf06.id {} not found by statement.id {}", sdf06Id, statementId); return; @@ -241,7 +248,7 @@ public class Sdf06Executor { statementImdg.update(stmt); } } - sendToExporter(sdf07GroupId); + sendToExporter(sdf07GroupId, fileName); log.debug("All gateway responses received for SDF06 groupId {}. SDF07 groupId {}", sdf06GroupId, sdf07GroupId); clearContext(); } @@ -251,10 +258,11 @@ public class Sdf06Executor { this.sdf07GroupId = null; } - private void sendToExporter(Long generationId) { + private void sendToExporter(Long generationId, String fileName) { ExportToFileRequest exportRequest = new ExportToFileRequest(); exportRequest.setSdfGroupId(generationId); exportRequest.setNameOfTable("DF-07"); + exportRequest.setFileName(fileName); kafkaSender.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java index 60bd23029..b43ed0eb7 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/model/Result.java @@ -8,6 +8,7 @@ import java.util.List; public class Result { private List accountRequests = new ArrayList<>(); private Long childGenerationId; + private String fileName; public List getAccountRequests() { return accountRequests; @@ -24,4 +25,12 @@ public class Result { public void setChildGenerationId(Long generationId) { this.childGenerationId = generationId; } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } } diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithFileName.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithFileName.java new file mode 100644 index 000000000..69a4fa132 --- /dev/null +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithFileName.java @@ -0,0 +1,5 @@ +package ru.spcex.platform.classes.base.interfaces; + +public interface WithFileName { + String getFileName(); +}