группировка registry с учетом market и groupId для шага 3 активной сессии

This commit is contained in:
etreschenkov 2025-06-23 18:21:10 +03:00
parent f78d4394c3
commit 485b269dcf

View file

@ -18,6 +18,7 @@ import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.relation.Relation;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
import ru.spcex.clearing.component.GroupRgsKey;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.service.validation.admission.AccountActiveValidationRule;
import ru.spcex.clearing.service.validation.admission.ClearingAvailableValidationRule;
@ -76,10 +77,11 @@ public class ObligationAdmission implements ISessionStage {
private StageResult<?> obligationAdmission(Long sessionId) {
Collection<Registry> registries = registryImdg.getCollectionObjectsBySQL("sessionId = " + sessionId);
Map<Long, List<Registry>> byGroups = registries.stream().collect(Collectors.groupingBy(Registry::getGroupId));
Map<GroupRgsKey, List<Registry>> byGroups = registries.stream()
.collect(Collectors.groupingBy(registry -> new GroupRgsKey(registry.getGroupId(), registry.getMarket())));
log.info("found {} ({} groups) registries with sessionId {}", registries.size(), byGroups.size(), sessionId);
Map<Long, Registry> rgsToUpdate = new HashMap<>();
for (Map.Entry<Long, List<Registry>> grpEntry : byGroups.entrySet()) {
for (Map.Entry<GroupRgsKey, List<Registry>> grpEntry : byGroups.entrySet()) {
EnumMessage groupError = null;
List<Registry> rgsGroup = grpEntry.getValue();
for (Registry rgs : rgsGroup) {
@ -91,7 +93,8 @@ public class ObligationAdmission implements ISessionStage {
}
}
if (groupError != null) {
log.warn("error {} for registries groupId = {}", messageResolver.resolve(groupError), grpEntry.getKey());
log.warn("error {} for registries groupId/market = {}/{}", messageResolver.resolve(groupError),
grpEntry.getKey().groupId(), grpEntry.getKey().market());
for (Registry rgs : rgsGroup) {
rgs.setRegistryStatus(RegistryStatus.NACK.getKey());
rgsToUpdate.put(rgs.getId(), rgs);