yueli
ed351f96ec
refactor(scrap): 按单执行校验改用 SKU 主键匹配
架构要求以 SKU 为唯一校验键,原实现按 (source_table, stock_id) 匹配。
已核验数据前提:SKU 在同一库存表内唯一(0 重复),且不存在跨表重名
(stock_buy / stock_semi / stock_product 交叉 0 冲突),故 SKU 可安全
作为跨来源标识。
改动:
· 新增 _match_key():SKU 非空时以 'sku:<SKU>' 为键;个别历史库存行
SKU 为空,回退 'row:<table>#<id>',前缀区分确保绝不串键;
· _build_approved_index() 按 SKU 聚合,累加批准量并保留各行的
source_table + stock_id(rows 列表);
· 校验拆为两步并给出明确文案:SKU 是否在批准明细内、同 SKU 累计量
是否超批准量;
· ★ 扣减改为按批准单配对的 source_table + stock_id 定位库存行加锁,
不再信任前端传来的 stock_id —— 实测前端传伪造 stock_id=99999 时,
仍从批准单指定的库存行扣减,台账同样记录批准单的 stock_id;
· 同一 SKU 在批准单占多行时,按批准顺序依次分配扣减量。
实测 7 项校验用例 + 多行分配 / 批准行已删除 / 可用不足 均符合预期。
2026-09-10 10:21:50 +08:00
..
2026-05-21 14:09:57 +08:00
2026-09-08 18:16:04 +08:00
2026-05-27 09:57:01 +08:00
2026-09-10 10:14:17 +08:00
2026-08-03 09:22:50 +08:00
2026-09-08 10:14:44 +08:00
2026-09-09 13:00:41 +08:00
2026-09-10 10:14:31 +08:00
2026-07-13 15:12:22 +08:00
2026-08-03 15:53:10 +08:00
2026-07-16 11:26:12 +08:00
2026-09-10 10:14:31 +08:00
2026-07-17 16:22:59 +08:00
2026-09-10 10:14:31 +08:00
2026-09-10 10:21:50 +08:00
2026-09-01 13:52:56 +08:00
2026-09-01 13:52:56 +08:00
2026-09-10 10:14:36 +08:00