作者主页:编程千纸鹤

作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享

项目编号:BS-XX-127

一,项目简介

本项目实现了基于springboot的进销存管理系统,主要用户开设网店的相关商品的进货、销售、库存的管理,功能比较完整,有着完备的权限管理系统,可以自行根据需要来设计角色和分配权限,权限的粒度可以做到页面级的权限控制,整个项目来讲比较优秀。主要实现的功能有如下几个模块:

  1. 基础管理模块:包含客户管理、供应商管理、商品管理三个子模块
  2. 进货管理模块:包含商品进货、退货、商品退货查询几个子查块
  3. 销售管理:包含商品销售、退货、销售退货查询几个子查块
  4. 系统管理:包含部门管理、菜单管理、权限管理、角色管理、用户管理五个子模块
  5. 其它管理:包含登陆日志查询、系统公告管理、图标管理等几个子模块
  6. 个人中心:包含个人资料管理、密码修改等相关功能

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7  /  Redis缓存数据库

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis-plus+Shiro

前端开发技术:Bootstrap+Layui+Freemarker模板

三,系统展示

超级管理员登陆系统:system/123456

基础管理—客户管理

基础管理—供应商管理

基础管理—商品管理

进货管理—商品进货   也可在此实现退货

进货管理—商品退货查询

销售管理—商品销售

销售管理—销售退货查询

系统管理---部门管理

系统管理---菜单管理

系统管理---权限管理

系统管理---角色管理

系统管理---用户管理

其它管理—登陆日志

其它管理—系统公告

四,核心代码展示

