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

相关推荐
金銀銅鐵9 分钟前
[Java] 如何自动生成简单的 Mermaid 类图
java·后端
Keepreal49611 分钟前
使用Canvas绘制转盘
javascript·vue.js·canvas
Hard but lovely13 分钟前
C++---》stl : pair 从使用到模拟实现
c++·后端
ScriptBIN25 分钟前
Javaweb--Vue
前端·vue.js
前端Hardy34 分钟前
Vue 高效开发技巧合集:10 个实用技巧让代码简洁 50%+,面试直接加分!
前端·javascript·vue.js
稚辉君.MCA_P8_Java41 分钟前
kafka解决了什么问题?mmap 和sendfile
java·spring boot·分布式·kafka·kubernetes
app出海创收老李1 小时前
海外独立创收日记(5)-上个月收入回顾与本月计划
前端·后端·程序员
每天进步一点_JL1 小时前
Docker 是什么?
后端·docker·容器
app出海创收老李1 小时前
海外独立创收日记(4)-第一笔汇款
前端·后端·程序员
咕白m6251 小时前
Python 将 Excel 转换为图片:实现数据可视化
后端·python