fix: map correct user real name for stocktake excel export
This commit is contained in:
@ -16,9 +16,9 @@ from app.models.base import MaterialBase
|
|||||||
|
|
||||||
# 尝试导入用户模型
|
# 尝试导入用户模型
|
||||||
try:
|
try:
|
||||||
from app.models.sys.user import User
|
from app.models.system import SysUser
|
||||||
except ImportError:
|
except ImportError:
|
||||||
User = None
|
SysUser = None
|
||||||
|
|
||||||
# 尝试导入半成品和成品
|
# 尝试导入半成品和成品
|
||||||
try:
|
try:
|
||||||
@ -590,21 +590,29 @@ def export_stocktake():
|
|||||||
}
|
}
|
||||||
|
|
||||||
def get_user_name(user_id):
|
def get_user_name(user_id):
|
||||||
"""获取用户真实姓名或昵称"""
|
"""获取用户真实姓名
|
||||||
if not User or not user_id:
|
SysUser.username 存储格式为 "真实姓名/登录账号" (例如: 张三/zhangsan01)
|
||||||
|
"""
|
||||||
|
if not SysUser or not user_id:
|
||||||
return str(user_id) if user_id else '-'
|
return str(user_id) if user_id else '-'
|
||||||
try:
|
try:
|
||||||
user = None
|
user = None
|
||||||
# 尝试通过ID或用户名查找
|
# 尝试通过ID或用户名查找
|
||||||
if str(user_id).isdigit():
|
if str(user_id).isdigit():
|
||||||
user = User.query.get(int(user_id))
|
user = SysUser.query.get(int(user_id))
|
||||||
if not user:
|
if not user:
|
||||||
user = User.query.filter_by(username=str(user_id)).first()
|
user = SysUser.query.filter(SysUser.username.like(f"%/{user_id}")).first()
|
||||||
if not user:
|
if not user:
|
||||||
user = User.query.filter_by(username=str(user_id).upper()).first()
|
user = SysUser.query.filter_by(username=str(user_id)).first()
|
||||||
|
|
||||||
if not user:
|
if not user:
|
||||||
user = User.query.filter_by(username=str(user_id).lower()).first()
|
return str(user_id)
|
||||||
return getattr(user, 'real_name', None) or getattr(user, 'nickname', None) or str(user_id)
|
|
||||||
|
# 解析 username 格式: "张三/zhangsan01" -> 取前面的真实姓名
|
||||||
|
raw_username = getattr(user, 'username', None) or str(user_id)
|
||||||
|
if '/' in raw_username:
|
||||||
|
return raw_username.split('/')[0]
|
||||||
|
return raw_username
|
||||||
except:
|
except:
|
||||||
return str(user_id)
|
return str(user_id)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user