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 9e2aaaa5c..25663f9b2 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 @@ -139,19 +139,20 @@ public class Sdf08Executor extends AbstractExecutor { Company company = searchCompany(sdf08.getDepoCode()); // validator.getStored(ValidationStored.Sdf08Company); Long companyId = company == null ? null : company.getId(); // account == null сегда, т.к. кейс AccountNotPresent if (companyId == null) { + SDf09 errSdf = createErrorSdf09(sdf08, generationIdForGroup, new EnumMessage(ClearingError.AccountNotFoundB, sdf08.getDepoCode())); + sdf09Imdg.insert(errSdf); 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()); } if (error.isPresent() && !ClearingError.SecurityNotFound.equals(error.get().getSubject())) { log.error("sdf01.id={} error: {}", sdf08.getId(), messageResolver.resolve(error.get())); //fixme инициировать = команда для другого сервиса? sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup)); - // sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup)); + SDf09 errSdf = createErrorSdf09(sdf08, generationIdForGroup, error.get()); + sdf09Imdg.insert(errSdf); continue; } stmt = createSdf08Statement(sdf08, account); @@ -198,6 +199,8 @@ public class Sdf08Executor extends AbstractExecutor { } else { stmt.setErrorCodeId(error.get().getSubject().getId()); // fixme ErrorText insert stmt.setOperationStatus(OperationStatus.Rejected.getKey()); + sdf09New.setResult(""); + sdf09Imdg.update(sdf09New); statementImdg.update(stmt); } } catch (Exception e) { @@ -302,6 +305,19 @@ public class Sdf08Executor extends AbstractExecutor { return sDf09; } + private SDf09 createErrorSdf09(SDf08 sdf08, Long generationIdForGroup, EnumMessage err) { + SDf09 sDf09 = new SDf09(); + sDf09.setInDocument(sdf08.getOutDocument()); + sDf09.setDepoCode(sdf08.getDepoCode()); + sDf09.setQuantity(sdf08.getQuantity()); + sDf09.setSecurityCode(sdf08.getSecurityCode()); + sDf09.setClientName(sdf08.getClientName()); + sDf09.setGenerationId(generationIdForGroup); + sDf09.setGenerationTime(Instant.now()); + sDf09.setResult(""); + return sDf09; + } + private Registry createRegistryByStatement(Statement statement, Company company, Account account) { Registry rgs = new Registry(); rgs.setCompanyId(statement.getAddresseeId());