团队冲刺3

第3天:备件采购 + 入库模块 — 事务与库存联动的谨慎处理
关键词:事务传播 · 库存原子操作 · Excel导入
业务流程
采购 → 到货 → 质检 → 入库 → 库存增加
这是一个典型的事务链:采购单状态变为"已到货"后,才能触发入库操作;入库成功后,库存表对应记录必须同步更新。
编码实现
使用 @Transactional 保证入库和库存更新的原子性:
java
@Transactional(rollbackFor = Exception.class)
public void入库(WarehouseEntry entry) {
// 1. 校验采购单状态
// 2. 生成SN编码(Redis自增)
// 3. 写入入库记录
// 4. 更新/插入库存表(库存数量增加)
}
Excel批量导入
备件信息经常需要从ERP系统导出的Excel中批量导入。使用EasyExcel库:

  • 模板定义:备件名称、型号、类别、供应商、数量
  • 校验逻辑:必填项校验 + 去重校验(SN已存在则跳过)
  • 进度反馈:批量导入时逐条处理,前端通过WebSocket接收导入进度
    踩坑:高并发下的库存超卖
    问题场景:两个人同时操作同一备件的入库,在高并发下可能出现库存数量错误。
    解决:库存更新用乐观锁(version字段 + CAS更新),抢锁失败则重试:
    sql
    UPDATE inventory SET stock_qty = stock_qty + #{qty}, version = version + 1
    WHERE part_id = #{partId} AND version = #
posted @ 2026-06-17 22:23  河北肘击王  阅读(5)  评论(0)    收藏  举报