当前位置: 首页 > backend >正文

基于SpringBoot+Vue的酒类仓储管理系统

文档包含用例图、系统架构图、系统功能结构图、实体属性图、总体e-r图。

一.系统开发工具与环境搭建

1.系统设计开发工具

后端

使用Java编程语言的Spring boot框架

项目架构:B/S架构

运行环境:win10/win11、jdk17


前端:

技术:框架Vue.js;UI库:ElementUI;

开发工具:Visual Studio Code;


后端:

技术:Java语言、mybatis plus、Spring boot框架;

开发工具:IDEA 2023.3.3版本;


数据库:

数据库:mysql5.7/8.0

数据库工具:Navicat12版本;


二.系统实现(部分截图)

2.1 仓库人员功能实现

2.1.1 登录功能实现

仓库人员,通过输入账号、密码,选择对应的仓库管理员角色,输入图形验证码进行登录。前端将仓库人员输入的参数信息传递给后端接口/User/SignIn,执行登录方法,检查用户的信息是否存在于用户表,不存在,则提示仓库人员检查输入的信息是否正确。校验通过后,登录系统,进行操作系统。登录界面如图5-1所示。

关键代码:

List<AppUser> items=_AppUserMpper.selectList(queryWrapper);

if(items.stream().count()==0)

{ throw  new CustomException("请检查登录的账号或者密码,角色是否都正确!");}

Map<String, String> map = new HashMap<>();

map.put(SysConst.UserIdClaim,items.get(0).getId().toString());

map.put(SysConst.RoleTypeClaim,items.get(0).getRoleType().toString());

String token=JWTUtils.getToken(map);

return token;

2.1.2 商品资料管理功能实现

仓库商品资料管理,作为仓库管理人员,可以为仓库新增商品信息。包含商品、SKU、条码、品牌等信息,调用/Cargo/CreateOrEdit进行新增商品信息。当仓库商品有所变动时,可以进行修改,选择商品进行修改,调用/Cargo/Get获取商品的原始信息,修改后,调用/Cargo/CreateOrEdit接口进行修改。删除商品,有这个权限,但是最好不要删除商品信息。商品资料管理界面如图5-2所示。

关键代码:

//声明一个商品资料实体

Cargo Cargo = new Cargo();

//把前端传入的input参数拷贝到商品资料实体

BeanUtils.copyProperties(Cargo,input);

//调用数据库的增加或者修改方法

saveOrUpdate(Cargo);

//定义一个返回给前端的商品资料传输模型

CargoDto CargoDto=new CargoDto();

//同理把操作的商品资料实体拷贝给商品资料传输模型

BeanUtils.copyProperties(CargoDto,Cargo);

//把传输模型返回给前端

return CargoDto;

2.1.3 库区管理功能实现

仓库人员可以根据仓库的具体情况,进行设置库区,包含库区名称、库区编码。当发生酒类商品出入库操作时,系统通过业务逻辑层自动关联库区数据,系统实时更新该库区的库存数量字段。为库区设置库位信息,将当前库区Id传递给/WarehouseBin/CreateOrEdit接口,为库区新增库位信息。库区管理界面如图5-3所示。

关键代码:

if(input.getId()==null)

 {

     return new WarehouseAreaDto();

 }

 PagedResult<WarehouseAreaDto>  pagedResult =List(input);

 return pagedResult.getTotalCount()>0?pagedResult.getItems().stream().findFirst().get():new WarehouseAreaDto();

2.2超级管理员功能实现

2.2.1 数据图形化分析功能实现

超级管理员可以通过选择不同仓库,通过折线图查看每个仓库的最近7天出入库存数,最近7天出入订单数。环形图展示最近30天仓库出入库统计分析,展示该仓库的待补商品Top10,商品保质期预警Top10。数据图形化分析界面如图5-4所示。

关键代码:

 Map<String, Object> data = new HashMap<>();

data.put("name", "入库");

data.put("value", Math.abs(sum));

dataList.add(data);

//统计数量小于0的记录并且求和

double sum1 = inventoryRecords.stream().filter(x -> x.getQty() < 0).mapToDouble(x -> x.getQty()).sum();

Map<String, Object> data1 = new HashMap<>();

data1.put("name", "出库");

data1.put("value", Math.abs(sum1));

dataList.add(data1);

2.2.2 货主管理功能实现

超级管理员可以维护所有仓库的货主信息,为所有仓添加货主信息,填写货主名称、货主编码、货主电话、货主公司地址信息,调用/Customer/CreateOrEdit接口新增。当货主信息有所更改时,修改货主信息。当不再合作,可以删除货主信息。货主管理界面如图5-5所示。

关键代码:

//把Customer实体转换成Customer传输模型

List<CustomerDto> items= Extension.copyBeanList(pageRecords.getRecords(),CustomerDto.class);

for (CustomerDto item : items) {

  //查询出关联的创建用户信息

    AppUserDto  CreatorAppUserDTO=new AppUserDto();

    AppUser  CreatorAppUserEntity= _AppUserMapper.selectOne(Wrappers.<AppUser>lambdaQuery().eq(AppUser::getId,item.getCreatorId()));

   if(CreatorAppUserEntity!=null) {

        BeanUtils.copyProperties(CreatorAppUserDTO, CreatorAppUserEntity);

        item.setCreatorAppUserDto(CreatorAppUserDTO);

    }  

}

//返回一个分页结构给前端

return PagedResult.GetInstance(items,totalCount);

2.2.3 库存预警功能实现

超级管理员登录系统后,库存预警模块。可对每一款商品单独设置库存预警。点击具体商品的编辑选项,超级管理输入商品的下限预警值,调用/EarlyWarning/CreateOrEdit接设置库存预警。此数值代表商品库存数量达到该值时,系统将触发预警。库存预警界面如图5-6所示。

关键代码:

//声明一个库存预警实体

EarlyWarning EarlyWarning = new EarlyWarning();

//把前端传入的input参数拷贝到库存预警实体

BeanUtils.copyProperties(EarlyWarning, input);

//调用数据库的增加或者修改方法

saveOrUpdate(EarlyWarning);

//定义一个返回给前端的库存预警传输模型

EarlyWarningDto EarlyWarningDto = new EarlyWarningDto();

//同理把操作的库存预警实体拷贝给库存预警传输模型

BeanUtils.copyProperties(EarlyWarningDto, EarlyWarning);

//把传输模型返回给前端

return EarlyWarningDto;

http://www.xdnf.cn/news/14841.html

相关文章:

  • Java 核心技术与框架实战十八问
  • 从0开始学习R语言--Day37--CMH检验
  • 如何将信息从 iPhone 同步到Mac(完整步骤和示意图)
  • Mac电脑 触摸板增强工具 BetterTouchTool
  • NumPy 安装使用教程
  • Qt的前端和后端过于耦合(0/7)
  • Apache POI 详解 - Java 操作 Excel/Word/PPT
  • 【网工|知识升华版|实验】5 网络质量探测
  • 【大模型学习】项目练习:文档对话助手
  • Linux开发工具——gcc/g++
  • MacOS 安装brew 国内源【超简洁步骤】
  • SpringBoot 自动配置原理
  • 优雅草蜻蜓T语音会议系统私有化部署方案与RTC技术深度解析-优雅草卓伊凡|clam
  • 金融安全生命线:用AWS EventBridge和CloudTrail构建主动式入侵检测系统
  • 跨平台开发的抉择:Flutter vs 原生安卓(Kotlin)的优劣对比与选型建议​​
  • 第五章 局域网基础
  • 网络编程学习路线
  • AI时代API挑战加剧,API安全厂商F5护航企业数字未来
  • AJAX 安装使用教程
  • 从定位到变现:创客匠人创始人IP打造的底层逻辑与实践路径
  • RediSearch 字段类型与配置选项
  • 当工业设备开始“独立思考“——AI边缘计算网关的泛在化应用
  • 分布式事务理论基础及常见解决方案
  • Linux基本命令篇 —— alias命令
  • Vue 安装使用教程
  • 【格与代数系统】格与哈斯图
  • 【1.6 漫画数据库设计实战 - 从零开始设计高性能数据库】
  • Docker进阶命令与参数——AI教你学Docker
  • 【Python基础】11 Python深度学习生态系统全景解析:从基础框架到专业应用的技术深度剖析(超长版,附多个代码及结果)
  • [Python 基础课程]字符串