clearing-service account-service правки связей счетов и s_df 01, 08.

This commit is contained in:
AKurakin 2023-06-08 15:59:51 +03:00
parent 29ecf18e2e
commit 7b6a74fd0a
3 changed files with 20 additions and 2 deletions

View file

@ -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);
}

View file

@ -68,11 +68,13 @@ public class StatementService extends QueueConsumer implements InitializingBean
}
private void process(BaseRequest<StatementRequest> systemRequest) {
log.debug("Receiving StatementRequest id={}", systemRequest.getId());
StatementRequest statementRequest = systemRequest.getRequestPayload();
SdfTable table = statementRequest.getTable();
Optional<Long> 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<StatementRequest, StatementRequest> 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<StatementRequest, StatementRequest> 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());
}
}
}

View file

@ -99,8 +99,15 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
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());