SDF13 assets fix, SDF06 DM*T search status conditions

This commit is contained in:
ialbert 2023-09-08 17:14:08 +03:00
parent d06be93bc0
commit 7a7468b9f2
2 changed files with 15 additions and 12 deletions

View file

@ -1,6 +1,5 @@
package ru.spcex.clearing.service.executors;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@ -12,6 +11,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.model.Result;
import ru.spcex.clearing.service.registry.AssetTBFProcessing;
import ru.spcex.clearing.service.registry.RegistryManager;
import ru.spcex.platform.enumeration.RegistryDesignation;
import ru.spcex.platform.enumeration.RegistryInstrumentType;
@ -37,12 +37,14 @@ public class Sdf13Executor extends AbstractExecutor<SDf13> {
private final Imdg<Registry> registryImdg;
protected final Imdg<Session> sessionImdg;
protected final RegistryManager registryManager;
public Sdf13Executor(ImdgProvider imdgProvider, RegistryManager registryManager) {
private final AssetTBFProcessing assets;
public Sdf13Executor(ImdgProvider imdgProvider, RegistryManager registryManager, AssetTBFProcessing assets) {
this.imdgProvider = imdgProvider;
this.sdf12Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf12, SDf12.class);
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.registryManager = registryManager;
this.assets = assets;
}
@Override
@ -88,12 +90,8 @@ public class Sdf13Executor extends AbstractExecutor<SDf13> {
Optional<Registry> registryUnitF = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), registry, RegistryUnit.F);
Optional<Registry> registryUnitT = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), registry, RegistryUnit.T);
if (registryUnitF.isPresent() && registryUnitT.isPresent()) {
registryUnitF.get().setBalance(registryUnitT.get().getBalance().subtract(registry.getBalance()));
registryUnitF.get().setUpdated(now);
registryImdg.update(registryUnitF.get());
assets.process(registry, registryUnitT.get(), registryUnitF.get(), BigDecimal.ZERO);
}
registry.setUpdated(now);
registryImdg.update(registry);
});
}
return result;

View file

@ -11,10 +11,7 @@ import ru.clearing.classes.statics.data.sdf.SDf06;
import ru.spcex.clearing.error.ClearingError;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.service.AnltSearcher;
import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.InOutDirection;
import ru.spcex.platform.enumeration.RegistryTradingParams;
import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.enumeration.*;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
@ -130,7 +127,15 @@ public enum Sdf06NewValidationRule implements IValidationRule<ImdgValidationCont
prdctBldr.equals("companyId", company.getId()),
prdctBldr.sql(RegistryCodeSqlBuilder.getInstance(code).build()));
Registry rgsAmf = registryImdg.getSingleObjectByPredicate(prdctByRegistryCode.apply(RegistryTradingParams.AM_F));
Registry rgsDmt = registryImdg.getSingleObjectByPredicate(prdctByRegistryCode.apply(RegistryTradingParams.DM_T));
Registry rgsDmt = registryImdg.getSingleObjectByPredicate(
prdctBldr.and(
prdctByRegistryCode.apply(RegistryTradingParams.DM_T),
prdctBldr.or(
prdctBldr.equals("registryStatus", RegistryStatus.OK.getKey()),
prdctBldr.equals("registryStatus", RegistryStatus.MNG.getKey())
)
)
);
log.trace("validating sdf06 id={} account={} companyId={} found registries: AM*F.id={} DM*T.id={}",
sdf06.getId(), sdf06.getAccount(), company.getId(),
rgsAmf == null ? null : rgsAmf.getId(),