группировка registry с учетом market и groupId для шага 7 активной сессии
This commit is contained in:
parent
bacea62e45
commit
d27b7d003d
3 changed files with 31 additions and 9 deletions
|
|
@ -0,0 +1,18 @@
|
|||
package ru.spcex.clearing.component;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public record GroupingRegistryKey(Long groupId, String market) {
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
GroupingRegistryKey that = (GroupingRegistryKey) o;
|
||||
return Objects.equals(groupId, that.groupId) && Objects.equals(market, that.market);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(groupId, market);
|
||||
}
|
||||
}
|
||||
|
|
@ -24,6 +24,7 @@ import ru.clearing.classes.statics.data.registry.Registry;
|
|||
import ru.clearing.classes.statics.data.sdf.SDf03;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf12;
|
||||
import ru.clearing.classes.statics.data.security.Security;
|
||||
import ru.spcex.clearing.component.GroupingRegistryKey;
|
||||
import ru.spcex.clearing.error.ClearingError;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||
|
|
@ -159,14 +160,15 @@ public class FormingPaymentInstructionSecurities implements ISessionStage {
|
|||
{
|
||||
Collection<Registry> registries = selectSecurityRegistries(sessionId);
|
||||
log.debug("found registries.size() = {}", registries.size());
|
||||
//группируем регистры по groupId
|
||||
Map<Long, List<Registry>> groups = registries
|
||||
.stream()
|
||||
.collect(Collectors.groupingBy(Registry::getGroupId));
|
||||
//группируем регистры по groupId и market
|
||||
Map<GroupingRegistryKey, List<Registry>> groups = registries
|
||||
.stream()
|
||||
.collect(Collectors.groupingBy(r -> new GroupingRegistryKey(r.getGroupId(), r.getMarket())));
|
||||
|
||||
log.debug("groups.size = {}", groups.size());
|
||||
Map<Long, PaymentGroup> lstGroups = RegistryLiabilitiesGroup.group(groups);
|
||||
for (Map.Entry<Long, List<Registry>> group : groups.entrySet()) {
|
||||
Long groupId = group.getKey();
|
||||
for (Map.Entry<GroupingRegistryKey, List<Registry>> group : groups.entrySet()) {
|
||||
Long groupId = group.getKey().groupId();
|
||||
Function<RegistryTradingParams, Registry> findByCode = rgsCode -> group.getValue()
|
||||
.stream()
|
||||
.filter(rgs -> RegistryManager.equalsByCode(rgsCode, rgs))
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import java.util.stream.Collectors;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.spcex.clearing.component.GroupingRegistryKey;
|
||||
import ru.spcex.clearing.service.registry.RegistryManager;
|
||||
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||
import static ru.spcex.platform.enumeration.RegistryTradingParams.OS_T;
|
||||
|
|
@ -21,17 +22,18 @@ import ru.spcex.platform.utils.text.TextUtil;
|
|||
public class RegistryLiabilitiesGroup {
|
||||
private static final Logger log = LoggerFactory.getLogger(RegistryLiabilitiesGroup.class);
|
||||
|
||||
public static Map<Long, PaymentGroup> group(Map<Long, List<Registry>> registriesCollection) {
|
||||
public static Map<Long, PaymentGroup> group(Map<GroupingRegistryKey, List<Registry>> registriesCollection) {
|
||||
Map<Long, PaymentGroup> result = new HashMap<>();
|
||||
List<Pair<Registry, Registry>> lstCstGroup = registriesCollection.entrySet()
|
||||
.stream()
|
||||
.map(entry -> {
|
||||
Long groupId = entry.getKey();
|
||||
Long groupId = entry.getKey().groupId();
|
||||
String market = entry.getKey().market();
|
||||
List<Registry> value = entry.getValue();
|
||||
Registry ls_t = obtain(value, OS_T);
|
||||
Registry cs_t = obtain(value, TS_T);
|
||||
if (ls_t == null || cs_t == null) {
|
||||
log.error("groupId {} registries {} failed to find LS_T/CS_T", groupId, value.stream()
|
||||
log.error("groupId/market {}/{} registries {} failed to find LS_T/CS_T", groupId, market, value.stream()
|
||||
.map(Registry::getId)
|
||||
.map(Object::toString)
|
||||
.collect(TextUtil.join));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue