系统支持切换单位来实时过滤业务数据的查询条件

This commit is contained in:
陈博文
2025-06-23 16:06:42 +08:00
parent 40863d00d2
commit 2e9c4f73de
13 changed files with 296 additions and 11 deletions

View File

@@ -1,19 +1,20 @@
package cn.iocoder.yudao.framework.web.core.util;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.extra.servlet.ServletUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.enums.RpcConstants;
import cn.iocoder.yudao.framework.common.enums.TerminalEnum;
import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
import cn.iocoder.yudao.framework.web.config.WebProperties;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.util.HashSet;
import java.util.Set;
/**
* 专属于 web 包的工具类
@@ -29,6 +30,7 @@ public class WebFrameworkUtils {
public static final String HEADER_TENANT_ID = "tenant-id";
public static final String HEADER_VISIT_TENANT_ID = "visit-tenant-id";
public static final String HEADER_VISIT_DEPT_IDS = "visit-dept-ids";
/**
* 终端的 Header
@@ -179,4 +181,27 @@ public class WebFrameworkUtils {
return className.endsWith("Api");
}
/**
* 获得访问的部门编号列表,从 header 中
* @param request 请求
* @return 部门编号列表,解析失败或无效时返回 null
*/
public static Set<Long> getVisitDeptIds(HttpServletRequest request) {
String deptIdsHeader = request.getHeader(HEADER_VISIT_DEPT_IDS);
if (StrUtil.isBlank(deptIdsHeader)) {
return new HashSet<>();
}
try {
Set<Long> deptIds = java.util.Arrays.stream(deptIdsHeader.split(","))
.map(String::trim)
.filter(cn.hutool.core.util.StrUtil::isNotBlank)
.map(Long::valueOf)
.collect(java.util.stream.Collectors.toSet());
return deptIds.isEmpty() ? new HashSet<>() : deptIds;
} catch (Exception e) {
// 解析失败
return new HashSet<>();
}
}
}