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(); +}