java erp进销存逻辑问题,跪求指点 Orz @jfinal 呼叫大佬

@jfinal
呼叫大佬

库存表A:

仓库名称、存货名(id)、数量

仓一、       小米、             100       (已有100)

进货单(单号:0001)填写:

仓库名称、存货名(id)、数量

仓一、       小米、             10           (要添加10个库存)

提后:

仓库名称、存货名(id)、数量

仓一、       小米、             110       (添加后100)

进货单(单号:0001):

仓库名称、存货名(id)、数量

仓一、       小米、            10 -> 20         (10改成20个库存)

更新后:

仓库名称、存货名(id)、数量

仓一、       小米、             120       (更新后120)

我设计逻辑请问有问题:

1、第一次保存添加,用行锁 update 库存表A set  count = count + ?  where 版本号 version + 1,确保库存添加成功。

2、更新的逻辑,先读取数据库0001订单减去原来10个,再添加新提交的20个,这个逻辑问题吗?是两个事务?请问正确姿势应该怎么样?

我想到的写法:

开启事务:

Db.tx(new IAtom(){

    public boolean run(){

       for(数据库查询的0001订单){

                 通过 行锁 update 库存表A  set count = count - ?(原来0001订单的数量) and version + 1 where  仓库名称 = ? and 存货名(id) = ? and  版本号 version 

        }

        for(新添加的001订单){

                 通过 行锁 update 库存表A  set count = count - ?(post接收0001订单的数量) and version + 1 where  仓库名称 = ? and 存货名(id) = ? and  版本号 version 

        }

   }

})


评论区

fmpoffice

2021-09-01 09:55

@jfinal 大佬看看

hb963724769

2021-09-02 16:09

照你这个逻辑,我要是有1000单进货单你咋整

fmpoffice

2021-09-02 20:33

@hb963724769 我写了好,批量并发没问题,不是按上面逻辑

steven_lhcb_9527

2021-09-06 13:41

进销存不会只有进吧,应该还有存吧