基于springboot的“药品阁“集中采购平台的设计与实现代码讲解文档
·
0163基于springboot的"药品阁"集中采购平台的设计与实现

一、项目概述
1.1 项目背景
"药品阁"集中采购平台是一个基于SpringBoot框架开发的药品采购管理系统,旨在实现药品的集中采购、库存管理、供应商管理等核心业务功能。该系统为药品采购流程提供了数字化解决方案,支持多角色协作(管理员、采购员、客户),实现药品信息管理、采购申请、入库记录、调拨记录、药品盘点等全流程管理。
1.2 项目功能模块
- 药品信息管理:药品的增删改查、分类管理、库存监控
- 采购申请管理:采购员提交采购申请,管理员审核
- 入库记录管理:药品入库登记、批次管理、有效期跟踪
- 调拨记录管理:药品仓库间调拨、调拨单号生成
- 药品盘点管理:库存盘点、盘盈盘亏记录
- 供应商管理:供应商信息维护、供应产品关联
- 订单管理:客户下单、订单支付、物流跟踪
- 购物车管理:药品选购、数量管理
- 收藏功能:药品收藏、推荐算法
- 公告栏管理:系统公告发布与分类
- 用户管理:多角色用户(管理员、采购员、客户)
1.3 技术特点
- 采用协同算法实现个性化推荐
- 支持数据脱敏处理
- 实现智能排序功能
- 支持统计报表功能(按值统计、分组统计)
二、技术架构
2.1 技术栈
| 技术组件 | 版本 | 说明 |
|---|---|---|
| Spring Boot | 2.2.2.RELEASE | 核心框架 |
| MyBatis Plus | 2.3 / 1.0.5 | ORM框架 |
| MySQL | 5.7.31 | 数据库 |
| Apache Shiro | 1.3.2 | 安全框架 |
| FastJSON | 1.2.8 | JSON处理 |
| Hutool | 4.0.12 | Java工具库 |
| Apache POI | 3.11 | Excel处理 |
| 百度AI SDK | 4.4.1 | AI能力集成 |
| WebSocket | - | 实时通信 |
2.2 项目结构
springbootb0o82853/
|-- db/ # 数据库脚本
| |-- springbootb0o82853.sql
|-- src/
| |-- main/
| | |-- java/com/
| | | |-- annotation/ # 自定义注解
| | | |-- config/ # 配置类
| | | |-- controller/ # 控制器层
| | | |-- dao/ # 数据访问层
| | | |-- entity/ # 实体类
| | | |-- service/ # 服务层
| | | |-- interceptor/ # 拦截器
| | | |-- handler/ # 异常处理
| | | |-- utils/ # 工具类
| | |-- resources/
| | |-- mapper/ # MyBatis映射文件
| | |-- static/ # 静态资源
| | |-- application.yml # 配置文件
|-- pom.xml # Maven配置
2.3 配置文件分析
server:
port: 8080
servlet:
context-path: /springbootb0o82853
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springbootb0o82853
username: root
password: 123456
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
typeAliasesPackage: com.entity
global-config:
id-type: 1 # 主键自增
field-strategy: 1 # 非NULL判断
db-column-underline: true # 驼峰转换
三、核心功能模块讲解
3.1 Controller层分析
3.1.1 药品信息控制器 (YaopinxinxiController)
核心接口功能:
/page- 后台分页列表(支持价格区间筛选)/list- 前台分页列表(无需登录)/info/{id}- 后台详情(自动增加点击次数)/detail/{id}- 前台详情(无需登录)/save- 后台新增药品/update- 更新药品信息/delete- 批量删除药品/autoSort- 智能排序(按点击次数)/autoSort2- 协同算法推荐(按购买历史)
关键代码 - 协同推荐算法:
系统采用协同过滤算法,基于用户的历史购买记录,推荐相同分类的药品。先获取用户购买历史,去重处理后根据购买药品的分类进行同类推荐。
3.1.2 采购申请控制器 (CaigoushenqingController)
核心功能:采购员提交采购申请,管理员审核
- 支持审核流程(sfsh字段:待审核/是/否)
- 审核回复功能(shhf字段)
3.1.3 订单控制器 (OrdersController)
核心功能:
- 订单创建与管理
- 支持多种支付类型
- 订单状态管理(已支付/已完成)
- 物流信息跟踪
- 退货申请处理
3.2 Service层分析
服务接口定义:
queryPage()- 分页查询selectListVO/selectVO()- VO查询selectListView/selectView()- View查询selectValue()- 按值统计selectTimeStatValue()- 时间统计selectGroup()- 分组统计
3.3 Dao层分析
数据访问接口继承BaseMapper,由MyBatis-Plus提供基础CRUD操作,同时定义自定义查询方法用于复杂查询和统计功能。
四、数据库设计分析
4.1 数据库概述
- 数据库名:springbootb0o82853
- 字符集:utf8mb4
- 存储引擎:InnoDB
4.2 核心数据表
| 表名 | 说明 | 主要字段 |
|---|---|---|
| yaopinxinxi | 药品信息 | id, yaopinmingcheng, yaopinfenlei, guige, pici, youxiaoqizhi, price, alllimittimes |
| yaopinfenlei | 药品分类 | id, yaopinfenlei, image |
| caigoushenqing | 采购申请 | id, yaopinmingcheng, shenqingshuliang, yuangonggonghao, sfsh, shhf |
| rukujilu | 入库记录 | id, yaopinmingcheng, pici, youxiaoqizhi, gongyingshang, alllimittimes |
| diaobojilu | 调拨记录 | id, diaobodanhao, yaopinmingcheng, diaochucangku, diaorucangku |
| yaopinpandian | 药品盘点 | id, yaopinmingcheng, alllimittimes, pandianshuliang, pandianqingkuang |
| orders | 订单 | id, orderid, userid, goodid, buynumber, price, total, status |
| cart | 购物车 | id, userid, goodid, buynumber, price |
| kehu | 客户 | id, kehuzhanghao, mima, kehuxingming, money |
| caigouyuan | 采购员 | id, yuangonggonghao, mima, yuangongxingming |
| gongyingshang | 供应商 | id, gongyingshang, dizhi, lianxidianhua, fuzeren |
4.3 表关系设计
- yaopinxinxi 外键关联 yaopinfenlei(药品分类)
- orders 关联 yaopinxinxi(商品)和 kehu/caigouyuan(用户)
- cart 外键关联 yaopinxinxi(商品)
- storeup 关联 yaopinxinxi(商品)和用户表
五、关键代码解析
5.1 Entity实体类设计
使用@TableName注解映射表名,@TableId注解指定主键自增,@JsonFormat和@DateTimeFormat注解处理日期格式化。
5.2 分页查询实现
使用EntityWrapper构建查询条件,支持价格区间筛选,MPUtil工具类处理排序和条件组合,最后使用DeSensUtil进行数据脱敏。
5.3 统计功能实现
支持按值统计、时间维度统计、分组统计三种模式,统计结果可缓存为JSON文件提高响应效率。
5.4 权限注解设计
- @IgnoreAuth注解:无需登录验证的公开接口
- 其他接口从Session获取用户信息进行权限验证
5.5 响应封装类R
统一使用R类封装API响应,包含code状态码、msg消息、data数据等字段。
六、系统亮点总结
6.1 技术亮点
- MyBatis-Plus集成简化CRUD操作
- 协同推荐算法实现个性化推荐
- 数据脱敏保护敏感数据
- 多维度统计报表功能
- 统计结果缓存机制
6.2 业务亮点
- 多角色支持(管理员、采购员、客户)
- 完整采购流程(申请->审核->入库->盘点->调拨)
- 批次管理和有效期跟踪
- 订单全流程管理
6.3 代码规范
- Controller-Service-Dao-Entity四层架构
- 自定义注解权限控制
- 统一API响应封装
- 规范的命名和代码风格
七、答辩常见问题
Q1:系统如何实现药品推荐的?
答:采用协同过滤算法,基于用户历史购买记录,推荐相同分类的药品。
Q2:采购流程是如何实现的?
答:采购员提交采购申请,管理员审核后药品入库,库存自动更新,支持盘点和调拨。
Q3:如何保证数据安全?
答:Apache Shiro权限控制,Token会话管理,数据脱敏,密码MD5加密。
Q4:MyBatis-Plus的优势?
答:自动CRUD、条件构造器、分页插件、代码生成器等功能简化开发。
更多推荐

所有评论(0)