当前位置:

首页 > 编程开发 > 基于Springboot商品进销存管理系统如何实现

基于Springboot商品进销存管理系统如何实现

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

本文目录

    一、项目简介

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

    基础管理模块:包含客户管理、供应商管理、商品管理三个子模块

    进货管理模块:包含商品进货、退货、商品退货查询几个子查块

    销售管理:包含商品销售、退货、销售退货查询几个子查块

    系统管理:包含部门管理、菜单管理、权限管理、角色管理、用户管理五个子模块

    其它管理:包含登陆日志查询、系统公告管理、图标管理等几个子模块

    个人中心:包含个人资料管理、密码修改等相关功能

    二、环境介绍

    语言环境:Java:  jdk1.8

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

    应用服务器:Tomcat:  tomcat8.5.31

    开发工具:IDEA或eclipse

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

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

    三、系统展示

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

    基于Springboot商品进销存管理系统如何实现

    基础管理—客户管理

    基于Springboot商品进销存管理系统如何实现

    基础管理—供应商管理

    基于Springboot商品进销存管理系统如何实现

    基础管理—商品管理

    基于Springboot商品进销存管理系统如何实现

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

    基于Springboot商品进销存管理系统如何实现

    进货管理—商品退货查询

    基于Springboot商品进销存管理系统如何实现

    销售管理—商品销售

    基于Springboot商品进销存管理系统如何实现

    销售管理—销售退货查询

    基于Springboot商品进销存管理系统如何实现

    系统管理---部门管理

    基于Springboot商品进销存管理系统如何实现

    系统管理---菜单管理

    基于Springboot商品进销存管理系统如何实现

    系统管理---权限管理

    基于Springboot商品进销存管理系统如何实现

    系统管理---角色管理

    基于Springboot商品进销存管理系统如何实现

    系统管理---用户管理

    基于Springboot商品进销存管理系统如何实现

    其它管理—登陆日志

    基于Springboot商品进销存管理系统如何实现

    其它管理—系统公告

    基于Springboot商品进销存管理系统如何实现

    四、核心代码展示

    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 {
     
        @Autowired
        private ICustomerService customerService;
     
        /**
         * 查询所有的客户
         * @param customerVo
         * @return
         */
        @RequestMapping("loadAllCustomer")
        public DataGridView loadAllCustomer(CustomerVo customerVo){
            //1.声明一个分页page对象
            IPage page = new Page(customerVo.getPage(),customerVo.getLimit());
            //2.声明一个queryWrapper
            QueryWrapper 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 idList = new ArrayList();
                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 queryWrapper = new QueryWrapper();
            queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
            List 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 {
     
        @Autowired
        private IGoodsService goodsService;
     
        @Autowired
        private IProviderService providerService;
     
        /**
         * 查询商品
         * @param goodsVo
         * @return
         */
        @RequestMapping("loadAllGoods")
        public DataGridView loadAllGoods(GoodsVo goodsVo){
            IPage page = new Page<>(goodsVo.getPage(),goodsVo.getLimit());
            QueryWrapper 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 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 queryWrapper = new QueryWrapper();
            queryWrapper.eq("available",Constast.AVAILABLE_TRUE);
            List 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 queryWrapper = new QueryWrapper();
            queryWrapper.eq("available",Constast.AVAILABLE_TRUE);
            queryWrapper.eq(providerid!=null,"providerid",providerid);
            List 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;
     
     
    }
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    springBoot项目常用目录有哪些
    springBoot项目常用目录有哪些

    springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

    解析SpringBoot和SpringMVC之间的异同
    解析SpringBoot和SpringMVC之间的异同

    解析SpringBoot和SpringMVC之间的异同SpringBoot和SpringMVC是Java领域中非常重要的开发框架。虽然它们都属于Spring框架的一部分,但是在使用和功能上有一些明显的区别。本文将对SpringBoot和SpringMVC进行比较,解析它们之间的异同。首先,让我们来了解一下SpringBoot。SpringBo

    探索SpringCloud和SpringBoot在微服务领域的不同应用方式
    探索SpringCloud和SpringBoot在微服务领域的不同应用方式

    近年来,随着云计算和分布式架构的兴起,微服务架构的应用越来越广泛。而SpringCloud和SpringBoot作为Java开发中的两个重要框架,对于微服务的实现起到了重要的作用。然而,很多人对于它们在微服务领域的不同应用方式还存在一定的疑惑。本文将从不同的角度探索SpringCloud和SpringBoot在微服务中的应用方式。首先,我们来了解一下Spri

    SpringBoot和SpringMVC有何区别?
    SpringBoot和SpringMVC有何区别?

    SpringBoot与SpringMVC的不同之处在哪里?SpringBoot和SpringMVC是两个非常流行的Java开发框架,用于构建Web应用程序。尽管它们经常分别被使用,但它们之间的不同之处也是很明显的。首先,SpringBoot可以被看作是一个Spring框架的扩展或者增强版。它旨在简化Spring应用程序的初始化和配置过程,以帮助开发人

    比较SpringBoot和SpringMVC的异同
    比较SpringBoot和SpringMVC的异同

    SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

    SpringBoot与SpringMVC的不同点是什么?
    SpringBoot与SpringMVC的不同点是什么?

    SpringBoot和SpringMVC是Java开发中常用的两个框架,它们都是由Spring框架所提供的,但在功能和使用方式上有着一些区别。本文将分别介绍SpringBoot和SpringMVC的特点和区别。一、SpringBoot的特点:简化配置:SpringBoot通过约定优于配置的原则,大大简化了项目的配置过程。它可以自动配置项目所需要的参数,开发人

    比较和选择指南:SpringCloud与SpringBoot的功能比较
    比较和选择指南:SpringCloud与SpringBoot的功能比较

    SpringCloud和SpringBoot是目前Java领域中最热门的开源框架,它们分别提供了一套完善的微服务架构和快速构建应用程序的解决方案。本文将对它们的功能进行比较,并给出选择指南,以帮助读者了解它们的优势和适用场景。SpringBoot是一个用于开发Java应用程序的框架,它提供了一个简化的开发流程,集成了大量常用的功能和组件,减少了开发者的工作量

    SpringCloud与SpringBoot:分析它们之间的相似与不同
    SpringCloud与SpringBoot:分析它们之间的相似与不同

    深入剖析SpringCloud和SpringBoot的异同引言:在构建企业级应用程序时,Spring框架已经成为开发者们的首选。它提供了一种简单而强大的方式来构建独立于平台的应用程序。Spring框架由两个核心模块组成:SpringBoot和SpringCloud。虽然它们都可以帮助开发者快速搭建应用程序,但它们的目标和用途存在一些差异。本文将深入剖析Spr

    从架构角度看SpringCloud与SpringBoot的差异
    从架构角度看SpringCloud与SpringBoot的差异

    从架构角度看SpringCloud与SpringBoot的差异引言:在当今的互联网时代,构建分布式系统已经成为了一种必要的需求。而SpringBoot和SpringCloud正是为了满足这个需求而诞生的。尽管它们都是由Spring框架所提供的解决方案,但从架构角度来看,它们存在着一些重要的差异。本文将从架构的角度出发,对SpringBoot和SpringCl

    Java API 开发中使用 SpringBoot 的利弊分析
    Java API 开发中使用 SpringBoot 的利弊分析

    JavaAPI开发中使用SpringBoot的利弊分析随着互联网的快速发展和技术的不断更新迭代,Java技术在开发中的广泛应用引起了人们的重视。而SpringBoot作为一种微服务架构的解决方案,已经逐渐成为Java开发中的热门选择。那么,在JavaAPI开发中使用SpringBoot,到底有哪些利弊呢?下面来分析一下。利:简化开发

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。