package com.dev.shop.bus.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
@RequestMapping("bus")
public class BusinessController {/*** 跳转到客户管理页面* @return*/@RequestMapping("toCustomerManager")public String toCustomerManager(){return "business/customer/customerManager";}/*** 跳转到供应商管理页面* @return*/@RequestMapping("toProviderManager")public String toProviderManager(){return "business/provider/providerManager";}/*** 跳转到商品管理页面* @return*/@RequestMapping("toGoodsManager")public String toGoodsManager(){return "business/goods/goodsManager";}/*** 跳转到进货管理页面* @return*/@RequestMapping("toInportManager")public String toInportManager(){return "business/inport/inportManager";}/*** 跳转到退货管理页面* @return*/@RequestMapping("toOutportManager")public String toOutportManager(){return "business/outport/outportManager";}/*** 跳转到商品销售管理页面* @return*/@RequestMapping("toSalesManager")public String toSalesManager(){return "business/sales/salesManager";}/*** 跳转到商品销售管理页面* @return*/@RequestMapping("toSalesbackManager")public String toSalesbackManager(){return "business/salesback/salesbackManager";}}
package com.dev.shop.bus.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dev.shop.bus.entity.Customer;
import com.dev.shop.bus.service.ICustomerService;
import com.dev.shop.bus.vo.CustomerVo;
import com.dev.shop.sys.common.Constast;
import com.dev.shop.sys.common.DataGridView;
import com.dev.shop.sys.common.ResultObj;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;@RestController
@RequestMapping("/customer")
public class CustomerController {@Autowiredprivate ICustomerService customerService;/*** 查询所有的客户* @param customerVo* @return*/@RequestMapping("loadAllCustomer")public DataGridView loadAllCustomer(CustomerVo customerVo){//1.声明一个分页page对象IPage<Customer> page = new Page(customerVo.getPage(),customerVo.getLimit());//2.声明一个queryWrapperQueryWrapper<Customer> queryWrapper = new QueryWrapper();queryWrapper.like(StringUtils.isNotBlank(customerVo.getCustomername()),"customername",customerVo.getCustomername());queryWrapper.like(StringUtils.isNotBlank(customerVo.getConnectionpersion()),"connectionpersion",customerVo.getConnectionpersion());queryWrapper.like(StringUtils.isNotBlank(customerVo.getPhone()),"phone",customerVo.getPhone());customerService.page(page,queryWrapper);return new DataGridView(page.getTotal(),page.getRecords());}/*** 添加一个客户* @param customerVo* @return*/@RequestMapping("addCustomer")public ResultObj addCustomer(CustomerVo customerVo){try {customerService.save(customerVo);return ResultObj.ADD_SUCCESS;} catch (Exception e) {e.printStackTrace();return ResultObj.ADD_ERROR;}}/*** 修改一个客户* @param customerVo* @return*/@RequestMapping("updateCustomer")public ResultObj updateCustomer(CustomerVo customerVo){try {customerService.updateById(customerVo);return ResultObj.UPDATE_SUCCESS;} catch (Exception e) {e.printStackTrace();return ResultObj.UPDATE_ERROR;}}/*** 删除一个客户* @param id 客户的ID* @return*/@RequestMapping("deleteCustomer")public ResultObj deleteCustomer(Integer id){try {customerService.removeById(id);return ResultObj.DELETE_SUCCESS;} catch (Exception e) {e.printStackTrace();return ResultObj.DELETE_ERROR;}}/*** 批量删除客户* @param customerVo 选中的客户* @return*/@RequestMapping("batchDeleteCustomer")public ResultObj batchDeleteCustomer(CustomerVo customerVo){try {Collection<Serializable> idList = new ArrayList<Serializable>();for (Integer id : customerVo.getIds()) {idList.add(id);}customerService.removeByIds(idList);return ResultObj.DELETE_SUCCESS;} catch (Exception e) {e.printStackTrace();return ResultObj.DELETE_ERROR;}}/*** 加载所有客户的下拉列表* @return*/@RequestMapping("loadAllCustomerForSelect")public DataGridView loadAllCustomerForSelect(){QueryWrapper<Customer> queryWrapper = new QueryWrapper<Customer>();queryWrapper.eq("available", Constast.AVAILABLE_TRUE);List<Customer> list = customerService.list(queryWrapper);return new DataGridView(list);}}
package com.dev.shop.bus.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dev.shop.bus.entity.Goods;
import com.dev.shop.bus.entity.Provider;
import com.dev.shop.bus.service.IGoodsService;
import com.dev.shop.bus.service.IProviderService;
import com.dev.shop.bus.vo.GoodsVo;
import com.dev.shop.sys.common.AppFileUtils;
import com.dev.shop.sys.common.Constast;
import com.dev.shop.sys.common.DataGridView;
import com.dev.shop.sys.common.ResultObj;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/goods")
public class GoodsController {@Autowiredprivate IGoodsService goodsService;@Autowiredprivate IProviderService providerService;/*** 查询商品* @param goodsVo* @return*/@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());queryWrapper.orderByDesc("id");goodsService.page(page,queryWrapper);List<Goods> records = page.getRecords();for (Goods goods : records) {Provider provider = providerService.getById(goods.getProviderid());if (null!=provider){goods.setProvidername(provider.getProvidername());}}return new DataGridView(page.getTotal(),page.getRecords());}/*** 添加商品* @param goodsVo* @return*/@RequestMapping("addGoods")public ResultObj addGoods(GoodsVo goodsVo){try {if (goodsVo.getGoodsimg()!=null&&goodsVo.getGoodsimg().endsWith("_temp")){String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg());goodsVo.setGoodsimg(newName);}goodsService.save(goodsVo);return ResultObj.ADD_SUCCESS;} catch (Exception e) {e.printStackTrace();return ResultObj.ADD_ERROR;}}/*** 修改商品* @param goodsVo* @return*/@RequestMapping("updateGoods")public ResultObj updateGoods(GoodsVo goodsVo){try {//商品图片不是默认图片if (!(goodsVo.getGoodsimg()!=null&&goodsVo.getGoodsimg().equals(Constast.DEFAULT_IMG))){if (goodsVo.getGoodsimg().endsWith("_temp")){String newName = AppFileUtils.renameFile(goodsVo.getGoodsimg());goodsVo.setGoodsimg(newName);//删除原先的图片String oldPath = goodsService.getById(goodsVo.getId()).getGoodsimg();AppFileUtils.removeFileByPath(oldPath);}}goodsService.updateById(goodsVo);return ResultObj.UPDATE_SUCCESS;} catch (Exception e) {e.printStackTrace();return ResultObj.UPDATE_ERROR;}}/*** 删除商品* @param id* @return*/@RequestMapping("deleteGoods")public ResultObj deleteGoods(Integer id,String goodsimg){try {//删除商品的图片AppFileUtils.removeFileByPath(goodsimg);goodsService.removeById(id);return ResultObj.DELETE_SUCCESS;} catch (Exception e) {e.printStackTrace();return ResultObj.DELETE_ERROR;}}/*** 加载所有可用的商品* @return*/@RequestMapping("loadAllGoodsForSelect")public DataGridView loadAllGoodsForSelect(){QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();queryWrapper.eq("available",Constast.AVAILABLE_TRUE);List<Goods> list = goodsService.list(queryWrapper);for (Goods goods : list) {Provider provider = providerService.getById(goods.getProviderid());if (null!=provider){goods.setProvidername(provider.getProvidername());}}return new DataGridView(list);}/*** 根据供应商ID查询商品信息* @param providerid    供应商ID* @return*/@RequestMapping("loadGoodsByProviderId")public DataGridView loadGoodsByProviderId(Integer providerid){QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();queryWrapper.eq("available",Constast.AVAILABLE_TRUE);queryWrapper.eq(providerid!=null,"providerid",providerid);List<Goods> list = goodsService.list(queryWrapper);for (Goods goods : list) {Provider provider = providerService.getById(goods.getProviderid());if (null!=provider){goods.setProvidername(provider.getProvidername());}}return new DataGridView(list);}}
package com.dev.shop.bus.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;import java.io.Serializable;@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("bus_customer")
@ToString
public class Customer implements Serializable {private static final long serialVersionUID=1L;@TableId(value = "id", type = IdType.AUTO)private Integer id;private String customername;private String zip;private String address;private String telephone;private String connectionpersion;private String phone;private String bank;private String account;private String email;private String fax;private Integer available;}

五,项目总结

以上展示了基于Springboot实现商品进销存管理系统的功能模块、所用技术、界面展示以及部分代码,系统整体设计的结构比较清晰,功能 也相对完整,比较适合做毕业设计或课程设计使用。

基于Springboot实现商品进销存管理系统相关推荐

