feat: 借还记录默认排序重构——有限期单按预计归还时间升序靠前,无限期单按借出时间升序靠后(优先关注快到期/逾期)
This commit is contained in:
@ -434,7 +434,12 @@ class TransService:
|
|||||||
order_subq = (
|
order_subq = (
|
||||||
db.session.query(
|
db.session.query(
|
||||||
TransBorrow.borrow_no.label('borrow_no'),
|
TransBorrow.borrow_no.label('borrow_no'),
|
||||||
func.min(TransBorrow.expected_return_time).label('sort_key')
|
# 有限期梯队内:单号内最早预计归还时间
|
||||||
|
func.min(TransBorrow.expected_return_time).label('sort_key'),
|
||||||
|
# 无限期梯队内:单号内最早借出时间(呆滞借用盘点)
|
||||||
|
func.min(TransBorrow.borrow_time).label('min_borrow_time'),
|
||||||
|
# 单内是否含"有限期"明细:任一 expected_return_time 非空 → 1(有限期单排前)
|
||||||
|
func.max(case((TransBorrow.expected_return_time.isnot(None), 1), else_=0)).label('has_finite')
|
||||||
)
|
)
|
||||||
.group_by(TransBorrow.borrow_no)
|
.group_by(TransBorrow.borrow_no)
|
||||||
.subquery()
|
.subquery()
|
||||||
@ -673,8 +678,15 @@ class TransService:
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# 排序(单号维度的 sort_key ASC)
|
# ★ 默认排序(多级复合,符合"优先关注快到期/逾期"业务):
|
||||||
borrow_no_q = borrow_no_q.order_by(nullslast(asc(order_subq.c.sort_key)))
|
# 1) 有限期单(含 expected_return_time)排前,无限期单排后
|
||||||
|
# 2) 有限期内按最早预计归还时间 ASC(越快到期/逾期越久越靠前)
|
||||||
|
# 3) 无限期内按最早借出时间 ASC(借出越久越靠前,暴露长期未还的呆滞借用)
|
||||||
|
borrow_no_q = borrow_no_q.order_by(
|
||||||
|
case((order_subq.c.has_finite == 0, 1), else_=0).asc(),
|
||||||
|
nullslast(asc(order_subq.c.sort_key)),
|
||||||
|
asc(order_subq.c.min_borrow_time)
|
||||||
|
)
|
||||||
|
|
||||||
# 分页(基准 = borrow_no 单号数)
|
# 分页(基准 = borrow_no 单号数)
|
||||||
pagination = borrow_no_q.paginate(page=page, per_page=limit, error_out=False)
|
pagination = borrow_no_q.paginate(page=page, per_page=limit, error_out=False)
|
||||||
|
|||||||
Reference in New Issue
Block a user