feat(role): 新增按公司查询部门-员工关系 QueryUserRoleDepartmentsByCompany

供「部门-员工」选择器(员工档案直接绑部门-员工关系)使用:CompanyUUID 缺失或非法返回空集(不退化成全表查询),可选按 DeptUUIDs 进一步收窄。
This commit is contained in:
TermiNexus committed 2026-09-30 10:39:22 +08:00
1 parent 94cb71e82a
commit ad1156f5d9
1 file changed
+29
+29
View File
@@ -382,6 +382,35 @@ class RoleManager:
return []
return list(UserRoleDepartment.objects.filter(DeptUUID__in=uuids))
@staticmethod
def QueryUserRoleDepartmentsByCompany(CompanyUUID, DeptUUIDs=None):
"""按公司查询「部门-员工」关联行(UserRoleDepartment)
供「部门-员工」选择器(如员工档案直接绑部门-员工关系)在显式指定公司时
强制收窄数据范围(超管也不豁免)。CompanyUUID 缺失或非法返回空集,
不退化成全表查询。
Args:
CompanyUUID: 公司 UUID(bytes/str/UUIDObj)
DeptUUIDs: 可选,进一步按部门收窄(无效项跳过)
Returns:
QuerySet[UserRoleDepartment]
"""
if not CompanyUUID:
return UserRoleDepartment.objects.none()
try:
comp_bytes = UUIDObj(CompanyUUID).bytes
except Exception:
return UserRoleDepartment.objects.none()
qs = UserRoleDepartment.objects.filter(CompanyUUID=comp_bytes)
if DeptUUIDs:
dept_bytes = RoleManager._NormalizeUUIDs(DeptUUIDs)
if not dept_bytes:
return UserRoleDepartment.objects.none()
qs = qs.filter(DeptUUID__in=dept_bytes)
return qs
@staticmethod
def GetUserRoleWorkgroupsByUUIDs(UserRoleWorkgroupUUIDs):
"""批量按 URW 主键取工作组归属行"""