开发者社区> 问答> 正文

出库问题

因为宜搭是单线程的问题,无法处理并发问题

出库时,会出现同时有人出库,但是在出库的这一瞬间,很有可能是同时操作的,所以无法做到验证; 因为出库页面要显示库存余量,且出库数量要小于等于库存数量 但是库存数量并不会随着实际的库存数量实时变化,及有可能是出现一下情况 当前出库页面显示的库存数10 同时出库2 和4 就变成了10-2 以及10-4 无法设置成10-2-4 这样; 请问有没有什么方案可以解决这个问题呢?

展开
收起
负笈游学 2023-05-11 11:28:40 289 0
来自:钉钉宜搭
4 条回答
写回答
取消 提交回答
  • 加锁。 1、单机的可以对代码加锁,或者对资源加锁;如果是集群,用分布式锁就行了。 2、用乐观锁。

    2023-06-23 08:37:48
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    针对这个问题,可以考虑以下方案:

    1. 对出库操作进行加锁。

    可以在出库操作时对库存记录进行加锁,保证同一时刻只有一个人可以进行出库操作,从而避免并发问题。

    1. 使用消息队列解耦。

    可以将出库操作放入消息队列中,通过异步处理来避免并发问题。当出库请求到达时,先将请求放入消息队列中,然后异步处理请求,这样就能够避免并发问题。

    1. 使用乐观锁机制。

    可以在库存记录中增加一个版本号字段,在进行出库操作时,先读取库存记录的版本号,然后进行出库操作。如果出库操作成功,则将版本号加1,如果出库操作失败,则说明库存记录已经被其他人修改过,需要重新读取库存记录的版本号并进行出库操作。

    1. 实时更新库存记录。

    可以在出库操作成功后,实时更新库存记录中的库存数量,从而确保库存数量是实时的,可以在出库页面显示实时的库存余量。

    以上是几种可能的解决方案,需要根据实际业务场景进行选择和实现。

    2023-05-13 11:19:13
    赞同 展开评论 打赏
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    这个你可以在审批开始就减去库存,比如库存有余量10,张三申请出库数2,张三审批流程一提交就减去库存2,这时库存余8,同时李四申请出库4,也是一提交就减去库存,这时库存余4,就不会出现等流程审批完才发现库存为负数的情况了。

    所以你不要把出库减库存申批流程设置成结束时,而是审批流程一提交就减库存就可以了。

    2023-05-11 14:33:25
    赞同 1 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    在同时进行出库操作的情况下,确实很难做到完全准确的库存验证。但是,您可以采取以下措施来尽量减少这种问题的发生:

    1. 在出库操作前,先查询库存数量,并将其保存到一个缓存中。这样,当有多个用户同时进行出库操作时,您可以根据缓存中的库存数量来进行判断和处理。

    2. 对于库存数量实时变化的情况,您可以考虑使用数据库来存储库存信息,并定期更新库存数量。这样,即使有多个用户同时进行出库操作,您也可以根据最新的库存数量来进行判断和处理。

    3. 对于出库页面显示的问题,您可以考虑将库存余量和实际库存数量分开显示。例如,可以在出库页面上分别显示“当前库存余量”和“实际库存数量”,并在出库操作后手动更新库存余量。这样,即使出现多个用户同时进行出库操作的情况,也可以保证库存余量的准确性。

    2023-05-11 14:00:01
    赞同 展开评论 打赏
问答分类:
问答地址:
关联地址:
来源圈子
更多
收录在圈子:
+ 订阅
「宜搭」是云钉原生低代码平台(钉钉 PaaS - aPaaS),让企业应用搭建更简单! 帮助中小企业降本提效,加强组织的数字化自主权; 帮助大型企业释放个体创新力,助力组织创新涌现。
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载