基于Java实现的商品出入库管理系统(文末附源码)
前言
一、出入库管理系统含义介绍:
出入库管理系统是一套利用一物一码技术对仓库货物各环节实施全过程控制管理的系统,可对仓库货物进行入库、出库、货位、批次、保质期等实现一物一码标签序列号管理,对整个收货、发货、补货、集货、送货等每个环节的规范化作业 , 还可以根据用户诉求制作多种合理的统计报表。
二、出入库管理系统有哪些功能模块?
1、基本信息管理:系统不仅支持对包括品名、规格、生产厂家、产品批号、生产日期、有效期和箱包装等商品基本信息进行设置,而且货位管理功能对所有货位进行编码并存储在系统的数据库中,使系统能有效的追踪商品所处位置,也便于操作人员根据货位号迅速定位到目标货位在仓库中的物理位置;
2、上架管理:系统在自动计算最佳上架货位的基础上,支持人工干预,提供已存放同品种的货位、剩余空间,并根据避免存储空间浪费的原则给出建议的上架货位并按优先度排序,操作人员可以直接确认或人工调整;
3、拣选管理:拣选指令中包含位置信息和最优路径,根据货位布局和确定拣选指导顺序,系统自动在RF终端的界面等相关设备中根据任务所涉及的货位给出指导性路径,避免无效穿梭和商品找寻,提高了单位时间内的拣选量;
4、库存管理:系统支持自动补货,通过自动补货算法,不仅确保了拣选面存货量,也能提高仓储空间利用率,降低货位蜂窝化现象出现的概率;出入库管理系统能够对货位通过深度信息进行逻辑细分和动态设置,在不影响自动补货算法的同时,有效的提高了空间利用率和对控制精度。
三、企业使用出入库管理系统有什么优点?
1、灵活对仓库立体划分库区库位;
2、支持多级仓库的统一管理;
3、支持公司组织架构下对仓库的分级管理控制;4、提供自定义库存报警(包括库存量,库存产品过期等属性的报警);
5、二维码/条形码化仓库管理、实现采用数据采集终端进行数据作业处理;
6、发货单自动获取;
7、支持全自动化、半自动化、手工的入库作业。
出入库管理系统搭建费用,出入库管理系统功能介绍。今后,企业将不断提高自身科技创新服务于与时俱进的新水平,注重业务,注重实效,努力开创与时俱进的新局面,注重协调与进步,尽快展现与时俱进的新业绩。
功能
技术栈
基于SSM框架开发。
- Spring
- SpringMVC
- MyBatis
- MySQL
- Jquery
- html
- Layui
代码
Service
public class GoodsManageService {@Resourceprivate TypeMapper typeMapper;@Resourceprivate GoodsinfoMapper goodsinfoMapper;@Resourceprivate GoodsInfo_stockMapper goodsInfo_stockMapper;@Resourceprivate StockMapper stockMapper;/*** 查询所有商品类别的操作方法*/public List<Type> findType() {return typeMapper.selectByExample(null);}/*** 添加商品类别的操作方法*/public int insertGoodsType(Type type) {return typeMapper.insert(type);}/*** 查询商品名称是否存在的操作方法*/public List<Goodsinfo> findGoodsName(Goodsinfo goodsinfo) {GoodsinfoExample goodsinfoExample = new GoodsinfoExample();goodsinfoExample.createCriteria().andGnameEqualTo(goodsinfo.getGname());return goodsinfoMapper.selectByExample(goodsinfoExample);}/*** 添加商品的操作方法*/public int insertGoods(Goodsinfo goodsinfo) {return goodsinfoMapper.insert(goodsinfo);}/*** 添加商品时也默认添加商品库存为0的操作方法*/public int insertAndStock(Stock stock) {StockExample stockExample = new StockExample();stockExample.createCriteria().andGidEqualTo(stock.getGid());return stockMapper.insert(stock);}/*** 查询商品详细信息的操作方法*/public List<Goodsinfo_stock> findGoodsAll() {return goodsInfo_stockMapper.findGoodsAll();}/*** 修改商品信息的操作方法*/public int updateGoods(Goodsinfo goodsinfo) {GoodsinfoExample goodsinfoExample = new GoodsinfoExample();goodsinfoExample.createCriteria().andGidEqualTo(goodsinfo.getGid());return goodsinfoMapper.updateByExampleSelective(goodsinfo, goodsinfoExample);}}
@Service
public class StockInAndOutService {// 获取注入容器的对象@Resourceprivate GoodsinfoMapper goodsinfoMapper;@Resourceprivate StockinMapper stockinMapper;@Resourceprivate Stockin_detailMapper stockin_detailMapper;;@Resourceprivate StockMapper stockMapper;@Resourceprivate StockOutMapper stockOutMapper;@Resourceprivate StockOut_detailMapper stockOut_detailMapper;/*** 查询指定类别商品的操作方法*/public List<Goodsinfo> findGoodsByTid(String tid) {if (!tid.isEmpty() && !tid.equals("0")) {GoodsinfoExample goodsinfoExample = new GoodsinfoExample();goodsinfoExample.createCriteria().andTidEqualTo(Integer.parseInt(tid));return goodsinfoMapper.selectByExample(goodsinfoExample);} else {return goodsinfoMapper.selectByExample(null);}}/*** 添加出入库单号的操作方法*/public int insertStockInAndOut(Stockin stockin) {return stockinMapper.insert(stockin);}/*** 添加出入库详情的操作方法*/public int insertStockInAndOut_dateil(Stockin_detail stockin_detail) {return stockin_detailMapper.insert(stockin_detail);}/*** 查询出指定商品详情信息的操作方法*/public List<Goodsinfo> findGoodsById(String gname) {GoodsinfoExample goodsinfoExample = new GoodsinfoExample();goodsinfoExample.createCriteria().andGnameEqualTo(gname);return goodsinfoMapper.selectByExample(goodsinfoExample);}/*** 添加商品库存的操作方法*/public int inserStock(Stock stock) {// 先判断是否有已经存在库存idStockExample stockExample = new StockExample();stockExample.createCriteria().andGidEqualTo(stock.getGid());List<Stock> selectByExample = stockMapper.selectByExample(stockExample);if (selectByExample.size() != 0) {// 如果已经存在了就把原来的库存和新的入库数量相加int s = stock.getStock() + selectByExample.get(0).getStock();stock.setStock(s);return stockMapper.updateByExampleSelective(stock, stockExample);} else {return stockMapper.insert(stock);}}/*** 查询商品库存的操作方法*/public List<Stock> findStockByid(int gid) {StockExample stockExample = new StockExample();stockExample.createCriteria().andGidEqualTo(gid);return stockMapper.selectByExample(stockExample);}/*** 添加出库单号的操作方法*/public int insertStockOut(StockOut stockOut) {return stockOutMapper.insert(stockOut);}/*** 添加出库详情的操作方法*/public int insertStockOut_dateil(StockOut_detail stockOut_detail) {return stockOut_detailMapper.insert(stockOut_detail);}/*** 出库成功修改商品库存*/public int updateStock(Stock stock) {// 先查询出原有的库存StockExample stockExample = new StockExample();stockExample.createCriteria().andGidEqualTo(stock.getGid());List<Stock> selectByExample = stockMapper.selectByExample(stockExample);int s = selectByExample.get(0).getStock() - stock.getStock();// 原有库存减去出库数量stock.setStock(s);// 修改库存return stockMapper.updateByExampleSelective(stock, stockExample);}
数据库
-- ----------------------------
-- Table structure for permission
-- ----------------------------
DROP TABLE IF EXISTS `permission`;
CREATE TABLE `permission` (`pid` int(2) NOT NULL COMMENT '权限id',`pname` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '权限名称',`premark` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',PRIMARY KEY (`pid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '权限表' ROW_FORMAT = Compact;-- ----------------------------
-- Records of permission
-- ----------------------------
INSERT INTO `permission` VALUES (1, 'user:add', '添加用户权限');
INSERT INTO `permission` VALUES (2, 'goods:add', '商品添加权限');
INSERT INTO `permission` VALUES (3, 'stockin', '商品入库权限');
INSERT INTO `permission` VALUES (4, 'stockout', '商品出库权限');
-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (`rid` int(2) NOT NULL COMMENT '角色id0管理员1普通员工',`iname` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色名称',PRIMARY KEY (`rid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = Compact;-- ----------------------------
-- Records of role
-- ----------------------------
INSERT INTO `role` VALUES (0, '管理员');
INSERT INTO `role` VALUES (1, '普通员工');-- ----------------------------
-- Table structure for role_permission
-- ----------------------------
DROP TABLE IF EXISTS `role_permission`;
CREATE TABLE `role_permission` (`rid` int(2) NOT NULL COMMENT '角色id',`pid` int(2) NOT NULL COMMENT '权限id',INDEX `fk_rid2`(`rid`) USING BTREE,INDEX `fk_pid`(`pid`) USING BTREE,CONSTRAINT `fk_pid` FOREIGN KEY (`pid`) REFERENCES `permission` (`pid`) ON DELETE NO ACTION ON UPDATE CASCADE,CONSTRAINT `fk_rid2` FOREIGN KEY (`rid`) REFERENCES `role` (`rid`) ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色权限表' ROW_FORMAT = Compact;-- ----------------------------
-- Records of role_permission
-- ----------------------------
INSERT INTO `role_permission` VALUES (0, 1);
INSERT INTO `role_permission` VALUES (0, 2);
INSERT INTO `role_permission` VALUES (0, 3);
INSERT INTO `role_permission` VALUES (0, 4);
源码
点击免费获取源码&数据库