убрал для итоговой МКР провверку обязательств по бумагам в шаге 5

добавил обновление статусов регистров в FAIL по второму дню в шаге 5
This commit is contained in:
ialbert 2023-06-06 12:54:56 +03:00
parent c7a752120d
commit 41c414497d
2 changed files with 31 additions and 0 deletions

View file

@ -80,6 +80,7 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean
@Override
public void afterPropertiesSet() throws Exception {
dealsPrepare.searchForExecutions(ExecutionType.ExecutionDeposit);
inspectionObligations.setSessionType(sectionType());
}
@Override

View file

@ -13,13 +13,16 @@ import ru.spcex.clearing.session.stage.Task;
import ru.spcex.platform.enumeration.*;
import ru.spcex.platform.imdg.api.Imdg;
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.utils.collection.Pair;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.enumeration.IEnumKey;
import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
import java.time.Instant;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@ -30,6 +33,7 @@ public class InspectionObligations implements ISessionStage {
private ImdgProvider imdgProvider;
private Imdg<Registry> registryImdg;
private final IMessageResolver msgResolver = new SimpleMessageResolver();
private SessionType sessionType;
private final static RegistryTradingParams OS_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);
}
public void setSessionType(SessionType sessionType) {
this.sessionType = sessionType;
}
@Override
public StageResult submit(Task<?> task) {
switch (task.getTaskType()) {
@ -95,6 +103,10 @@ public class InspectionObligations implements ISessionStage {
boolean isUncovered = false;
List<CheckResult> checkResults = new ArrayList<>();
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);
log.debug("search asset by registry.id={} sql {}", sqlAssetRegistryCondition, obligation.getId());
Registry asset = registryImdg.getSingleObjectBySQL(sqlAssetRegistryCondition);
@ -154,6 +166,24 @@ public class InspectionObligations implements ISessionStage {
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 {
registries.forEach(registry -> updateRegistryStatus(registry, RegistryStatus.OK));
}