fix: map correct user real name for stocktake excel export

This commit is contained in:
DXC
2026-03-18 14:43:24 +08:00
parent 41a4518911
commit a5f4d32306

View File

@ -16,9 +16,9 @@ from app.models.base import MaterialBase
# 尝试导入用户模型
try:
from app.models.sys.user import User
from app.models.system import SysUser
except ImportError:
User = None
SysUser = None
# 尝试导入半成品和成品
try:
@ -590,21 +590,29 @@ def export_stocktake():
}
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 '-'
try:
user = None
# 尝试通过ID或用户名查找
if str(user_id).isdigit():
user = User.query.get(int(user_id))
user = SysUser.query.get(int(user_id))
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:
user = User.query.filter_by(username=str(user_id).upper()).first()
user = SysUser.query.filter_by(username=str(user_id)).first()
if not user:
user = User.query.filter_by(username=str(user_id).lower()).first()
return getattr(user, 'real_name', None) or getattr(user, 'nickname', None) or str(user_id)
return 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:
return str(user_id)