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 65e1f26c5..9ea38234e 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 @@ -30,6 +30,7 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.Optional; +import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; @@ -103,16 +104,22 @@ public class Sdf57Executor extends AbstractExecutor { log.error("error while validating sdf57.id={} - {}", sdf57.getId(), messageResolver.resolve(error.get())); continue; } + BiFunction> createStatementIfNeeded = (company, account) -> { + if (company == null || account == null) { + return Optional.empty(); + } + Statement statement = create(sdf57, company, account); + statementImdg.insert(statement); + return Optional.of(statement); + }; //create by companyDeb Company companyDeb = validator.getStored(ValidationStored.Sdf57CompanyDeb); Account accountDeb = validator.getStored(ValidationStored.Sdf57AccountDeb); - Statement statementDeb = create(sdf57, companyDeb, accountDeb); - statementImdg.insert(statementDeb); + Optional statementDeb = createStatementIfNeeded.apply(companyDeb, accountDeb); //create by companyCred Company companyCred = validator.getStored(ValidationStored.Sdf57CompanyCred); Account accountCred = validator.getStored(ValidationStored.Sdf57AccountCred); - Statement statementCred = create(sdf57, companyCred, accountCred); - statementImdg.insert(statementCred); + Optional statementCred = createStatementIfNeeded.apply(companyCred, accountCred); Consumer createRegistryIfNeeded = stmtCmpAcc -> { Statement stmt = stmtCmpAcc.statement(); @@ -135,8 +142,8 @@ public class Sdf57Executor extends AbstractExecutor { statementImdg.update(stmt); } }; - createRegistryIfNeeded.accept(new StmtCmpAcc(statementDeb, companyDeb, accountDeb)); - createRegistryIfNeeded.accept(new StmtCmpAcc(statementCred, companyCred, accountCred)); + statementDeb.ifPresent(stmt -> createRegistryIfNeeded.accept(new StmtCmpAcc(stmt, companyDeb, accountDeb))); + statementCred.ifPresent(stmt -> createRegistryIfNeeded.accept(new StmtCmpAcc(stmt, companyCred, accountCred))); } return result; } @@ -195,7 +202,7 @@ public class Sdf57Executor extends AbstractExecutor { // rgstrPredicate = pb.and(rgstrPredicate, pb.equals("contract", s.getContract())); // } // return Optional.ofNullable(registryImdg.getSingleObjectByPredicate(rgstrPredicate)); - return null; + return Optional.empty(); } DateTimeFormatter payDateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");