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 技术亮点

  1. MyBatis-Plus集成简化CRUD操作
  2. 协同推荐算法实现个性化推荐
  3. 数据脱敏保护敏感数据
  4. 多维度统计报表功能
  5. 统计结果缓存机制

6.2 业务亮点

  1. 多角色支持(管理员、采购员、客户)
  2. 完整采购流程(申请->审核->入库->盘点->调拨)
  3. 批次管理和有效期跟踪
  4. 订单全流程管理

6.3 代码规范

  1. Controller-Service-Dao-Entity四层架构
  2. 自定义注解权限控制
  3. 统一API响应封装
  4. 规范的命名和代码风格

七、答辩常见问题

Q1:系统如何实现药品推荐的?

答:采用协同过滤算法,基于用户历史购买记录,推荐相同分类的药品。

Q2:采购流程是如何实现的?

答:采购员提交采购申请,管理员审核后药品入库,库存自动更新,支持盘点和调拨。

Q3:如何保证数据安全?

答:Apache Shiro权限控制,Token会话管理,数据脱敏,密码MD5加密。

Q4:MyBatis-Plus的优势?

答:自动CRUD、条件构造器、分页插件、代码生成器等功能简化开发。


更多推荐