• 【开源】基于JAVA的服装店库存管理系统


    在这里插入图片描述
    项目编号: S 052 ,文末获取源码。 \color{red}{项目编号:S052,文末获取源码。} 项目编号:S052,文末获取源码。



    一、摘要

    1.1 项目介绍

    基于JAVA+Vue+SpringBoot+MySQL的服装店库存管理系统,包含了服装档案模块、服装入库模块、服装出库模块,可以自由的运营服装库存数据,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,服装店库存管理系统基于角色的访问控制,给服装店管理员、普通店员角色使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

    1.2 项目录屏

    源码下载


    二、功能模块

    服装类产品本身具有季节性强、生命周期短等特点,同时消费者对服饰的要求越来越个性化、时尚化和品质化,这样一来,服装零售店铺对库存管理提出更高的要求,服装店如果想做到在降低库存量的同时提高客户满意度及迅速地反应市场需求,服装店铺必须提高内部库存管理水平。因此,开发一个利用计算机进行的服装店库存管理系统,对提高服装店库存管理的效率还是有很重要的现实意义的。

    在这里插入图片描述
    服装店库存管理系统的功能性需求主要包含数据中心模块、角色管理模块、课程档案模块、排课位置模块和排课申请模块这五大模块,系统是基于浏览器运行的web管理后端,其中各个模块详细说明如下:

    2.1 数据中心模块

    数据中心模块包含了服装店库存管理系统的系统基础配置,如登录用户的管理、运营公司组织架构的管理、用户菜单权限的管理、系统日志的管理、公用文件云盘的管理。
    其中登录用户管理模块,由管理员负责运维工作,管理员可以对登录用户进行增加、删除、修改、查询操作。
    组织架构,指的是高校的组织架构,该模块适用于管理这些组织架构的部门层级和教师的部门归属情况。
    用户菜单权限管理模块,用于管理不同权限的用户,拥有哪些具体的菜单权限。
    系统日志的管理,用于维护用户登入系统的记录,方便定位追踪用户的操作情况。
    公用云盘管理模块,用于统一化维护服装店库存管理系统中的图片,如合同签订文件、合同照片等等。

    2.2 角色管理模块

    角色是用户进入排课系统的身份标识,不同的角色有不同的菜单权限,所以需要对角色进行维护,角色的数据包括角色名称、角色状态、排序值、备注、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询角色数据,用户可以查询管理员发布的角色数据。

    2.3 服装档案模块

    服装是服装店库存管理系统的核心实体,需要建立服装档案模块对管理员维护的服装进行管理,服装的字段包括服装名称、服装图片、价格、库存数量、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询服装数据,用户可以查询管理员发布的服装数据。

    2.4 服装入库模块

    有了服装档案后,需要对服装进行入库操作,维持服装店的正常运营,服装入库的数据包括服装ID、服装名称、入库位置、入库数量、创建人、创建时间、更新人、更新时间,用户可以发起服装入库单,管理员可以查询用户发起的服装入库单。

    2.5 服装出库模块

    服装入库之后还有出库领用操作,这就需要建立服装出库模块,服装出库字段包括服装ID、服装名称、出库数量、出库原因、创建人、创建时间、更新人、更新时间,用户可以发起服装出库申请,管理员可以查询用户发起的服装出库单。


    三、系统设计

    3.1 用例设计

    在这里插入图片描述

    3.2 数据库设计

    3.2.1 角色表

    在这里插入图片描述

    3.2.2 服装档案表

    在这里插入图片描述

    3.2.3 服装入库表

    在这里插入图片描述

    3.2.4 服装出库表

    在这里插入图片描述


    四、系统展示

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    五、核心代码

    5.1 查询服装品类

    @RequestMapping(value = "/getByPage", method = RequestMethod.GET)
    @ApiOperation(value = "查询服装")
    public Result<IPage<Clothing>> getByPage(@ModelAttribute Clothing clothing ,@ModelAttribute PageVo page){
        QueryWrapper<Clothing> qw = new QueryWrapper<>();
        if(!ZwzNullUtils.isNull(clothing.getTitle())) {
            qw.like("title",clothing.getTitle());
        }
        if(!ZwzNullUtils.isNull(clothing.getContent())) {
            qw.like("content",clothing.getContent());
        }
        if(!ZwzNullUtils.isNull(clothing.getShelves())) {
            qw.eq("shelves",clothing.getShelves());
        }
        IPage<Clothing> data = iClothingService.page(PageUtil.initMpPage(page),qw);
        return new ResultUtil<IPage<Clothing>>().setData(data);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    5.2 新增服装

    @RequestMapping(value = "/insert", method = RequestMethod.POST)
    @ApiOperation(value = "新增服装")
    public Result<Clothing> insert(Clothing clothing){
        iClothingService.saveOrUpdate(clothing);
        return new ResultUtil<Clothing>().setData(clothing);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5.3 新增服装入库

    @RequestMapping(value = "/insert", method = RequestMethod.POST)
    @ApiOperation(value = "新增服装入库")
    public Result<ClothingIn> insert(ClothingIn clothingIn){
        Clothing c = iClothingService.getById(clothingIn.getClothId());
        if(c == null) {
            return ResultUtil.error("服装不存在");
        }
        clothingIn.setTitle(c.getTitle());
        clothingIn.setContent(c.getContent());
        clothingIn.setTime(DateUtil.now());
        User currUser = securityUtil.getCurrUser();
        clothingIn.setWorkUser(currUser.getNickname());
        clothingIn.setWorkMobile(currUser.getMobile());
        iClothingInService.saveOrUpdate(clothingIn);
        c.setNumber(c.getNumber().add(clothingIn.getNumber()));
        iClothingService.saveOrUpdate(c);
        return new ResultUtil<ClothingIn>().setData(clothingIn);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5.4 查询服装入库

    @RequestMapping(value = "/getByPage", method = RequestMethod.GET)
    @ApiOperation(value = "查询服装入库")
    public Result<IPage<ClothingIn>> getByPage(@ModelAttribute ClothingIn clothingIn ,@ModelAttribute PageVo page){
        QueryWrapper<ClothingIn> qw = new QueryWrapper<>();
        if(!ZwzNullUtils.isNull(clothingIn.getClothId())) {
            qw.eq("cloth_id",clothingIn.getClothId());
        }
        if(!ZwzNullUtils.isNull(clothingIn.getContent())) {
            qw.like("content",clothingIn.getContent());
        }
        if(!ZwzNullUtils.isNull(clothingIn.getWorkUser())) {
            qw.like("work_user",clothingIn.getWorkUser());
        }
        IPage<ClothingIn> data = iClothingInService.page(PageUtil.initMpPage(page),qw);
        return new ResultUtil<IPage<ClothingIn>>().setData(data);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    5.5 新增服装出库

    @RequestMapping(value = "/insert", method = RequestMethod.POST)
    @ApiOperation(value = "新增服装出库")
    public Result<ClothingOut> insert(ClothingOut clothingOut){
        Clothing c = iClothingService.getById(clothingOut.getClothId());
        if(c == null) {
            return ResultUtil.error("服装不存在");
        }
        if(clothingOut.getNumber().compareTo(c.getNumber()) > 0) {
            return ResultUtil.error("服装库存不足");
        }
        clothingOut.setTitle(c.getTitle());
        clothingOut.setContent(c.getContent());
        clothingOut.setTime(DateUtil.now());
        User currUser = securityUtil.getCurrUser();
        clothingOut.setWorkUser(currUser.getNickname());
        clothingOut.setWorkMobile(currUser.getMobile());
        iClothingOutService.saveOrUpdate(clothingOut);
        c.setNumber(c.getNumber().subtract(clothingOut.getNumber()));
        iClothingService.saveOrUpdate(c);
        return new ResultUtil<ClothingOut>().setData(clothingOut);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    六、免责说明

    • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
    • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
    • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

    下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

    1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
    2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
    3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
    4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。
  • 相关阅读:
    2022最火的Linux性能分析工具--perf
    《逆向工程核心原理》学习笔记(四):API钩取
    数风流人物还看今朝|前后端分离微服务项目常用中间件以及指令
    Java基于SpringBoot的4s店车辆管理系统
    创建servlet,完成信息获取
    961题库 北航计算机 计算机网络 附答案 简答题形式
    【Linux】基础IO —— 上
    Django中的ajax细节
    2021 LGR 非专业级别软件能力认证第一轮 (SCP) C++语言模拟试题(洛谷)
    数字媒体概论——声音
  • 原文地址:https://blog.csdn.net/as230627/article/details/134460302