diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java index e879ac570..20cad7ef4 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java @@ -275,15 +275,16 @@ public class ClearingAccountService extends QueueConsumer implements Initializin } - sendStatementRequestBack(req.getGroupingSdf01Id(), accountToStatement); + sendStatementRequestBack(req.getGroupingSdf01Id(), req.getGroupingSdf02Id(), accountToStatement); log.debug("successfully processed, grouping id={}, processed number={}", req.getGroupingSdf01Id(), accountToStatement.size()); return null; } - public void sendStatementRequestBack(Long groupingSdf01Id, List results) { + public void sendStatementRequestBack(Long groupingSdf01Id, Long groupSdf02Id, List results) { StatementRequest request = new StatementRequest(); request.setGroupId(groupingSdf01Id); + request.setChildGenerationId(groupSdf02Id); request.setAccountCreationResults(results); request.setContinueSdf(true); request.setTable(SdfTable.SDF_01); // по нему запрос получили diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java index c3d0b16ce..65418b9db 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java @@ -213,15 +213,16 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea } } - sendStatementRequestBack(req.getGroupingSdf01Id(), accountToStatement); + sendStatementRequestBack(req.getGroupingSdf01Id(), req.getGroupingSdf02Id(), accountToStatement); log.debug("successfully processed, grouping id={}, processed number={}", req.getGroupingSdf01Id(), accountToStatement.size()); return null; } - public void sendStatementRequestBack(Long groupingSdf01Id, List results) { + public void sendStatementRequestBack(Long groupingSdf01Id, Long groupingSdf02Id, List results) { StatementRequest request = new StatementRequest(); request.setGroupId(groupingSdf01Id); + request.setChildGenerationId(groupingSdf02Id); request.setContinueSdf(true); //fixme???? request.setAccountCreationResults(results); request.setTable(SdfTable.SDF_08); // по нему запрос получили diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java index eb9f3ef15..d9ab2845d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java @@ -182,7 +182,7 @@ public class ValidationConfig { return new ValidatorImpl<>(context, Sdf57ValidationRule.CompanyDebOrCredPresent, Sdf57ValidationRule.AccountDebOrCredPresent, - Sdf57ValidationRule.CurrencyCode + Sdf57ValidationRule.CurrencyCodeCheck ); }; } @@ -214,7 +214,7 @@ public class ValidationConfig { Sdf01NewValidationRule.CompanyPresent, Sdf01NewValidationRule.AccountType, Sdf01NewValidationRule.AccountPresent, - Sdf01NewValidationRule.CurrencyCode, + Sdf01NewValidationRule.CurrencyCodeCheck, Sdf01NewValidationRule.DatIsCurrentDt ); }; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java index 28d072a2e..724227a21 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java @@ -271,6 +271,8 @@ public class StatementService extends QueueConsumer implements InitializingBean sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( "generationId", statementRequest.getGroupId())); } else { + log.debug("accounts were created: {} for generationId {} child generationId {}", + statementRequest.getAccountCreationResults().size(), statementRequest.getGroupId(), statementRequest.getChildGenerationId()); //todo могут ли тут реквесты бегать по кругу, если да, то у нас проблемы sdfGroup = statementRequest.getAccountCreationResults() .stream() @@ -281,7 +283,7 @@ public class StatementService extends QueueConsumer implements InitializingBean AbstractExecutor service = executorsMap.get(SdfTable.SDF_01); Result res = service.execute(sdfGroup, statementRequest); if (res.getAccountRequests().size() != 0) { - kafkaSender.sendRequestToQueue(Consts.ACCOUNT_NEW_SDF01, createAccountsRequest(statementRequest.getGroupId(), res.getAccountRequests())); + kafkaSender.sendRequestToQueue(Consts.ACCOUNT_NEW_SDF01, createAccountsRequest(statementRequest.getGroupId(), res.getAccountRequests(), res.getGenerationId())); return res; } else if (service.isNeedToSendCommand()) { service.sendCommand(kafkaSender, res); @@ -376,4 +378,12 @@ public class StatementService extends QueueConsumer implements InitializingBean r.setAccounts(accountRequests); return r; } + + private AccountSdf01Request createAccountsRequest(Long sdf01GroupingId, List accountRequests, Long childGenerationId) { + AccountSdf01Request r = new AccountSdf01Request(); + r.setGroupingSdf01Id(sdf01GroupingId); + r.setGroupingSdf02Id(childGenerationId); + r.setAccounts(accountRequests); + return r; + } } 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 8db9b302f..7010ae340 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 @@ -104,7 +104,7 @@ public class Sdf01Executor extends AbstractExecutor { public Result execute(Collection sdf, StatementRequest statementRequest) { Result result = new Result(); - Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); + Long generationIdForGroup = statementRequest.getChildGenerationId() != null ? statementRequest.getChildGenerationId() : imdgProvider.getImdgIdGenerator().nextId(); result.setGenerationId(generationIdForGroup); // boolean reviseFailed = false; log.info("SDF01 execution: sdf01 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf01::getGenerationId).orElse(null)); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf01NewValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf01NewValidationRule.java index 37022f69b..342dc084a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf01NewValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf01NewValidationRule.java @@ -7,6 +7,7 @@ import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.error.ClearingErrorInternal; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.AccType; +import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; @@ -59,11 +60,11 @@ public enum Sdf01NewValidationRule implements IValidationRule validate(ImdgValidationContext context) { SDf01 sdf01 = context.getValidatedObject(); - if (!ru.spcex.platform.enumeration.CurrencyCode.RUR.equalsByKey(sdf01.getCurr_code())) { + if (!IEnumKey.contains(sdf01.getCurr_code(), CurrencyCode.class)) { return of(ClearingError.CurrencyNotFound, sdf01.getCurr_code()); } return empty(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf57ValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf57ValidationRule.java index e89a0a38f..c73a0a88a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf57ValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf57ValidationRule.java @@ -5,9 +5,11 @@ import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.sdf.SDf57; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.text.TextUtil; import ru.spcex.platform.utils.validation.IValidationRule; @@ -62,11 +64,11 @@ public enum Sdf57ValidationRule implements IValidationRule validate(ImdgValidationContext context) { SDf57 sdf57 = context.getValidatedObject(); - if (!ru.spcex.platform.enumeration.CurrencyCode.RUR.equalsByKey(sdf57.getPay_val())) { + if (!IEnumKey.contains(sdf57.getPay_val(), CurrencyCode.class)) { return of(ClearingError.CompanyDebitCheck, sdf57.getPay_val()); } return empty(); diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java index e2cf98ab0..8ebff8ec3 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java @@ -88,7 +88,7 @@ public class ExportFromHazelcast extends Stage implements InitializingBean { tableRows = map.getAllValues(); } if (tableRows.isEmpty()) { - log.info("uuid {}. Map {} is empty.", resultContainer.getUuid(), resultContainer.getTableForExport().getHazelcastMapName()); + log.info("uuid {}. Map {} is empty, generationId {}", resultContainer.getUuid(), resultContainer.getTableForExport().getHazelcastMapName(), resultContainer.getGroupId()); return StageResult.COMPLETE; } for (SpcexObjectBase value : tableRows) { diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/sdf01/AccountSdf01Request.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/sdf01/AccountSdf01Request.java index 52c1a5c2e..990408cc8 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/sdf01/AccountSdf01Request.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/sdf01/AccountSdf01Request.java @@ -9,7 +9,10 @@ import java.util.List; */ public class AccountSdf01Request { + @JsonProperty private Long groupingSdf01Id; + @JsonProperty + private Long groupingSdf02Id; @JsonProperty("accounts") List accounts; @@ -29,4 +32,12 @@ public class AccountSdf01Request { public void setGroupingSdf01Id(Long groupingSdf01Id) { this.groupingSdf01Id = groupingSdf01Id; } + + public Long getGroupingSdf02Id() { + return groupingSdf02Id; + } + + public void setGroupingSdf02Id(Long groupingSdf02Id) { + this.groupingSdf02Id = groupingSdf02Id; + } } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java index eec240f6b..8f8b90c37 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java @@ -16,6 +16,8 @@ public class StatementRequest { @JsonProperty List accountCreationResults = new ArrayList<>(); @JsonProperty + private Long childGenerationId; + @JsonProperty private boolean continueSdf = false; public Long getGroupId() { @@ -49,4 +51,12 @@ public class StatementRequest { public void setAccountCreationResults(List accountCreationResults) { this.accountCreationResults = accountCreationResults; } + + public Long getChildGenerationId() { + return childGenerationId; + } + + public void setChildGenerationId(Long childGenerationId) { + this.childGenerationId = childGenerationId; + } } \ No newline at end of file diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumKey.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumKey.java index 7bf725710..981f8694f 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumKey.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumKey.java @@ -34,7 +34,7 @@ public interface IEnumKey extends Serializable { * Проверяет что среди всех Enum данного класса, присутствует элемент с данным id * id может быть null */ - static & IEnumKey> boolean contains(Class enumClass, String key) { + static & IEnumKey> boolean contains(String key, Class enumClass) { for (T e : enumClass.getEnumConstants()) { if (Objects.equals(key, e.getKey())) return true;