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

相关推荐
程序员清风几秒前
滴滴三面:ZGC垃圾收集器了解吗?
java·后端·面试
WWZZ20259 分钟前
视觉SLAM第10讲:后端2(滑动窗口与位子图优化)
c++·人工智能·后端·算法·ubuntu·机器人·自动驾驶
在逃牛马29 分钟前
【Uni-App+SSM 宠物项目实战】Day12:宠物信息添加
后端
muchan9239 分钟前
为什么“它”在业务逻辑上是最简单的?
前端·后端·面试
我是日安41 分钟前
从零到一打造 Vue3 响应式系统 Day 6 - 响应式核心:链表实装应用
前端·vue.js
艾小码41 分钟前
Vue模板进阶:这些隐藏技巧让你的开发效率翻倍!
前端·javascript·vue.js
艾小码44 分钟前
还在手动加载全部组件?这招让Vue应用性能飙升200%!
前端·javascript·vue.js
薛定谔的算法1 小时前
Vue.js 条件渲染与列表渲染详解:原理、用法与最佳实践
前端·vue.js·前端框架
复苏季风1 小时前
Vue3 小白的疑惑:为什么用 const 定义的变量还能改?
前端·javascript·vue.js