72 lines
3.1 KiB
Plaintext
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) |