successit 发表于 2020-8-14 15:24:12

《如何用低代码实现WMS的库存核算》公开课DEMO工程

附件是分享视频中的DEMO工程及数据库,希望能给大家带来一点开发思路,让我们共同进步!!!
DEMO.ZIP是数据库文件,数据库版本为SQL2008R2


   

mucai 发表于 2020-8-14 16:46:49

看完视频,有几个点一起讨论一下:
1、最近接触到一些新的知识点,包括:(1)要尽可能减少触发器和存储过程的使用,特别是高并发场景,出入库操作自然是属于高并发操作了,回写更易产生数据丢失;(2)数据库结构设计的类概念,比如先建一个收发表来作为所有出入库操作的类,而销售出库、采购出库、生产入库、POS出库等,相当于收发表类的一个实例,SAP的理念也是如此。而活字格是天生具有这样的特征的,表相当于类,页面相当于实例,有点面向对象的意思。所以,我现在也更倾向于视图的方案。
2、根据业务需求,核心问题之一,是这个类的构造,要考虑的因素特别多,比如库/区/位、仓内调拨、仓店调拨、公司/代理/加盟的多级流转、在途库存、盘点锁定、负库存、收发限制、收付款限制等,所以提前设计好很重要,不知道大家有没什么成熟的方案
3、第二个核心问题是效率问题或者说沉淀数据的处理,因为收发业务的发生频率非常高,小点的公司一年可能都会产生几十万行数据,大点的去到几百万行也有可能。这些历史数据的处理,一定会碰到效率问题。视频中说的,选一个月数据效率不会受影响,不全是这样的,还会受到要筛选的源数据量影响。这个沉淀数据应该如何处理,是定期算出库存为零的就清理到历史收发表里,还是定期截一个时间点之前的进行汇总合并?或者还有其它方案?都是值得讨论一下!
4、另外关于,收表和发表是在一起?还是分开?我更倾向于放一起,既然选择了视图方案,后期一定会大量使用收发表进行视图计算,放在一个表里的效率,一定高过去union或join。

Tom猫 发表于 2020-8-14 15:32:49

老板威武:hjyzw:

zzwange 发表于 2020-8-14 15:40:43

多谢分享!

1818himis 发表于 2020-8-15 10:13:50

mucai 发表于 2020-8-14 16:46
看完视频,有几个点一起讨论一下:
1、最近接触到一些新的知识点,包括:(1)要尽可能减少触发器和存储过 ...

老铁考虑的因素可以真多,我可以没有老铁那么大的脑力考虑这么全面
就帖子里面提到的收发表,你意思是一个数据库物理表吗?然后每次新增修改采购入库、销售出库都往这个收发表插入更新数据(单据类型、单号、日期、物料ID,数量、金额等)?这个收发表不是很大?

successit 发表于 2020-8-15 10:21:45

mucai 发表于 2020-8-14 16:46
看完视频,有几个点一起讨论一下:
1、最近接触到一些新的知识点,包括:(1)要尽可能减少触发器和存储过 ...

对的,你考虑的比较深,比较全面,系统如何设计其实是根据实际业务需求及应用场景来的,如果高并发、操作频次高,场景要求多,管理更精细且数据量大的情况下,我这种即时库存的核算方式再性能上会有影响。目前这样设计,主要还是因为我的应用场景并发不高,且出入库频次也不高,所以这样的视图计算不会对性能有比较明显的影响。
关于收发表合并一张表,这个其实我也想过,但想的不够深,回头我也从整个系统的逻辑方面看看是放一起好,还是分开好。

mucai 发表于 2020-8-15 11:08:36

1818himis 发表于 2020-8-15 10:13
老铁考虑的因素可以真多,我可以没有老铁那么大的脑力考虑这么全面
就帖子里面提到的收发表,你意思是一 ...

你没有理解哦!收发表相当于一个后台表,采购入库和销售出库在页面的排版表现上不一样,但实际上绑定的都是这张后台表,他们的添加更改操作,实际上都是提交收发表,所以不需要进行表间的回写操作。
所以这个收发表的设计,你要考虑到所有会涉及到库存收和发的情况,本质上就是字段以及后期视图的设计上要考虑到业务情况。最简单的例子:
-------------------------------------------------------------------------
收发表设计五个字段:来源表,往来单位,仓库,收数,发数
------------------------------------------------------------------------
采购入库页面的设计:
来源表:采购入库
供应商:绑定收发表的“往来单位”字段
收货仓库:绑定收发表的“仓库”字段
采购入库数量:绑定收发表的“收数”字段
--------------------------------------------------------
销售出库页面的设计:
来源表:销售出库
客户:绑定收发表的“往来单位”字段
发货仓库:绑定收发表的“仓库”字段
销售出库数量:绑定收发表的“发数”字段
--------------------------------------------------------------
看完这个小例子,应该能理解我说的意思了吧。采购入库、销售出库这些业务,实际上都只有一张后台表“收发表”,其它类EXCEL平台,称这个为“映射”,甚至有些平台模板(页面)和数据表必须绑定为一对一关系,了解这些,才会知道活字格的页面和表分离,有多香~~~

1818himis 发表于 2020-8-15 13:56:24

mucai 发表于 2020-8-15 11:08
你没有理解哦!收发表相当于一个后台表,采购入库和销售出库在页面的排版表现上不一样,但实际上绑定的都 ...

这么说就理解了
这不是鸡蛋放一个篮子和分开放的选择
个人觉得还是分开好些,参考ERP系统基本也是这么分开设置的。
都放一个表,这么多业务单据都读写一个表,再者数据量也是N个级别的增多,性能迟早是个问题。

mucai 发表于 2020-8-15 21:16:51

1818himis 发表于 2020-8-15 13:56
这么说就理解了
这不是鸡蛋放一个篮子和分开放的选择
个人觉得还是分开好些,参考ERP系统基本也是这么 ...
效率不一定,单表检查的性能肯定是比多表关联查询高的,要定时清理就是。据我所知,sap就是这么设计的

qq8009 发表于 2020-8-27 07:26:06

支持一个!
页: [1] 2
查看完整版本: 《如何用低代码实现WMS的库存核算》公开课DEMO工程