InclusionObligations
This commit is contained in:
parent
e224a4ffb7
commit
74697eb48f
3 changed files with 32 additions and 4 deletions
|
|
@ -13,11 +13,15 @@ import ru.spcex.clearing.session.stage.ISessionStage;
|
||||||
import ru.spcex.clearing.session.stage.StageResult;
|
import ru.spcex.clearing.session.stage.StageResult;
|
||||||
import ru.spcex.clearing.session.stage.Task;
|
import ru.spcex.clearing.session.stage.Task;
|
||||||
import ru.spcex.clearing.session.stage.task.InclusionToPoolPayload;
|
import ru.spcex.clearing.session.stage.task.InclusionToPoolPayload;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -33,6 +37,7 @@ public class InclusionObligations implements ISessionStage {
|
||||||
private ImdgId idGenerator;
|
private ImdgId idGenerator;
|
||||||
private Imdg<Registry> registryImdg;
|
private Imdg<Registry> registryImdg;
|
||||||
private KafkaSender kafkaSender;
|
private KafkaSender kafkaSender;
|
||||||
|
private final List<ImdgPredicate> registryConditions = new ArrayList<>();
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public InclusionObligations(ImdgProvider imdgProvider) {
|
public InclusionObligations(ImdgProvider imdgProvider) {
|
||||||
|
|
@ -41,6 +46,17 @@ public class InclusionObligations implements ISessionStage {
|
||||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* для сессии возврата депозитов статус регистров
|
||||||
|
* proc ИЛИ mng
|
||||||
|
* proc не захардкожен для случая дополнительных условий
|
||||||
|
* указывать обязательно если есть дополнительные условия
|
||||||
|
*/
|
||||||
|
public InclusionObligations addRegistryCondition(ImdgPredicate imdgPredicate) {
|
||||||
|
this.registryConditions.add(imdgPredicate);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StageResult submit(Task<?> task) {
|
public StageResult submit(Task<?> task) {
|
||||||
InclusionToPoolPayload payload = (InclusionToPoolPayload) task.getData();
|
InclusionToPoolPayload payload = (InclusionToPoolPayload) task.getData();
|
||||||
|
|
@ -59,14 +75,25 @@ public class InclusionObligations implements ISessionStage {
|
||||||
String sqlCondition = String.format("registryDesignation in ('%s', '%s') and " +
|
String sqlCondition = String.format("registryDesignation in ('%s', '%s') and " +
|
||||||
"registryInstrumentType in ('%s', '%s') and " +
|
"registryInstrumentType in ('%s', '%s') and " +
|
||||||
"registryUnit = '%s' and " +
|
"registryUnit = '%s' and " +
|
||||||
"registryStatus = '%s' and " +
|
|
||||||
"sessionType = '%s'",
|
"sessionType = '%s'",
|
||||||
"O", "T",
|
"O", "T",
|
||||||
"S", "M",
|
"S", "M",
|
||||||
"T",
|
"T",
|
||||||
"PROC",
|
|
||||||
sessionType);
|
sessionType);
|
||||||
Collection<Registry> obligations = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
ImdgPredicateBuilder prdctBuilder = registryImdg.predicateBuilder();
|
||||||
|
ImdgPredicate registryPredicate;
|
||||||
|
if (registryConditions.size() > 0) {
|
||||||
|
registryPredicate = prdctBuilder.and(
|
||||||
|
prdctBuilder.sql(sqlCondition),
|
||||||
|
prdctBuilder.and(registryConditions.toArray(new ImdgPredicate[0]))
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
registryPredicate = prdctBuilder.and(
|
||||||
|
prdctBuilder.sql(sqlCondition),
|
||||||
|
prdctBuilder.equals("registryStatus", RegistryStatus.PROC.getKey())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Collection<Registry> obligations = registryImdg.getCollectionObjectsByPredicate(registryPredicate);
|
||||||
Map<Long, List<Registry>> registryByGroupId = obligations.stream()
|
Map<Long, List<Registry>> registryByGroupId = obligations.stream()
|
||||||
.filter(registry -> registry.getSettlementDate().isEqual(LocalDate.now()))
|
.filter(registry -> registry.getSettlementDate().isEqual(LocalDate.now()))
|
||||||
.collect(Collectors.groupingBy(Registry::getGroupId));
|
.collect(Collectors.groupingBy(Registry::getGroupId));
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ public enum RegistryStatus implements IEnumKey {
|
||||||
NACK("NACK"),
|
NACK("NACK"),
|
||||||
FAIL("FAIL"),
|
FAIL("FAIL"),
|
||||||
UNCV("UNCV"),
|
UNCV("UNCV"),
|
||||||
|
MNG("MNG"),
|
||||||
POOL("POOL")
|
POOL("POOL")
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
public enum SessionType implements IEnumKey {
|
public enum SessionType implements IEnumKey {
|
||||||
IPOB("IPOB"), IPO0("IPO0"), IPOT("IPOT"), TRDT("TRDT"), MEDM("MEDM"), FINL("FINL"),
|
IPOB("IPOB"), IPO0("IPO0"), IPOT("IPOT"), TRDT("TRDT"), MEDM("MEDM"), FINL("FINL"), XDEP("XDEP"),
|
||||||
;
|
;
|
||||||
|
|
||||||
SessionType(String key) {
|
SessionType(String key) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue