Загрузка данных


AuthorizedPersonCodesFilterDto filter = AuthorizedPersonCodesFilterDto.builder()
                        .authorities(Set.of(question.getCommitteeCode()))
                        .build();

                final List<AuthorizedPersonDto> membersKk = credentialsApiClient.getPersonsByCodes(filter);
                log.info("update_add_members_#1 membersKk: {}", membersKk.stream()
                        .map(AuthorizedPersonDto::getCode)
                        .collect(Collectors.toList()));

                String roleFilter = ".*(SCC|CHIEF|PARTICIPANT|ASSISTANT).*";

                List<Member> finalNewMembers = newMembers;
                List<AuthorizedPersonDto> filteredKkMembers = membersKk.stream()
                        .filter(m -> finalNewMembers.stream().noneMatch(newMember -> newMember.getUserName().equalsIgnoreCase(m.getCode())))
                        .peek(m -> {
                            Optional<String> determinedRole = m.getCredentials().stream()
                                    .filter(c -> filter.getAuthorities().contains(c.getAuthority().getCode()) // Фильтрация по committeeCode
                                            && c.getRole().getCode().toUpperCase().matches(roleFilter)
                                            && (c.getEndPowersDate() == null || c.getEndPowersDate().isAfter(LocalDate.now())))
                                    .map(c -> determineRole(c.getRole().getCode().toUpperCase()))
                                    .filter(role -> !"NONE".equals(role))
                                    .findFirst();

                            determinedRole.ifPresent(m::setDeterminedRole);
                        })
                        .filter(m -> m.getDeterminedRole() != null)
                        .collect(Collectors.toList());

                log.info("update_add_members_#2 filteredKkMembers: {}", filteredKkMembers.stream()
                        .map(AuthorizedPersonDto::getCode)
                        .collect(Collectors.toList()));

                // если вопрос isStrict810 (закрытое рассмотрение), то фильтруем ответ еще раз на тех,
                // у кого в сервисе EmployeeServiceApi есть доступ к защищенным вопросам (запрос /employees_security_access)
                if (question.isStrict810()) {
                    filteredKkMembers = filterByIsHasProhibitedInfoAccess(filteredKkMembers);
                }

                log.info("update_add_members_#3 filteredKkMembers: {}", filteredKkMembers.stream()
                        .map(AuthorizedPersonDto::getCode)
                        .collect(Collectors.toList()));

                // Если вопрос закрытый (isClosed) то фильтруем еще раз на тех, у кого в роли есть _SA-
                if (question.isClosed()) {
                    log.info("Closed question, filter out entries without _SA- in the role");
                    filteredKkMembers = filteredKkMembers.stream()
                            .filter(c -> c.getCredentials().stream()
                                    .map(r -> r.getRole().getCode())
                                    .anyMatch(r -> r.contains("_SA-")))
                            .collect(Collectors.toList());
                }

                log.debug("update_add_members_#4 filteredKkMembers: {}", filteredKkMembers.stream()
                        .map(AuthorizedPersonDto::getCode)
                        .collect(Collectors.toList()));

                // Объединяем руководителей контрагентов и сотрудников КК
                log.info("Merge counterparty supervisors with CC members");
                List<Member> kkMembers = filteredKkMembers.stream()
                        .map(m -> getMemberWithRoleFromAuthorizedPersonDto(questionId, m))
                        .filter(m -> !m.getRole().equals("NONE"))
                        .toList();
                newMembers.addAll(kkMembers);
                log.info("Added {} members from Credentials API (AUTO_CREDENTIALS_API) for question {}", kkMembers.size(), questionId);

                log.info("update_add_members_#5 newMembers: {}", newMembers.stream()
                        .map(Member::getUserName)
                        .collect(Collectors.toList()));

                // Добавляем пользователей по списку, который перенесли с фронта
                if (question.getType().equals(QuestionType.KKKIB_CUSTOM)) {
                    if (question.getCommitteeCode() != null
                            && question.getCommitteeCode().equalsIgnoreCase("KKKIBG")) {
                        log.info("Adding hardcoded SUPERVISOR_RISK members (AUTO_HARDCODED) for KKKIBG committee, question {}", questionId);
                        newMembers.addAll(List.of(
                                Member.builder()
                                        .questionId(questionId)
                                        .userName("vtb50645767")
                                        .role("SUPERVISOR_RISK")
                                        .build(),
                                Member.builder()
                                        .questionId(questionId)
                                        .userName("vtb70147118")
                                        .role("SUPERVISOR_RISK")
                                        .build(),
                                Member.builder()
                                        .questionId(questionId)
                                        .userName("vtb70149835")
                                        .role("SUPERVISOR_RISK")
                                        .build()
                        ));
                        addAdditionalMember(newMembers, questionId);
                    } else {
                        log.info("Adding hardcoded GUEST members (AUTO_HARDCODED) for KKKIB_CUSTOM, question {}", questionId);
                        newMembers.addAll(List.of(
                                Member.builder()
                                        .questionId(questionId)
                                        .userName("msk28514")
                                        .role("GUEST")
                                        .build(),
                                Member.builder()
                                        .questionId(questionId)
                                        .userName("msk25246")
                                        .role("GUEST")
                                        .build(),
                                Member.builder()
                                        .questionId(questionId)
                                        .userName("kmp12")
                                        .role("GUEST")
                                        .build()
                        ));
                    }
                }

                log.info("update_add_members_#6 newMembers: {}", newMembers.stream()
                        .map(Member::getUserName)
                        .collect(Collectors.toList()));

                if (questionTypes.contains(question.getType())) {
                    // Добавляем коллег инициатора
                    addQuestionInitiatorColleagues(questionId, newMembers);
                    // Добавляем руководителя
                    addQuestionInitiatorChief(questionId, newMembers);
                }

                log.info("update_add_members_#7 newMembers: {}", newMembers.stream()
                        .map(Member::getUserName)
                        .collect(Collectors.toList()));
            }