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:
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user