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.Task;
|
||||
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.ImdgId;
|
||||
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.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -33,6 +37,7 @@ public class InclusionObligations implements ISessionStage {
|
|||
private ImdgId idGenerator;
|
||||
private Imdg<Registry> registryImdg;
|
||||
private KafkaSender kafkaSender;
|
||||
private final List<ImdgPredicate> registryConditions = new ArrayList<>();
|
||||
|
||||
@Autowired
|
||||
public InclusionObligations(ImdgProvider imdgProvider) {
|
||||
|
|
@ -41,6 +46,17 @@ public class InclusionObligations implements ISessionStage {
|
|||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* для сессии возврата депозитов статус регистров
|
||||
* proc ИЛИ mng
|
||||
* proc не захардкожен для случая дополнительных условий
|
||||
* указывать обязательно если есть дополнительные условия
|
||||
*/
|
||||
public InclusionObligations addRegistryCondition(ImdgPredicate imdgPredicate) {
|
||||
this.registryConditions.add(imdgPredicate);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StageResult submit(Task<?> task) {
|
||||
InclusionToPoolPayload payload = (InclusionToPoolPayload) task.getData();
|
||||
|
|
@ -59,14 +75,25 @@ public class InclusionObligations implements ISessionStage {
|
|||
String sqlCondition = String.format("registryDesignation in ('%s', '%s') and " +
|
||||
"registryInstrumentType in ('%s', '%s') and " +
|
||||
"registryUnit = '%s' and " +
|
||||
"registryStatus = '%s' and " +
|
||||
"sessionType = '%s'",
|
||||
"O", "T",
|
||||
"S", "M",
|
||||
"T",
|
||||
"PROC",
|
||||
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()
|
||||
.filter(registry -> registry.getSettlementDate().isEqual(LocalDate.now()))
|
||||
.collect(Collectors.groupingBy(Registry::getGroupId));
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ public enum RegistryStatus implements IEnumKey {
|
|||
NACK("NACK"),
|
||||
FAIL("FAIL"),
|
||||
UNCV("UNCV"),
|
||||
MNG("MNG"),
|
||||
POOL("POOL")
|
||||
;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration;
|
|||
import ru.spcex.platform.utils.enumeration.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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue