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 39b06249c..9d28ae3f3 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 @@ -28,6 +28,7 @@ import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.util.services.RequestHelper; import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.platform.enumeration.AccountType; +import ru.spcex.platform.enumeration.SdfTable; import ru.spcex.platform.enumeration.ServiceStatus; import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; @@ -278,6 +279,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin StatementRequest request = new StatementRequest(); request.setGroupId(groupingSdf01Id); request.setAccountCreationResults(results); + request.setTable(SdfTable.SDF_01); // по нему запрос получили log.debug("Send message to kafka \"{}\": {}", Consts.STATEMENT_PROCESS, LogFormatter.toStringWrapper(request)); kafkaSender.sendRequestToQueue(Consts.STATEMENT_PROCESS, request); } 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 3fef674bc..106e78c81 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 @@ -68,11 +68,13 @@ public class StatementService extends QueueConsumer implements InitializingBean } private void process(BaseRequest systemRequest) { + log.debug("Receiving StatementRequest id={}", systemRequest.getId()); StatementRequest statementRequest = systemRequest.getRequestPayload(); SdfTable table = statementRequest.getTable(); Optional completePairKey = saveRequest(statementRequest); if (completePairKey.isPresent()) { + boolean doSomeone = false; if (List.of(SdfTable.SDF_01, SdfTable.SDF_57).contains(table)) { { //всегда сначала обработаем sdf57 @@ -86,6 +88,7 @@ public class StatementService extends QueueConsumer implements InitializingBean ContinueSessionBnRequest continueSessionBn = new ContinueSessionBnRequest(); kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); pairOfSdfRequest.remove(key); + doSomeone = true; } } else if (List.of(SdfTable.SDF_08, SdfTable.SDF_04).contains(table)) { if (table == SdfTable.SDF_08) { @@ -94,6 +97,7 @@ public class StatementService extends QueueConsumer implements InitializingBean Pair pair = pairOfSdfRequest.get(key); processSdf08(pair.getFirst()); pairOfSdfRequest.remove(key); + doSomeone = true; } } else if (table == SdfTable.SDF_04) { { @@ -101,9 +105,14 @@ public class StatementService extends QueueConsumer implements InitializingBean Pair pair = pairOfSdfRequest.get(key); processSdf04(pair.getFirst()); pairOfSdfRequest.remove(key); + doSomeone = true; } } } + if (!doSomeone) { + log.warn("No operation for request.id={}; statementRequest GroupId={}, table={}", + systemRequest.getId(), statementRequest.getGroupId(), statementRequest.getTable()); + } } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java index c1a76eb0a..6072dd521 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java @@ -99,8 +99,15 @@ public class Sdf08Executor extends AbstractExecutor { Account account = validator.getStored(ValidationStored.Sdf08Account); if (statementRequest.getAccountCreationResults().size() == 0 && ClearingErrorInternal.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { - result.getAccountRequests().add(createAccountRequestPart(sdf08.getId(), sdf08.getDepoCode(), account.getCompanyId())); - log.info("account {} for sdf08.id={} not found - send request for creation", sdf08.getDepoCode(), sdf08.getId()); + + Company company = validator.getStored(ValidationStored.Sdf08Company); + Long companyId = company == null ? null : company.getId(); // account == null сегда, т.к. кейс AccountNotPresent + if (companyId == null) { + log.warn("account {} for sdf08.id={} not found. Can not send request for creation, cause company not found too", sdf08.getDepoCode(), sdf08.getId()); + } else { + result.getAccountRequests().add(createAccountRequestPart(sdf08.getId(), sdf08.getDepoCode(), companyId)); + log.info("account {} for sdf08.id={} not found - send request for creation", sdf08.getDepoCode(), sdf08.getId()); + } continue; } else if (ClearingErrorInternal.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { log.error("fatal error: resumed processing after generating accounts, but no account found for sdf01.id={}", sdf08.getId());