ialbert 2023-05-22 10:15:10 +03:00
parent db14e0f8e8
commit 00a02ed7d2
2 changed files with 25 additions and 37 deletions

View file

@ -1,12 +1,14 @@
package ru.spcex.clearing.session.stage.impl; package ru.spcex.clearing.session.stage.impl;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.execution.ExecutionCommon; import ru.clearing.classes.statics.data.execution.ExecutionCommon;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.execution.ExecutionFond;
import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.spcex.platform.classes.base.interfaces.ExecutionType;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.RegistryDesignation;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import java.math.BigDecimal;
import java.time.Instant;
public class RegistryUpdater { public class RegistryUpdater {
public static RegistryUpdater updater() { public static RegistryUpdater updater() {
@ -16,19 +18,9 @@ public class RegistryUpdater {
private RegistryUpdater() { private RegistryUpdater() {
} }
private Imdg<Registry> registryImdg;
private Imdg<Company> companyImdg;
private Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
private ExecutionCommon exec; private ExecutionCommon exec;
private Registry rgs; private Registry rgs;
public RegistryUpdater imdg(ImdgProvider imdgProvider) {
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
return this;
}
public RegistryUpdater registry(Registry rgs) { public RegistryUpdater registry(Registry rgs) {
this.rgs = rgs; this.rgs = rgs;
return this; return this;
@ -39,28 +31,25 @@ public class RegistryUpdater {
return this; return this;
} }
public Registry update() { public void update() {
Registry reg = new Registry(); if (exec.type().equals(ExecutionType.ExecutionDeposit)) {
reg.setCompanyId(exec.getCompanyId()); rgs.setBalance(safe(rgs.getBalance()).add(safe(((ExecutionDeposit) exec).getFirstLegAmount())));
Company company = searchCompany(); if (rgs.getRegistryDesignation().equals(RegistryDesignation.T.getKey())) {
reg.setTradingCode(company.getTradingCode()); rgs.setSettledCredit(safe(rgs.getSettledCredit()).add(safe(((ExecutionDeposit) exec).getFirstLegAmount())));
reg.setClearingCode(company.getClearingCode()); }
reg.setShortName(company.getShortName()); if (rgs.getRegistryDesignation().equals(RegistryDesignation.O.getKey())) {
reg.setFullName(company.getFullName()); rgs.setSettledDebit(safe(rgs.getSettledDebit()).add(safe(((ExecutionDeposit) exec).getFirstLegAmount())));
TradingClearingRegistry tcr = searchTradingClearingRegistry(); }
return null; rgs.setValueDate(((ExecutionDeposit) exec).getFirstLegSettlementDate());
} else if (exec.type().equals(ExecutionType.ExecutionFond)) {
rgs.setBalance(safe(rgs.getBalance()).add(safe(((ExecutionFond) exec).getSettlementAmount())));
}
rgs.setUpdated(Instant.now());
} }
private Company searchCompany() { private BigDecimal safe(BigDecimal value) {
return companyImdg.getSingleObjectBySQL("id = " + exec.getCompanyId()); return value == null ? BigDecimal.ZERO : value;
} }
private TradingClearingRegistry searchTradingClearingRegistry() {
return tradingClearingRegistryImdg.getSingleObjectBySQL("tradingClearingRegistryId = " + exec.getTradingClearingRegistryId());
}
// public
} }

View file

@ -70,7 +70,6 @@ public class RequirmentsAndObligationCreation implements ISessionStage {
BiConsumer<ExecutionCommon, RegistryDesignation> findAndUpdateOrCreate = (exec, regDsgn) -> BiConsumer<ExecutionCommon, RegistryDesignation> findAndUpdateOrCreate = (exec, regDsgn) ->
findReg(exec, regDsgn).ifPresentOrElse(registry -> { findReg(exec, regDsgn).ifPresentOrElse(registry -> {
RegistryUpdater.updater() RegistryUpdater.updater()
.imdg(imdgProvider)
.exec(partyExec) .exec(partyExec)
.registry(registry) .registry(registry)
.update(); .update();