Merge branch 'feature/SUPPORT-9035_fix_grids' into feature/SUPPORT-8696_add_kafka

This commit is contained in:
Eduard Tihomirov 2025-04-02 13:26:04 +03:00
commit b201567745
3 changed files with 32 additions and 9 deletions

View file

@ -57,6 +57,12 @@ public class RecruitmentDao {
.orderBy(DSL.field(DSL.name("recruitment_hierarchy", "depth")).asc())
.fetchInto(String.class);
}
public List<String> getAllRecruitmentIds() {
return dslContext.select(Recruitment.RECRUITMENT.IDM_ID)
.from(Recruitment.RECRUITMENT)
.fetch(Recruitment.RECRUITMENT.IDM_ID);
}
}

View file

@ -4,13 +4,17 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import component.field.persist.filter.FilterControl;
import model.Filter;
import model.grid.GridRows;
import model.grid.SortInfo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import ru.micord.ervu.account_applications.component.dao.RecruitmentDao;
import ru.micord.ervu.account_applications.security.model.jwt.UserSession;
import ru.micord.ervu.account_applications.security.model.role.ErvuRoleAuthority;
import service.GridV2ServiceImpl;
import ru.cg.webbpm.modules.database.api.dao.option.LoadOptions;
@ -35,6 +39,8 @@ public class RecruitmentGridService extends GridV2ServiceImpl {
@LocalGraphSource(sourceFieldName = "loadDao")
@NotNull
public EntityColumn recruitmentColumn;
@Value("${ervu.role.admin:#{null}}")
private String ervuRoleAuthority;
public RecruitmentGridService(RecruitmentDao recruitmentDao, SecurityContext securityContext) {
this.recruitmentDao = recruitmentDao;
@ -43,13 +49,21 @@ public class RecruitmentGridService extends GridV2ServiceImpl {
@Override
public GridRows loadData(Integer offset, Integer limit, Filter[] filters, SortInfo[] sortInfos) {
List<Filter> updatedFilters = new ArrayList<>(Arrays.asList(filters));
Optional<Filter> recruitmentFilterOpt = findRecruitmentFilter(updatedFilters);
List<String> recruitmentIds = recruitmentFilterOpt.map(
filter -> getChildRecruitmentIds(updatedFilters, filter))
.orElseGet(this::getRecruitmentIdsForCurrentUser);
UserSession userSession = securityContext.getUserSession();
Set<ErvuRoleAuthority> roles = userSession.roles();
List<String> recruitmentIds;
List<Filter> updatedFilters;
if (ervuRoleAuthority != null && roles.stream().anyMatch(role -> role.getAuthority().equals(ervuRoleAuthority))) {
updatedFilters = new ArrayList<>();
recruitmentIds = getAllRecruitmentIds();
}
else {
updatedFilters = new ArrayList<>(Arrays.asList(filters));
Optional<Filter> recruitmentFilterOpt = findRecruitmentFilter(updatedFilters);
recruitmentIds = recruitmentFilterOpt.map(
filter -> getChildRecruitmentIds(updatedFilters, filter))
.orElseGet(this::getRecruitmentIdsForCurrentUser);
}
LoadOptions options = getOptions(offset, limit, updatedFilters.toArray(new Filter[0]),
sortInfos
);
@ -78,5 +92,8 @@ public class RecruitmentGridService extends GridV2ServiceImpl {
private EntityFilter getEntityFilterForRecruitmentIds(List<String> recruitmentIds) {
return new EntityFilter(recruitmentIds, FilterOperation.IN, this.recruitmentColumn);
}
}
private List<String> getAllRecruitmentIds() {
return recruitmentDao.getAllRecruitmentIds();
}
}

View file

@ -28,4 +28,4 @@ ERVU_HTTP_TIMEOUT=30
ERVU_PWD_SIGN_SECRET_KEY=xoL2Y3VRdQ4phXG85o6dRqcgqb4bk6ULdkJJdlRLhZM=
KAFKA_ROLE_RECONCILIATION=idmv2.role.reconciliation
KAFKA_DOMAIN_RECONCILIATION=idmv2.domain.reconciliation
IDM_URL=http://idm
ERVU_ROLE_ADMIN=security_administrator