创新wms项目总结
入库模块
- 业务流程
- 创建入库单
- 支持手动创建
- 接收ERP采购单自动创建对应的入库单
- 审核入库单
- 提交审核
- 审核
- 创建收货任务
- 根据入库单明细去创建收货任务
- 指派收货人员
- 收货
- 收货人员查询自己的待收货任务
- 进行收货
- 良品
- 收货储位(可售)
- 收货数量
- 批号
- 不良品
- 放在独立的不可售储位
- 良品
- 自动创建上架任务
- 针对收货记录为良品的创建上架任务
- 收几次货就会创建几个上架任务
- 上架任务中会记录上架的数量、来源储位、批号等信息
- 上架
- 工作人员查询自己待上架的任务
- 上架操作
- 选择储位
- 输入上架数量
- 将上架的商品存入库存
- 打印入库单
- 创建入库单
- 技术亮点
- 表设计
- 入库单基本信息表
- 入库单明细表
- 任务表
- 存储了收货任务、上架任务、拣货任务
- 任务记录表
- 库存表
- 唯一约束:商品ID、储位、批号
- 在库数量、可用数量、分配数量
- 库存设计
- 统一设计一个库存存储接口
- 基本策略模式实现不同的库存存储方法
- 对于收货时:在库数量字段增加收货数量、可用数量字段增加收货数量
- 对于上架:原储位的在库数量字段减去上架数量、可用数量字段减去收货数量
- 对于出库:首先需要分配库存(锁定库存):可用数量字段减去分配数量、分配数量字段增加分配数量。
- 最后发货后扣减库存:在库数量字段减去发货数量、分配数量字段减去发货数量。
- 任务统一管理
- 针对系统中的收货任务、上架任务、拣货任务,统一进行管理
- 设计统一任务表存储这些任务,并且用任务类型来区分不同任务
- 如果进行任务调度只需要针对这一个任务表进行处理,非常方便
- web打印
- Lodop实现打印
- 打印设计器用的sv-print(开源项目)实现
- 商品条码、储位条码我们用的Code 128B
- 表设计
- 遇到什么问题
- 库存数量的记录错误,举例:在线数量成负数
- 解决方法:
- 阅读代码,进行分析,发现update 语句存在问题,
- 利用mysql的行锁,在update语句中进行where判断,在库数量必需大于等于上架数量,此时才将原储位的库存减去
- 遇到什么问题
- 分享一些设计上的缺陷进行优化
- 原来的代码对任务的处理没有统一化,对收货任务是一套代码,对上架任务是一套
- 改造方法:对任务统一管理
- 分享一些设计上的缺陷进行优化
会员方可继续阅读
试读到此结束,完整文档需开通会员,请花两分钟了解下我们
微信扫码添加添加老师微信开通会员:mrt_0607(备注:预见猿份)
探索者会员:69元,全站文档无障碍阅读,没有时间限制。
实践者会员:199元,全站文档+全站项目全套资料,没有时间限制。
