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 70b98dc67..2d7868c54 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 @@ -188,8 +188,8 @@ public class Sdf57Executor extends AbstractExecutor { 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)); - Registry registryUnitF = findRegByUnit(stmt, rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); //передаю null т.к. отнимется ниже по коду + Registry registryUnitB = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.B).orElse(copyRegB(rgs)); + Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); //передаю null т.к. отнимется ниже по коду registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance())); registryUnitF.setUpdated(Instant.now()); //registry F всегда меняется @@ -548,7 +548,7 @@ public class Sdf57Executor extends AbstractExecutor { } } - private Optional findRegByUnit(Statement s, Registry registry, RegistryUnit unit) { + private Optional findRegByUnit(Long companyId, Long accountId, String contract, Registry registry, RegistryUnit unit) { RegistryTradingParams p = new RegistryTradingParams( IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), @@ -559,12 +559,12 @@ public class Sdf57Executor extends AbstractExecutor { ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql), pb.sql(sql), - pb.equals("companyId", s.getAddresseeId()), //fixme companyId? - pb.equals("accountId", s.getAccountId()) + pb.equals("companyId", companyId), //fixme companyId? + pb.equals("accountId", accountId) ); - if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(s.getContract())) { - rgstrPredicate = pb.and(rgstrPredicate, pb.equals("contract", s.getContract())); + if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(contract)) { + rgstrPredicate = pb.and(rgstrPredicate, pb.equals("contract", contract)); } return Optional.ofNullable(registryImdg.getSingleObjectByPredicate(rgstrPredicate)); }