  1. 基于springboot的药店进销存管理系统#毕业设计

    开发环境 项目编号: spring280基于springboot的药店进销存管理系统#毕业设计 开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomca ...

  2. 基于springboot的药店进销存管理系统

    随着市场经济的发展,市场竞争压力加大,企业要生存发展,就必须在各个方面加强管理,并要求企业有更高的信息化集成,能够对企业的整体资源进行集成管理.已意识到,企业间的竞争是综合实力的竞争,要求企业有更强的 ...

  3. 基于javaweb的商品进销存系统(java+vue+springboot+mybatis+mysql)

    基于javaweb的商品进销存系统(java+vue+springboot+mybatis+mysql) 运行环境 Java≥8.MySQL≥5.7.Node.js≥10 开发工具 后端:eclips ...

  4. java毕业设计介绍 基于SSM的仓库进销存管理系统

    一.源码描述 这是新款的基于B/S和Web开发的JavaWeb的SSM(Spring+SpringMVC+MyBatis)源码,包含源码数据库论文答辩ppt等,开发工具dea支持eclipse,MyS ...

  5. 基于javaweb的超市进销存管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

    基于javaweb的超市进销存管理系统(java+ssm+jsp+bootstrap+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse ...

  6. 基于Java毕业设计仓库进销存管理系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计仓库进销存管理系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计仓库进销存管理系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 ...

  7. 基于JAVA网上书店进销存管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA网上书店进销存管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA网上书店进销存管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈 ...

  8. 基于JAVA珠宝首饰进销存管理系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA珠宝首饰进销存管理系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA珠宝首饰进销存管理系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  9. php 进销存 spd,商品进销存管理系统PB

    商品进销存管理系统 商品进销存管理系统数据字典 系统运行环境: 操作系统:     Windows 2000 SP2 数据库系统:         Oracle 8.17 for NT 开发工具:   ...

  10. python新手案例——商品进销存管理系统(pymysql+xlwt)(一)

    一.pymysql和xlwt介绍 1.pymsq 此模块的作用是让python语言能够对数据库的表进行操作,在此,我们需要简单地了解以下pymysql最基础的操作. Python3 MySQL 数据库 ...

最新文章

  1. mysql 垂直拆分 原因_mysql的水平拆分和垂直拆分 (转)
  2. 【业务知识】档案工作流程
  3. FreeMarker快速上手
  4. 浅析多个单列索引和联合索引的区别
  5. python数据结构算法 北京大学_北京大学公开课《数据结构与算法Python版》
  6. 程序员,软件测试知多少?
  7. Linux Basics command
  8. 预装Win8笔记本改重装Win7的方法
  9. Google数据集搜索神器上线,和搜索论文一样简单 | 还不去训练网络?
  10. Android:手把手教你打造可缩放移动的ImageView(下)
  11. CentOS6.7系统优化加强牢固脚本
  12. Skype for Business Server 2015-01-基础环境-准备
  13. UDP实现简单的超时重传
  14. oracle连接plsqldev
  15. 矩阵快速幂codevs 3332 数列
  16. 彻底删除IE的缓存问题
  17. 上楼梯(df和dp解法)
  18. Zemax学习笔记(11) - 变焦镜头设计实例
  19. 灵遁者油画作品《认真——沉默》
  20. MATLAB text legend title 输入减号 minus 符号的做法

热门文章

  1. 数学建模入门-matlab实现偏微分方程数值解
  2. c++ primer plus第六版复习题及答案
  3. Java视频教程免费分享
  4. 【HTML+CSS】静态网页设计期末大作业——我的家乡无锡印象
  5. 使用 onpropertychange 和 oninput 检测 input、textarea输入改变
  6. 硕思闪客精灵怎么导出flash(gif)动画,flash游戏源文件疑难问题解答(注册码)
  7. Conficker蠕虫病毒专杀工具集锦
  8. java模拟器野人岛2,生存战争野人岛2最终版
  9. iNodeClient 校园网客户端在linux环境下的使用方法
  10. 【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中