fix creating registryD by sdf57
This commit is contained in:
parent
c6d047a7ea
commit
9a3cb66037
2 changed files with 21 additions and 7 deletions
|
|
@ -61,7 +61,7 @@ public class ExecutionDepositComponent {
|
||||||
private final IMessageResolver msgResolver;
|
private final IMessageResolver msgResolver;
|
||||||
private final Function<STrades, IValidator> stradesValidator;
|
private final Function<STrades, IValidator> stradesValidator;
|
||||||
private final KafkaSender kafkaSender;
|
private final KafkaSender kafkaSender;
|
||||||
private static final DateTimeFormatter contractFormatter = DateTimeFormatter.ofPattern("ddMMyyyy");
|
private static final DateTimeFormatter contractFormatter = DateTimeFormatter.ofPattern("ddMMyy");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
|
|
@ -66,7 +67,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
private final Imdg<Security> securityImdg;
|
private final Imdg<Security> securityImdg;
|
||||||
private final Imdg<Currency> currencyImdg;
|
private final Imdg<Currency> currencyImdg;
|
||||||
private final IMessageResolver messageResolver;
|
private final IMessageResolver messageResolver;
|
||||||
// private final Pair<>
|
private final Pattern pattern = Pattern.compile("№\\w*/\\d{6}/\\d*/\\d*");
|
||||||
|
|
||||||
public Sdf57Executor(@Qualifier("sdf57Validator") Function<SDf57, IValidator> sDf57Validator,
|
public Sdf57Executor(@Qualifier("sdf57Validator") Function<SDf57, IValidator> sDf57Validator,
|
||||||
LoggingService errorLogger,
|
LoggingService errorLogger,
|
||||||
|
|
@ -182,7 +183,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
}
|
}
|
||||||
registryImdg.update(rgs);
|
registryImdg.update(rgs);
|
||||||
};
|
};
|
||||||
Consumer<RegistryDesignation> create = (dsgn) -> {
|
Consumer<RegistryDesignation> createRegA = (dsgn) -> {
|
||||||
Registry registry = createRegistryByStatement(stmt, company, account, dsgn);
|
Registry registry = createRegistryByStatement(stmt, company, account, dsgn);
|
||||||
Registry registryB = copyRegB(registry);
|
Registry registryB = copyRegB(registry);
|
||||||
Registry registryF = copyRegF(registry, registryB.getBalance());
|
Registry registryF = copyRegF(registry, registryB.getBalance());
|
||||||
|
|
@ -192,11 +193,17 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
registryImdg.insert(registryB);
|
registryImdg.insert(registryB);
|
||||||
};
|
};
|
||||||
|
|
||||||
//todo понять что происходит со инициатором/контрагентом, особенно если у нас только один Statement
|
Consumer<RegistryDesignation> createRegD = (dsgn) -> {
|
||||||
findRegByDesignation(stmt, RegistryDesignation.A).ifPresentOrElse(update, () -> create.accept(RegistryDesignation.A));
|
findRegByDesignation(stmt, RegistryDesignation.O).ifPresent(registry -> {
|
||||||
if (!StringUtils.isEmpty(sdf57.getSpecif()) && sdf57.getSpecif().contains("№")) {
|
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()) {
|
||||||
//todo доделать 11. Идентификация средств УК на клиринговом счете
|
//todo доделать 11. Идентификация средств УК на клиринговом счете
|
||||||
findRegByDesignation(stmt, RegistryDesignation.D).ifPresentOrElse(update, () -> create.accept(RegistryDesignation.D));
|
findRegByDesignation(stmt, RegistryDesignation.D).ifPresentOrElse(update, () -> createRegD.accept(RegistryDesignation.D));
|
||||||
}
|
}
|
||||||
stmt.setOperationStatus(OperationStatus.Executed.getKey());
|
stmt.setOperationStatus(OperationStatus.Executed.getKey());
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -230,6 +237,13 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
return rgsF;
|
return rgsF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Registry copyRegD(Registry rgs) {
|
||||||
|
Registry rgsB = rgs.clone();
|
||||||
|
rgsB.setRegistryDesignation(RegistryDesignation.D.getKey());
|
||||||
|
rgsB.setRegistryCode(RegistryUtil.clearingCode(rgsB));
|
||||||
|
return rgsB;
|
||||||
|
}
|
||||||
|
|
||||||
private record StmtCmpAcc(Statement statement, Company company, Account account) {
|
private record StmtCmpAcc(Statement statement, Company company, Account account) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue