fix(借库扫码出库): 校验 key 从 (source_table, sku) 改为 (name, spec_model) + N+1 修复
- 借库申请按 (name, spec_model) 发起,审批明细无 sku 字段; 旧代码用 sku 做 key 会导致所有条目坍塌到同一桶,校验形同虚设 - 改为在扫码循环内即时累加、即时拦截: 防线4 锁定 stock 行后从 material_base 取真实 (name, spec_model), 与审批单按 strip 后的 (name, spec_model) 聚合比对 - 新增 joinedload(ModelClass.base) 一次 JOIN 加载 base, 避免循环内 stock.base 触发 N+1 - 修正 dispatch_borrow docstring 中"sku 用于超额交叉校验"的错误描述
This commit is contained in:
@ -283,12 +283,14 @@ def dispatch_borrow():
|
||||
approval_id: int, // 关联的审批单ID
|
||||
items: [ // 扫码选中的库存物品
|
||||
{
|
||||
id: int, // 库存主键(按 source_table 路由到 StockBuy/StockSemi/StockProduct)
|
||||
source_table: str, // 'stock_buy' | 'stock_semi' | 'stock_product'
|
||||
sku: str, // 用于按 (source_table, sku) 与审批单做超额交叉校验
|
||||
id: int, // 库存主键(按 source_table 路由到 StockBuy/StockSemi/StockProduct)
|
||||
source_table: str, // 'stock_buy' | 'stock_semi' | 'stock_product'
|
||||
sku: str, // 可选;不参与审批上限校验
|
||||
out_quantity: float
|
||||
}
|
||||
],
|
||||
// ★ 审批上限校验在 service 层完成:以 (name, spec_model) 为物料维度聚合
|
||||
// 锁定 stock 行后从 material_base 表取真实 (name, spec_model) 与审批单比对
|
||||
borrower_name: str,
|
||||
signature_path: str,
|
||||
remark: str,
|
||||
|
||||
Reference in New Issue
Block a user