Files
SMANAGE/_api_backup/TempLateAPI/GERP/API/Department/Get.api
T
2026-06-16 11:55:14 +08:00

72 lines
3.1 KiB
Plaintext

from PDAPI import *
import TempLateAPI.GERP.API.FormAPI.FormData as FormData
# 处理获取部门成员请求
def HandleGetDepartmentMember(table, cleanedData):
"""处理获取部门成员请求"""
DepartmentUUID = flask.request.args.get("DepartmentUUID")
PageIndex = max(flask.request.args.get("PageIndex", 1, type=int), 1)
PageSize = min(flask.request.args.get("PageSize", 10, type=int), 100)
# 构建查询
if DepartmentUUID and DepartmentUUID != "all" and DepartmentUUID != "0"*32:
# 检查部门是否存在
if not (Department := GERPDepartment.query.filter(
GERPDepartment.DepartmentUUID == Get16toBytes(DepartmentUUID)
).first()):
return {"code": 1, "msg": "部门 不存在"}
# 获取该部门的所有成员
MembersSMTM = Department.dept_GERPSMTM.all()
else:
# 获取所有部门的所有成员
MembersSMTM = GERPSMTM.query.all()
# 处理成员数据
Data = {}
for UserSMTM in MembersSMTM:
# 获取用户所属的所有部门
DepartmentSMTMs = UserSMTM.User.dept_GERPSMTM.options(
sqlalchemy.orm.joinedload(GERPSMTM.Department)
).all()
# 构建DepartmentUUIDs和Departments字段
DepartmentUUIDs = [GetBytesTo16(i.DepartmentUUID) for i in DepartmentSMTMs]
DepartmentNames = [Smtm.Department.DepartmentName for Smtm in DepartmentSMTMs if Smtm.Department]
# 避免重复处理同一个用户
UserUUIDStr = GetBytesTo16(UserSMTM.User.UserUUID)
if UserUUIDStr in Data:
continue
# 构建用户数据
Data[UserUUIDStr] = {
"UserUUID": UserUUIDStr,
"UserJobNumber": GetBytesTo16(UserSMTM.User.UserJobNumber) if UserSMTM.User.UserJobNumber else "未启用工号",
"UserName": UserSMTM.User.UserName,
"UserPermission": UserSMTM.User.UserPermission,
"UserGender": Gender2Str(UserSMTM.User.UserGender),
"UserEmail": UserSMTM.User.UserEmail,
"UserTele": UserSMTM.User.GetTele(),
"UserLastLoginDate": UserSMTM.User.UserLastLoginDate.strftime("%Y年%m月%d日 %H时%M分%S秒 UTC+8") if UserSMTM.User.UserLastLoginDate else "从未登录",
"UserCreateTime": UserSMTM.User.UserCreateTime.strftime("%Y年%m月%d日 %H时%M分%S秒 UTC+8"),
"DepartmentUUIDs": ";".join(DepartmentUUIDs) if DepartmentUUIDs else "",
"Departments": ";".join(DepartmentNames) if DepartmentNames else "",
"PersonInChargeStatus": UserSMTM.PersonInChargeStatus if (DepartmentUUID and DepartmentUUID != "all" and DepartmentUUID != "0"*32) else 0
}
# 分页处理
DataList = list(Data.values())
Total = len(DataList)
StartIndex = (PageIndex - 1) * PageSize
EndIndex = StartIndex + PageSize
PageData = DataList[StartIndex:EndIndex]
# 返回数据
return {
"code": 0,
"total": Total,
"data": PageData
}
# 注册函数类型插件
FormData.RegisterFunctionExtension("DepartmentMember", "get", HandleGetDepartmentMember)