Files
Mutual_Fund/repositories/work_order.py
T

35 lines
1.0 KiB
Python

"""客户工单查询仓储。"""
from __future__ import annotations
from sqlalchemy import select
from model.biz_work_order import BizWorkOrder
from repositories.base import BaseRepository
class WorkOrderRepo(BaseRepository):
"""按客户隔离查询工单状态。"""
model = BizWorkOrder
COMPLETED_STATUSES = ("已完成", "已驳回")
async def list_by_customer(
self, customer_id: int, *, active_only: bool = True, limit: int = 100
) -> list[BizWorkOrder]:
"""按更新时间倒序返回指定客户的工单。"""
conditions = [BizWorkOrder.customer_id == customer_id]
if active_only:
conditions.append(BizWorkOrder.status.not_in(self.COMPLETED_STATUSES))
statement = (
select(BizWorkOrder)
.where(*conditions)
.order_by(BizWorkOrder.update_time.desc(), BizWorkOrder.id.desc())
.limit(limit)
)
return list((await self.db.scalars(statement)).all())
__all__ = ["WorkOrderRepo"]