feat: 自动提交 - 周一 2025/09/22 16:50:40.70

This commit is contained in:
赵杰
2025-09-22 16:50:40 +01:00
parent 1e4376ba56
commit eff24947e0
5 changed files with 355 additions and 108 deletions

View File

@@ -100,17 +100,66 @@ def _ensure_workorder_template_file() -> str:
@workorders_bp.route('')
def get_workorders():
"""获取工单列表(优化版"""
"""获取工单列表(分页"""
try:
# 获取分页参数
page = request.args.get('page', 1, type=int)
per_page = request.args.get('per_page', 10, type=int)
status_filter = request.args.get('status', '')
priority_filter = request.args.get('priority', '')
# 使用优化后的查询
result = query_optimizer.get_workorders_optimized(
status_filter=status_filter, priority_filter=priority_filter
)
# 从数据库获取分页数据
from src.core.database import db_manager
from src.core.models import WorkOrder
return jsonify(result)
with db_manager.get_session() as session:
# 构建查询
query = session.query(WorkOrder)
# 应用过滤器
if status_filter:
query = query.filter(WorkOrder.status == status_filter)
if priority_filter:
query = query.filter(WorkOrder.priority == priority_filter)
# 按创建时间倒序排列
query = query.order_by(WorkOrder.created_at.desc())
# 计算总数
total = query.count()
# 分页查询
workorders = query.offset((page - 1) * per_page).limit(per_page).all()
# 转换为字典
workorders_data = []
for workorder in workorders:
workorders_data.append({
'id': workorder.id,
'order_id': workorder.order_id,
'title': workorder.title,
'description': workorder.description,
'category': workorder.category,
'priority': workorder.priority,
'status': workorder.status,
'user_id': workorder.user_id,
'assigned_to': workorder.assigned_to,
'created_at': workorder.created_at.isoformat() if workorder.created_at else None,
'updated_at': workorder.updated_at.isoformat() if workorder.updated_at else None,
'resolved_at': workorder.resolved_at.isoformat() if workorder.resolved_at else None
})
# 计算分页信息
total_pages = (total + per_page - 1) // per_page
return jsonify({
'workorders': workorders_data,
'page': page,
'per_page': per_page,
'total': total,
'total_pages': total_pages
})
except Exception as e:
return jsonify({"error": str(e)}), 500