diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java index 72841de98..c6faf3eb0 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java @@ -26,6 +26,7 @@ import ru.spcex.clearing.service.LoggingService; import ru.spcex.clearing.service.model.Result; import ru.spcex.clearing.service.validation.ValidationStored; import ru.spcex.clearing.session.stage.util.RegistryUtil; +import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -130,6 +131,7 @@ public class Sdf57Executor extends AbstractExecutor { Result result = new Result(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); result.setGenerationId(generationIdForGroup); + log.info("SDF01 execution: sdf57 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf57::getGenerationId).orElse(null)); for (SDf57 sdf57 : sdf) { IValidator validator = sDf57Validator.apply(sdf57); Optional error = validator.tillFirstError(); @@ -150,11 +152,18 @@ public class Sdf57Executor extends AbstractExecutor { Account accountDeb = validator.getStored(ValidationStored.Sdf57AccountDeb); Company companyCred = validator.getStored(ValidationStored.Sdf57CompanyCred);//получатель Account accountCred = validator.getStored(ValidationStored.Sdf57AccountCred); - + log.debug("companyDeb.id={}, accountDeb.id={}, companyCred.id={}, accountCred.id={}", + companyDeb != null ? companyDeb.getId() : null, + accountDeb != null ? accountDeb.getId() : null, + companyCred != null ? companyCred.getId() : null, + accountCred != null ? accountCred.getId() : null); //адресат CREDIT / владелец DEBIT Optional statementDeb = createStatementIfNeeded.apply(companyDeb, accountDeb, InOutDirection.out); //адресат DEBIT / владелец CREDIT Optional statementCred = createStatementIfNeeded.apply(companyCred, accountCred, InOutDirection.in); + log.debug("created statementDeb.id={}, statementCred.id={}", + statementDeb.map(SpcexObjectBase::getId).orElse(null), + statementCred.map(SpcexObjectBase::getId).orElse(null)); Consumer createRegistryIfNeeded = stmtCmpAcc -> { Statement stmt = stmtCmpAcc.statement(); @@ -165,6 +174,7 @@ public class Sdf57Executor extends AbstractExecutor { Optional err = validateActiveness(company, account); if (err.isEmpty()) { findRegByDesignation(stmt, RegistryDesignation.A).ifPresentOrElse(rgs -> { + log.debug("stmt.id={}, found AM*T.id={}, updating...", stmt.getId(), rgs.getId()); updateReg(stmt, rgs); //добавил создание если не найдены Registry registryUnitB = findRegByUnit(stmt, rgs, RegistryUnit.B).orElse(copyRegB(rgs)); @@ -174,14 +184,23 @@ public class Sdf57Executor extends AbstractExecutor { //registry F всегда меняется if (registryUnitF.getId() == null) { registryImdg.insert(registryUnitF); + log.debug("stmt.id={}, new AM*F.id={}", stmt.getId(), registryUnitF.getId()); } else { registryImdg.update(registryUnitF); + log.debug("stmt.id={}, updated AM*F.id={}", stmt.getId(), registryUnitF.getId()); } //нужно сохранить registry B только если его не было if (registryUnitB.getId() == null) { registryImdg.insert(registryUnitB); + log.debug("stmt.id={}, new AM*B.id={}", stmt.getId(), registryUnitB.getId()); } registryImdg.update(rgs); + log.debug("stmt.id={}, updated AM*T.id={}: balance {}/debit {}/ credit {}", + stmt.getId(), + rgs.getId(), + rgs.getBalance(), + rgs.getDebit(), + rgs.getCredit()); }, () -> { Registry registry = createRegistryByStatement(stmt, company, account, RegistryDesignation.A); Registry registryB = copyRegB(registry); @@ -190,6 +209,11 @@ public class Sdf57Executor extends AbstractExecutor { registryImdg.insert(registry); registryImdg.insert(registryF); registryImdg.insert(registryB); + log.debug("stmt.id={}, new AM*T.id={}, new AM*F.id={}, new AM*B.id={}", + stmt.getId(), + registry.getId(), + registryF.getId(), + registryB.getId()); }); InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection()); if (!StringUtils.isEmpty(sdf57.getSpecif()) && pattern.matcher(sdf57.getSpecif()).find() && InOutDirection.in.equals(direction)) { @@ -198,14 +222,25 @@ public class Sdf57Executor extends AbstractExecutor { rgs.setBalance(safeBD(rgs.getBalance()).add(safeBD(stmt.getAmount()))); rgs.setUpdated(Instant.now()); registryImdg.update(rgs); + log.debug("stmt.id={}, sdf57.specif={} updated DM*T.id={}", + stmt.getId(), + sdf57.getSpecif(), + rgs.getId()); }, () -> findRegByDesignation(stmt, RegistryDesignation.O).ifPresent(rgs -> { Registry registryD = copyRegD(rgs); registryImdg.insert(registryD); + log.debug("stmt.id={}, sdf57.specif={} new DM*T.id={}", + stmt.getId(), + sdf57.getSpecif(), + rgs.getId()); })); } stmt.setOperationStatus(OperationStatus.Executed.getKey()); + statementImdg.update(stmt); + log.debug("stmt.id={} status -> {}", stmt.getId(), OperationStatus.Executed.getKey()); } else { + log.debug("statement.id={} activness validation failed {}", stmt.getId(), messageResolver.resolve(err.get())); stmt.setErrorCodeId(err.get().getSubject().getId()); // fixme ErrorText insert stmt.setOperationStatus(OperationStatus.Rejected.getKey()); statementImdg.update(stmt);