sdf20 plan balance if active session is present
This commit is contained in:
parent
22c6ca754c
commit
57c317aed2
1 changed files with 15 additions and 1 deletions
|
|
@ -5,6 +5,7 @@ import java.time.Instant;
|
|||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -14,6 +15,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
|||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.account.Account;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf20;
|
||||
|
|
@ -40,6 +42,7 @@ import ru.spcex.platform.enumeration.RegistryDesignation;
|
|||
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||
import ru.spcex.platform.enumeration.RegistryUnit;
|
||||
import ru.spcex.platform.enumeration.Sender;
|
||||
import ru.spcex.platform.enumeration.SessionStatus;
|
||||
import ru.spcex.platform.enumeration.StatementType;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
|
@ -47,14 +50,15 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
@Service
|
||||
public class Sdf20Executor {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<SDf20> sDf20Imdg;
|
||||
private final Imdg<SDf21> sDf21Imdg;
|
||||
private final Imdg<Session> sessionImdg;
|
||||
private final Imdg<Registry> rgsImdg;
|
||||
private final Imdg<Statement> stmtImdg;
|
||||
private final Function<SDf20, IValidator> validation;
|
||||
|
|
@ -72,6 +76,7 @@ public class Sdf20Executor {
|
|||
this.rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
this.stmtImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
this.sDf21Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf21, SDf21.class);
|
||||
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||
this.validation = validation;
|
||||
this.msgRslv = msgRslv;
|
||||
this.kafka = kafka;
|
||||
|
|
@ -151,6 +156,15 @@ public class Sdf20Executor {
|
|||
);
|
||||
if (sdf21 == null) {
|
||||
as_t.setBalance(safeBD(as_t.getBalance()).add(quantity));
|
||||
boolean sessionIsPresent = sessionImdg.getFirstObjectByFieldValues(Map.of(
|
||||
"workflowStatus", SessionStatus.ACTV.getKey()
|
||||
)) != null;
|
||||
if (sessionIsPresent) {
|
||||
BigDecimal planBalance = safeBD(as_t.getPlanBalance());
|
||||
BigDecimal dsiBalance = safeBD(ds_i.getBalance());
|
||||
as_t.setPlanBalance(planBalance.add(dsiBalance));
|
||||
}
|
||||
//тут меняем
|
||||
if (direction.equals(InOutDirection.in)) {
|
||||
as_t.setCredit(safeBD(as_t.getCredit()).add(quantity.abs()));
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue