基于JAVA+SpringBoot+LayUI+Shiro的仓库管理系统



一、项目背景介绍:

仓库管理系统 某物流公司主要从事电子类产品的配送服务,仓储在企业的整个供应链中起 着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管理 费用的增加,服务质量难以得到保证,从而影响企业的竞争力。传统简单、静态 的仓储管理已无法保证企业各种资源的高效利用。如今的仓库作 业和库存控制 作 仓库管理系统 某物流公司主要从事电子类产品的配送服务,仓储在企业的整个供应链中起 着至关重要的作用

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  3. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
  4. shiro:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
  5. layui:layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,常适合网页界面的快速开发。layui 区别于那些基于MVVM 底层的前端框架,它更多是面向后端开发者,无需涉足前端各种工具,只需面对浏览器本身,让一切所需要的元素与交互。

三、系统功能模块介绍:

java仓储项目 java开发仓储系统_layui

四、数据库设计:

  1. bus_customer(bus_customer)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | customername | varchar(255) | NULL | |
 | zip | varchar(255) | NULL | |
 | address | varchar(255) | NULL | |
 | telephone | varchar(255) | NULL | |
 | connectionperson | varchar(255) | NULL | |
 | phone | varchar(255) | NULL | |
 | bank | varchar(255) | NULL | |
 | account | varchar(255) | NULL | |
 | email | varchar(255) | NULL | |
 | fax | varchar(255) | NULL | |
 | available | int(11) | NULL | |
  1. bus_goods(bus_goods)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | goodsname | varchar(255) | NULL | |
 | produceplace | varchar(255) | NULL | |
 | size | varchar(255) | NULL | |
 | goodspackage | varchar(255) | NULL | |
 | productcode | varchar(255) | NULL | |
 | promitcode | varchar(255) | NULL | |
 | description | varchar(255) | NULL | |
 | price | double | NULL | |
 | number | int(11) | NULL | |
 | dangernum | int(11) | NULL | |
 | goodsimg | varchar(255) | NULL | |
 | available | int(11) | NULL | |
 | providerid | int(11) | NULL | |
  1. bus_inport(bus_inport)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | paytype | varchar(255) | NULL | |
 | inporttime | datetime(0) | NULL | |
 | operateperson | varchar(255) | NULL | |
 | number | int(11) | NULL | |
 | remark | varchar(255) | NULL | |
 | inportprice | double | NULL | |
 | providerid | int(11) | NULL | |
 | goodsid | int(11) | NULL | |
  1. bus_outport(bus_outport)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | providerid | int(11) | NULL | |
 | paytype | varchar(255) | NULL | |
 | outputtime | datetime(0) | NULL | |
 | operateperson | varchar(255) | NULL | |
 | outportprice | VARCHAR(255) | NULL | |
  1. bus_provider(bus_provider)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | providername | varchar(255) | NULL | |
 | zip | varchar(255) | NULL | |
 | address | varchar(255) | NULL | |
 | telephone | varchar(255) | NULL | |
 | connectionperson | varchar(255) | NULL | |
 | phone | varchar(255) | NULL | |
 | bank | varchar(255) | NULL | |
 | account | varchar(255) | NULL | |
 | email | varchar(255) | NULL | |
 | fax | varchar(255) | NULL | |
 | available | int(11) | NULL | |
  1. bus_sales(bus_sales)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | customerid | int(11) | NULL | |
 | paytype | varchar(255) | NULL | |
 | salestime | datetime(0) | NULL | |
 | operateperson | varchar(255) | NULL | |
 | number | int(11) | NULL | |
 | remark | varchar(255) | NULL | |
 | saleprice | VARCHAR(255) | NULL | |
  1. bus_salesback(bus_salesback)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | customerid | int(11) | NULL | |
 | paytype | varchar(255) | NULL | |
 | salesbacktime | datetime(0) | NULL | |
 | salebackprice | VARCHAR(255) | NULL | |
  1. sys_dept(sys_dept)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | pid | int(11) | NULL | |
 | title | varchar(255) | NULL | |
 | open | int(11) | NULL | |
 | remark | varchar(255) | NULL | |
 | address | varchar(255) | NULL | |
 | available | int(11) | NULL | 状态【0不可用1可用】 |
 | ordernum | int(11) | NULL | 排序码【为了调事显示顺序】 |
 | createtime | datetime(0) | NULL | |
  1. sys_loginfo(sys_loginfo)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | loginname | varchar(255) | NULL | |
 | loginip | varchar(255) | NULL | |
 | logintime | datetime(0) | NULL | |
  1. sys_notice(sys_notice)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | title | varchar(255) | NULL | |
 | content | text | NULL | |
 | createtime | datetime(0) | NULL | |
 | opername | varchar(255) | NULL | |
  1. sys_permission(sys_permission)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | pid | int(11) | NULL | |
 | type | varchar(255) | NULL | 权限类型[menu/permission] |
 | title | varchar(255) | NULL | |
 | percode | varchar(255) | NULL | 权限编码[只有type=permission才有user:view] |
 | icon | varchar(255) | NULL | |
 | href | varchar(255) | NULL | |
 | target | varchar(255) | NULL | |
 | open | int(11) | NULL | |
 | ordernum | int(11) | NULL | |
 | available | int(11) | NULL | 状态【0不可用1可用】 |
  1. sys_role(sys_role)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | name | varchar(255) | NULL | |
 | remark | varchar(255) | NULL | |
 | available | int(11) | NULL | |
 | createtime | datetime(0) | NULL | |
  1. sys_role_permission(sys_role_permission)
1.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | rid | int(11) | NULL | |
 | pid | int(11) | NULL | |
  1. sys_user(sys_user)
14.  | 字段名 | 类型 | 默认值 | 列注释 |
 | --------- | ------------- | ------ | ------ |
 | id | int(11) | NULL | |
 | name | varchar(255) | NULL | |
 | loginname | varchar(255) | NULL | |
 | address | varchar(255) | NULL | |
 | sex | int(11) | NULL | |
 | remark | varchar(255) | NULL | |
 | pwd | varchar(255) | NULL | |
 | deptid | int(11) | NULL | |
 | hiredate | datetime(0) | NULL | |
 | mgr | int(11) | NULL | |
 | available | int(11) | NULL | |
 | ordernum | int(11) | NULL | |
 | type | int(255) | NULL | 用户类型[0超级管理员1,管理员,2普通用户] |
 | imgpath | varchar(255) | NULL | 头像地址 |
 | salt | varchar(255) | NULL | |

五、功能模块:

  1. 客户管理:客户管理主要存储一些仓库客户的一些基本信息,包括各种条件模糊查询,删除,编辑等功能
  2. 供应商管理:存款仓库系统中所有的供应商信息
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TIrMxHzF-1676475138540)(https://code-graden-server-dev.oss-cn-beijing.aliyuncs.com/2023-02-14/05ad45d8-ad3b-4a97-8158-d4dde8874cad_640 (5)].png)
  3. 商品管理:此模块主要对仓库中所有商品的管理,包括商品添加,删除修改等
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-02MHDm22-1676475138541)(https://code-graden-server-dev.oss-cn-beijing.aliyuncs.com/2023-02-14/edaf9952-c378-488b-8b12-8b11473dd08b_640 (8)].png)
  4. 销售额统计模块:主要对商品的入库,出库金额进行统计,从而形成销售额的图表,以供管理员查看

六、代码示例:

客户管理
@RequestMapping("loadAllCustomer")
	public DataGridView loadAllCustomer(CustomerVo customerVo) {
		IPage<Customer> page = new Page<>(customerVo.getPage(), customerVo.getLimit());
		QueryWrapper<Customer> queryWrapper = new QueryWrapper<>();
		queryWrapper.like(StringUtils.isNotBlank(customerVo.getCustomername()), "customername",
				customerVo.getCustomername());
		queryWrapper.like(StringUtils.isNotBlank(customerVo.getPhone()), "phone", customerVo.getPhone());
		queryWrapper.like(StringUtils.isNotBlank(customerVo.getConnectionperson()), "connectionperson",
				customerVo.getConnectionperson());
		this.customerService.page(page, queryWrapper);
		return new DataGridView(page.getTotal(), page.getRecords());
	}
供应商管理
/**
	 * 加载所有可用的供应商
	 */
	@RequestMapping("loadAllProviderForSelect")
	public DataGridView loadAllProviderForSelect() {
		QueryWrapper<Provider> queryWrapper=new QueryWrapper<>();
		queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
		List<Provider> list = this.providerService.list(queryWrapper);
		return new DataGridView(list);
	}
商品管理
@RequestMapping("loadAllGoods")
	public DataGridView loadAllGoods(GoodsVo goodsVo) {
		IPage<Goods> page = new Page<>(goodsVo.getPage(), goodsVo.getLimit());
		QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
		queryWrapper.eq(goodsVo.getProviderid()!=null&&goodsVo.getProviderid()!=0,"providerid",goodsVo.getProviderid());
		queryWrapper.like(StringUtils.isNotBlank(goodsVo.getGoodsname()), "goodsname", goodsVo.getGoodsname());
		queryWrapper.like(StringUtils.isNotBlank(goodsVo.getProductcode()), "productcode", goodsVo.getProductcode());
		queryWrapper.like(StringUtils.isNotBlank(goodsVo.getPromitcode()), "promitcode", goodsVo.getPromitcode());
		queryWrapper.like(StringUtils.isNotBlank(goodsVo.getDescription()), "description", goodsVo.getDescription());
		queryWrapper.like(StringUtils.isNotBlank(goodsVo.getSize()), "size", goodsVo.getSize());
		this.goodsService.page(page, queryWrapper);
		List<Goods> records = page.getRecords();
		for (Goods goods : records) {
			Provider provider = this.providerService.getById(goods.getProviderid());
			if(null!=provider) {
				goods.setProvidername(provider.getProvidername());
			}
		}
		return new DataGridView(page.getTotal(), records);
	}
销售额统计模块
@RequestMapping("loadAllOutport")
	public DataGridView loadAllOutport(OutportVo outportVo) {
		IPage<Outport> page = new Page<>(outportVo.getPage(), outportVo.getLimit());
		QueryWrapper<Outport> queryWrapper = new QueryWrapper<>();
		queryWrapper.eq(outportVo.getProviderid()!=null&&outportVo.getProviderid()!=0,"providerid",outportVo.getProviderid());
		queryWrapper.eq(outportVo.getGoodsid()!=null&&outportVo.getGoodsid()!=0,"goodsid",outportVo.getGoodsid());
		queryWrapper.ge(outportVo.getStartTime()!=null, "outputtime", outportVo.getStartTime());
		queryWrapper.le(outportVo.getEndTime()!=null, "outputtime", outportVo.getEndTime());
		queryWrapper.like(StringUtils.isNotBlank(outportVo.getOperateperson()), "operateperson", outportVo.getOperateperson());
		queryWrapper.like(StringUtils.isNotBlank(outportVo.getRemark()), "remark", outportVo.getRemark());
		queryWrapper.orderByDesc("outputtime");
		this.outportService.page(page, queryWrapper);
		List<Outport> records = page.getRecords();
		for (Outport outport : records) {
			Provider provider = this.providerService.getById(outport.getProviderid());
			if(null!=provider) {
				outport.setProvidername(provider.getProvidername());
			}
			Goods goods = this.goodsService.getById(outport.getGoodsid());
			if(null!=goods) {
				outport.setGoodsname(goods.getGoodsname());
				outport.setSize(goods.getSize());
			}
		}
		return new DataGridView(page.getTotal(), records);
	}

七、项目总结:

对于本次的系统开发来看,它主要是把我以前所学的知识进行了一次综合的应用。经过这次毕业设计的制作它主要是把我以前所学的理论知识应用到社会实践当中。通过这一次的仓库管理平台网站的设计与实现它能够有效把计算机知识与实际问题相互应用,通过计算机网络技术来解决用户生活当中的实际问题,从而提高我的编程能力。虽然在这次毕业设计当中我遇到了很多的问题和困难,但是通过不断的调试和老师的帮助让我圆满的完成了这次毕业设计。通过这次毕业设计的制作让我对计算机实际应用得到了很强的锻炼,同时也大大的提高了我的动手动脑能力,让我也感受到了其中的乐趣和喜悦。通过这次毕业设计的撰写把我在大学期间所学到的东西都应用上了,但是我觉得还是微不足道的,因为在这次毕业设计当中让我深深的了解到对于软件开发和学习理论知识它是两个完全不同的概念。但是通过这次软件的开发让我在以后的工作当中打下了良好的基础。

八、源码获取: