springboot vue 开源 会员收银系统 (9) 库存管理 结算时扣库存

前言

完整版演示 http://120.26.95.195/
开发版演示 http://120.26.95.195:8889/

在之前的开发进程中,我们基本搭建了收银台、开卡结算及订单的优化升级 ,今天的文章里我们完成商品的出入库及收银台库存优化。

1.出入库管理

我们采用"总单细目的形式" 即一个出入库单对应多个商品

2.数据库表

java 复制代码
CREATE TABLE `business_stock` (
  `STOCK_ID` varchar(32) NOT NULL COMMENT '库存单id',
  `STOCK_TITLE` varchar(255) DEFAULT NULL COMMENT '库存单表头',
  `STOCK_NO` varchar(32) DEFAULT NULL COMMENT '库存单编号',
  `STOCK_STATUS` tinyint(2) DEFAULT '0' COMMENT '0正常 1审核完毕 2取消',
  `SHOP_ID` varchar(32) DEFAULT NULL COMMENT '门店id',
  `SHOP_NAME` varchar(255) DEFAULT NULL COMMENT '门店名',
  `CREATE_NAME` varchar(255) DEFAULT NULL COMMENT '创建人',
  `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  `CREATE_ID` varchar(32) DEFAULT NULL COMMENT '创建人id',
  `UPDATE_TIME` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `UPDATE_NAME` varchar(255) DEFAULT NULL COMMENT '修改人',
  `UPDATE_ID` varchar(32) DEFAULT NULL COMMENT '修改人id',
  `CHECK_ID` varchar(32) DEFAULT NULL COMMENT '审核人ID',
  `CHECK_NAME` varchar(255) DEFAULT NULL COMMENT '审核人姓名',
  `CHECK_TIME` datetime DEFAULT NULL COMMENT '审核时间',
  `STOCK_TYPE` tinyint(2) DEFAULT NULL COMMENT '类型 1入库 2出库',
  `STOCK_MONEY` decimal(10,2) DEFAULT NULL COMMENT '金额',
  `STOCK_IN_TYPE` tinyint(2) DEFAULT NULL COMMENT '入库类型',
  `STOCK_OUT_TYPE` tinyint(2) DEFAULT NULL COMMENT '出库类型',
  `VERSION` bigint(10) DEFAULT '0' COMMENT '乐观锁字段',
  `DELETED` tinyint(2) DEFAULT '0' COMMENT '0正常 1删除',
  `REMARK` varchar(1000) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`STOCK_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存单';

这是出入库单表的字段 这里我们省略了审核的步骤 后续可以进行完善

java 复制代码
CREATE TABLE `business_stock_detail` (
  `STOCK_DETAIL_ID` varchar(32) NOT NULL COMMENT '库存详情id',
  `STOCK_ID` varchar(32) DEFAULT NULL COMMENT '库存单id',
  `PRODUCT_ID` varchar(32) DEFAULT NULL COMMENT '商品',
  `PRODUCT_NAME` varchar(255) DEFAULT NULL COMMENT '商品名 ',
  `COUNT` bigint(20) DEFAULT NULL COMMENT '库存数量',
  `STOCK_STATUS` tinyint(2) DEFAULT NULL COMMENT '0正常 1审核完毕 2取消',
  `STOCK_TYPE` tinyint(2) DEFAULT NULL COMMENT '类型 1入库 2出库',
  `AMOUNT` decimal(10,2) DEFAULT NULL COMMENT '金额',
  `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`STOCK_DETAIL_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

这里出入库详情 简单的保存商品id和数量即可

3.下面进行展示

商品选择页面我们复用了 商品列表 并在商品表中增加是否进行库存管理这一字段 我们在结算时 只扣除进行库存管理的商品
并且做好异常处理 当库存为0 给出错误提示

结算后自动生成出库单

后续进行销单是 自动生成 入库单 重新将出库的商品进行库存回退

代码地址
https://gitee.com/ddeatrr/memberShop

相关推荐
知守观1 分钟前
从 4 套 PDF 库的混战,聊聊老项目的依赖管理与“静默失败”
java·后端·设计模式
用户072367066604 分钟前
基于 JavaAgent 的无侵入 Mock:让联调和链路测试不再等下游
java·后端
小蒜学长5 分钟前
基于SpingBoot+Vue的定向越野赛事管理系统的设计与开发(代码+数据库+LW)
java·前端·spring boot·后端·前后端分离·定向越野赛事
海岳云舟5 分钟前
spring自带线程池使用不当导致的死锁问题
java·后端
写码跑山的老艾7 分钟前
10 张图看懂:一次 MySQL 刷数,为什么压垮了 ES?
后端
RuoyiOffice15 分钟前
项目预算和交付日期变了,为什么不能直接改台账?
spring boot·项目管理·vue3·flowable·业务建模·ruoyi office·项目变更
姜鱼问生15 分钟前
获取的全是 172 开头的假 IP?Nginx 反代后,Flask 怎么才能拿到真实访客 IP?
后端
小蒜学长22 分钟前
基于过程性评价的ai助学平台(代码+数据库+LW)
java·spring boot·后端·微信小程序·过程性评价
陈随易27 分钟前
副业搞钱点子之 Umami 统计如何赚钱
前端·后端·程序员