From 56719d4d3757a5e02660c489da2a9d20a5d71712 Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 7 Jun 2023 12:13:34 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20D=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=BE=D0=B2=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B5=20Sdf?= =?UTF-8?q?57?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/executors/Sdf57Executor.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) 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 a46759c15..fe522a651 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 @@ -193,17 +193,19 @@ public class Sdf57Executor extends AbstractExecutor { registryImdg.insert(registryB); }; - Consumer createRegD = (dsgn) -> { - findRegByDesignation(stmt, RegistryDesignation.O).ifPresent(registry -> { - Registry registryD = copyRegD(registry); - registryImdg.insert(registryD); - }); - }; - findRegByDesignation(stmt, RegistryDesignation.A).ifPresentOrElse(update, () -> createRegA.accept(RegistryDesignation.A)); - if (!StringUtils.isEmpty(sdf57.getSpecif()) && pattern.matcher(sdf57.getSpecif()).find()) { + InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection()); + if (!StringUtils.isEmpty(sdf57.getSpecif()) && pattern.matcher(sdf57.getSpecif()).find() && InOutDirection.in.equals(direction)) { //todo доделать 11. Идентификация средств УК на клиринговом счете - findRegByDesignation(stmt, RegistryDesignation.D).ifPresentOrElse(update, () -> createRegD.accept(RegistryDesignation.D)); + findRegByDesignation(stmt, RegistryDesignation.D).ifPresentOrElse(rgs -> { + rgs.setBalance(safeBD(rgs.getBalance()).add(safeBD(stmt.getAmount()))); + rgs.setUpdated(Instant.now()); + registryImdg.update(rgs); + }, + () -> findRegByDesignation(stmt, RegistryDesignation.O).ifPresent(rgs -> { + Registry registryD = copyRegD(rgs); + registryImdg.insert(registryD); + })); } stmt.setOperationStatus(OperationStatus.Executed.getKey()); } else { @@ -377,7 +379,7 @@ public class Sdf57Executor extends AbstractExecutor { pb.equals("companyId", s.getAddresseeId()), pb.equals("accountId", s.getAccountId()) ); - if (des.equals(RegistryDesignation.D) && !TextUtil.isEmpty(s.getContract())) { + if (des.equals(RegistryDesignation.D) || des.equals(RegistryDesignation.O) && !TextUtil.isEmpty(s.getContract())) { rgstrPredicate = pb.and(rgstrPredicate, pb.equals("contract", s.getContract())); } return Optional.ofNullable(registryImdg.getSingleObjectByPredicate(rgstrPredicate));