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 e10c8392c..72841de98 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 @@ -67,7 +67,7 @@ public class Sdf57Executor extends AbstractExecutor { private final Imdg securityImdg; private final Imdg currencyImdg; private final IMessageResolver messageResolver; - private final Pattern pattern = Pattern.compile("№\\w*/\\d{6}/\\d*/\\d*"); + private final Pattern pattern = Pattern.compile("№.*"); public Sdf57Executor(@Qualifier("sdf57Validator") Function sDf57Validator, LoggingService errorLogger, @@ -164,7 +164,7 @@ public class Sdf57Executor extends AbstractExecutor { return; Optional err = validateActiveness(company, account); if (err.isEmpty()) { - Consumer update = rgs -> { + findRegByDesignation(stmt, RegistryDesignation.A).ifPresentOrElse(rgs -> { updateReg(stmt, rgs); //добавил создание если не найдены Registry registryUnitB = findRegByUnit(stmt, rgs, RegistryUnit.B).orElse(copyRegB(rgs)); @@ -182,18 +182,15 @@ public class Sdf57Executor extends AbstractExecutor { registryImdg.insert(registryUnitB); } registryImdg.update(rgs); - }; - Consumer createRegA = (dsgn) -> { - Registry registry = createRegistryByStatement(stmt, company, account, dsgn); + }, () -> { + Registry registry = createRegistryByStatement(stmt, company, account, RegistryDesignation.A); Registry registryB = copyRegB(registry); Registry registryF = copyRegF(registry, registryB.getBalance()); registryImdg.insert(registry); registryImdg.insert(registryF); registryImdg.insert(registryB); - }; - - findRegByDesignation(stmt, RegistryDesignation.A).ifPresentOrElse(update, () -> createRegA.accept(RegistryDesignation.A)); + }); InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection()); if (!StringUtils.isEmpty(sdf57.getSpecif()) && pattern.matcher(sdf57.getSpecif()).find() && InOutDirection.in.equals(direction)) { //todo доделать 11. Идентификация средств УК на клиринговом счете