убрал для итоговой МКР провверку обязательств по бумагам в шаге 5
добавил обновление статусов регистров в FAIL по второму дню в шаге 5
This commit is contained in:
parent
c7a752120d
commit
41c414497d
2 changed files with 31 additions and 0 deletions
|
|
@ -80,6 +80,7 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
dealsPrepare.searchForExecutions(ExecutionType.ExecutionDeposit);
|
dealsPrepare.searchForExecutions(ExecutionType.ExecutionDeposit);
|
||||||
|
inspectionObligations.setSessionType(sectionType());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,16 @@ import ru.spcex.clearing.session.stage.Task;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.*;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
|
import ru.spcex.platform.utils.collection.Pair;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
@ -30,6 +33,7 @@ public class InspectionObligations implements ISessionStage {
|
||||||
private ImdgProvider imdgProvider;
|
private ImdgProvider imdgProvider;
|
||||||
private Imdg<Registry> registryImdg;
|
private Imdg<Registry> registryImdg;
|
||||||
private final IMessageResolver msgResolver = new SimpleMessageResolver();
|
private final IMessageResolver msgResolver = new SimpleMessageResolver();
|
||||||
|
private SessionType sessionType;
|
||||||
|
|
||||||
private final static RegistryTradingParams OS_T;
|
private final static RegistryTradingParams OS_T;
|
||||||
private final static RegistryTradingParams OM_T;
|
private final static RegistryTradingParams OM_T;
|
||||||
|
|
@ -65,6 +69,10 @@ public class InspectionObligations implements ISessionStage {
|
||||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSessionType(SessionType sessionType) {
|
||||||
|
this.sessionType = sessionType;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public StageResult submit(Task<?> task) {
|
public StageResult submit(Task<?> task) {
|
||||||
switch (task.getTaskType()) {
|
switch (task.getTaskType()) {
|
||||||
|
|
@ -95,6 +103,10 @@ public class InspectionObligations implements ISessionStage {
|
||||||
boolean isUncovered = false;
|
boolean isUncovered = false;
|
||||||
List<CheckResult> checkResults = new ArrayList<>();
|
List<CheckResult> checkResults = new ArrayList<>();
|
||||||
for (Registry obligation : obligationsInGroup) {
|
for (Registry obligation : obligationsInGroup) {
|
||||||
|
if (SessionType.FINL.equals(sessionType) && RegistryInstrumentType.S.equalsByKey(obligation.getRegistryInstrumentType())) {
|
||||||
|
checkResults.add(new CheckResult(obligation, false));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
String sqlAssetRegistryCondition = searchAssetsByObligationSql(obligation);
|
String sqlAssetRegistryCondition = searchAssetsByObligationSql(obligation);
|
||||||
log.debug("search asset by registry.id={} sql {}", sqlAssetRegistryCondition, obligation.getId());
|
log.debug("search asset by registry.id={} sql {}", sqlAssetRegistryCondition, obligation.getId());
|
||||||
Registry asset = registryImdg.getSingleObjectBySQL(sqlAssetRegistryCondition);
|
Registry asset = registryImdg.getSingleObjectBySQL(sqlAssetRegistryCondition);
|
||||||
|
|
@ -154,6 +166,24 @@ public class InspectionObligations implements ISessionStage {
|
||||||
tRegistryWithSameCompany.ifPresent(registry -> updateRegistryStatus(registry, RegistryStatus.FAIL));
|
tRegistryWithSameCompany.ifPresent(registry -> updateRegistryStatus(registry, RegistryStatus.FAIL));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//проверяем есть ли второй день для сделки (он не входит в пул, поэтому ищем отдельно)
|
||||||
|
if (registries.stream().anyMatch(rgs -> rgs.getRefundDate() != null)) {
|
||||||
|
Optional<Pair<Long, LocalDate>> groupIdAndSettleDate = registries.stream()
|
||||||
|
.map(rgs -> new Pair<>(rgs.getGroupId(), rgs.getSettlementDate()))
|
||||||
|
.filter(pair -> pair.getFirst() != null)
|
||||||
|
.filter(pair -> pair.getSecond() != null)
|
||||||
|
.findFirst();
|
||||||
|
if (groupIdAndSettleDate.isEmpty())
|
||||||
|
return;
|
||||||
|
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||||
|
Collection<Registry> refundRgs = registryImdg.getCollectionObjectsByPredicate(
|
||||||
|
pb.and(
|
||||||
|
pb.equals("groupId", groupIdAndSettleDate.get().getFirst()),
|
||||||
|
pb.not(pb.equals("settlementDate", groupIdAndSettleDate.get().getSecond()))
|
||||||
|
)
|
||||||
|
);
|
||||||
|
refundRgs.forEach(rgs -> updateRegistryStatus(rgs, RegistryStatus.FAIL));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
registries.forEach(registry -> updateRegistryStatus(registry, RegistryStatus.OK));
|
registries.forEach(registry -> updateRegistryStatus(registry, RegistryStatus.OK));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue