背景
一个多月前我分享了一篇如何用 dcat 开发 erp 的文章,有人希望我分享下盘点功能的开发。我们开发前可以看下百度是如何定义盘点的:盘点是指定期或临时对库存商品实际数量进行清查、清点的一种作业
。我的理解就是修改库存。
开发思路
程序流程
- 1 选择盘点仓库,生产盘点批次,并把当前仓库状态改为正在盘点,出入库审核的时候,判断为不能审核。
- 2 盘点录入单:选择盘点批次带出盘点仓库。
-3 盘点审核单:选择盘点录入单,审核以后发生库存变化
-4 检查库存往来账
-5 检查库存(包括批次库存详细)
总结
我觉得光盘点功能开发是不难的,我这个可能是比较基础的,也是和客户对接沟通以及参考市面一些成熟的系统借鉴来的。而且基于 dcat 开发速度还是比较快的。
补充
erp 开发中可能涉及大量连表查询,我开始也是使用的 leftjoin 连表查询,但是我开发过程中开发效率低下,我后面换成子查询 whereHas 效率有了提升,在换位 whereHasIn 效率进一步提升,大家可以参考下这两篇文章 给 Eloquent 的 whereHas 加个 where in 的优化 以及 [扩展包] Laravel-wherehasin 提升 ORM 关联关系查询性能 (优化 whereHas 性能)。同时开发过程中建议使用 Telescope 调试工具,这样程序跑的过程中心理有底,可以快速定位问题原因。在开发过程中我大部分是发现哪个请求慢,然后点进去找原因,然后如果发现是 sql 慢,改加索引的加索引,字段该冗余的冗余,改加缓存的加缓存。