группировка registry с учетом market и groupId для шага 5 активной сессии
This commit is contained in:
parent
bd2d8fcc58
commit
86917e91fd
1 changed files with 8 additions and 6 deletions
|
|
@ -19,6 +19,7 @@ import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.spcex.clearing.component.GroupRgsKey;
|
||||
import ru.spcex.clearing.component.predicate.cash.registry.AssetByTcrCompanyAccountCashedPredicate;
|
||||
import ru.spcex.clearing.error.ClearingError;
|
||||
import ru.spcex.clearing.error.RgsError;
|
||||
|
|
@ -128,8 +129,8 @@ public class InspectionObligationsV2 implements ISessionStage {
|
|||
|
||||
Collection<Registry> registriesToProcess = registryImdg.getCollectionObjectsBySQL(sqlCondition);
|
||||
Map<Long, Registry> rgssToStore = new HashMap<>(registriesToProcess.size()); //вторые ноги у сделок - нужна ли оптимизация?
|
||||
List<Map.Entry<Long, List<Registry>>> registriesByGroupSorted = registriesToProcess.stream()
|
||||
.collect(Collectors.groupingBy(Registry::getGroupId))
|
||||
List<Map.Entry<GroupRgsKey, List<Registry>>> registriesByGroupSorted = registriesToProcess.stream()
|
||||
.collect(Collectors.groupingBy(registry -> new GroupRgsKey(registry.getGroupId(), registry.getMarket())))
|
||||
.entrySet()
|
||||
.stream()
|
||||
.sorted((entry1, entry2) -> {
|
||||
|
|
@ -150,15 +151,15 @@ public class InspectionObligationsV2 implements ISessionStage {
|
|||
log.info("found {} ({} groups) registries by sql: {}", registriesToProcess.size(), registriesByGroupSorted.size(), sqlCondition);
|
||||
ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder();
|
||||
GROUP:
|
||||
for (Map.Entry<Long, List<Registry>> entry : registriesByGroupSorted) {
|
||||
for (Map.Entry<GroupRgsKey, List<Registry>> entry : registriesByGroupSorted) {
|
||||
List<Registry> group = entry.getValue();
|
||||
|
||||
List<Registry> obligationsInGroup = group.stream().filter(registry ->
|
||||
IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()) == RegistryDesignation.O).toList();
|
||||
log.debug("Find {} obligation with ids: {} in group: {}", obligationsInGroup.size(),
|
||||
log.debug("Find {} obligation with ids: {} in group/market: {}/{}", obligationsInGroup.size(),
|
||||
obligationsInGroup.stream()
|
||||
.map(Registry::getId).collect(Collectors.toList()),
|
||||
entry.getKey());
|
||||
entry.getKey().groupId(), entry.getKey().market());
|
||||
boolean isUncovered = false;
|
||||
List<CheckResult> checkResults = new ArrayList<>();
|
||||
for (Registry obligation : obligationsInGroup) {
|
||||
|
|
@ -191,7 +192,7 @@ public class InspectionObligationsV2 implements ISessionStage {
|
|||
});
|
||||
RegistryInstrumentType mOrS = IEnumKey.getEnumByKey(RegistryInstrumentType.class, rgs.getRegistryInstrumentType());
|
||||
if (mOrS == null) {
|
||||
log.error("RegistryInstrumentType is null for groupId {} {}.id={}", entry.getKey(),
|
||||
log.error("RegistryInstrumentType is null for groupId/market {}/{} {}.id={}", entry.getKey().groupId(), entry.getKey().market(),
|
||||
rgs.getRegistryCode(), rgs.getId());
|
||||
failGroup.run();
|
||||
continue;
|
||||
|
|
@ -345,6 +346,7 @@ public class InspectionObligationsV2 implements ISessionStage {
|
|||
|
||||
private Collection<Registry> getRefundDateRgsIfPresent(List<Registry> registries) {
|
||||
if (registries.stream().anyMatch(rgs -> rgs.getRefundDate() != null) && !SessionType.MEDM.equals(sessionType)) {
|
||||
//доп группировка по market не нужна, лист registries уже сгруппирован
|
||||
Optional<Pair<Long, LocalDate>> groupIdAndSettleDate = registries.stream()
|
||||
.map(rgs -> new Pair<>(rgs.getGroupId(), rgs.getSettlementDate()))
|
||||
.filter(pair -> pair.getFirst() != null)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue