fix: resolve sqlalchemy f405 type casting error on stocktake query

This commit is contained in:
DXC
2026-03-13 10:33:17 +08:00
parent d61de5cfc9
commit 13c7357b6f
2 changed files with 19 additions and 16 deletions

View File

@ -127,19 +127,22 @@ def get_drafts():
获取当前用户的盘点进度
支持过滤: session_id, is_finished, is_processed
"""
user_id = _normalize_user_id(request.args.get('user_id', 'admin'))
# user_id 现在由 Token 解析,忽略前端传来的参数以避免类型错误
session_id = request.args.get('session_id')
is_finished = request.args.get('is_finished')
is_processed = request.args.get('is_processed')
is_finished_str = request.args.get('is_finished')
is_processed_str = request.args.get('is_processed')
query = StocktakeDraft.query.filter_by(user_id=user_id)
query = StocktakeDraft.query
if session_id:
query = query.filter_by(session_id=session_id)
if is_finished is not None:
query = query.filter_by(is_finished=is_finished.lower() in ['true', '1', 'yes'])
if is_processed is not None:
query = query.filter_by(is_processed=is_processed.lower() in ['true', '1', 'yes'])
# ★ 修复:必须将字符串转换为 Python 布尔值
if is_finished_str is not None:
is_finished_bool = is_finished_str.lower() in ('true', '1', 'yes')
query = query.filter_by(is_finished=is_finished_bool)
if is_processed_str is not None:
is_processed_bool = is_processed_str.lower() in ('true', '1', 'yes')
query = query.filter_by(is_processed=is_processed_bool)
drafts = query.order_by(StocktakeDraft.scan_time.desc()).all()
return jsonify([d.to_dict() for d in drafts]), 200