spring boot基于Java的药店管理系统介绍
本系统《springboot基于Java的药店管理系统》以大数据处理为核心,后端采用Spring Boot整合MyBatis完成业务逻辑,前端由Vue与ElementUI构建交互界面,并通过Echarts实时可视化分析结果;数据层以MySQL持久化药品、用户、订单信息,同时借助Hadoop的HDFS完成海量处方与销售记录的分布式存储,使用Spark及Spark SQL对药品销量、库存周转、用户购买路径进行批量与交互式计算,结合Pandas和NumPy在Python环境中进行补充的数据清洗与特征构建,最终把计算结果回流至Spring Boot接口,驱动首页仪表盘、药品分类、药品信息、用药指南、购物车、轮播图及公告咨询等模块的动态展示,支持用户在前端完成注册登录、个人信息维护、下单支付、取消退款、查看已发货与已完成订单的全流程,后台则提供用户、药品、订单、轮播图、系统简介、反馈中心等管理功能,实现从大数据采集、存储、分析到可视化闭环,为药店提供精准库存预警、热销药品推荐及订单状态实时追踪的完整信息化方案。
spring boot基于Java的药店管理系统演示视频
spring boot基于Java的药店管理系统演示图片
spring boot基于Java的药店管理系统代码展示
// 1. 药品销量实时大屏:Spark SQL 计算近 7 日销量并写入 MySQL 结果表
Dataset<Row> salesDs = spark.read()
.option("header", "true")
.csv("hdfs://namenode:9000/pharmacy/sales/*.csv")
.filter(col("sale_date").between(
LocalDate.now().minusDays(7).toString(),
LocalDate.now().toString()))
.groupBy("drug_id")
.agg(sum("quantity").alias("total"))
.join(spark.read().jdbc(DB_URL, "drug_info", props), "drug_id")
.select("drug_id", "drug_name", "total")
.orderBy(desc("total"))
.limit(50);
salesDs.write()
.mode("overwrite")
.jdbc(DB_URL, "dashboard_sales", props);
// 2. 购物车结算:生成订单并扣减库存的 Service 方法核心片段
@Transactional
public Order createOrder(Long userId, List<CartItemDTO> items) {
BigDecimal amount = items.stream()
.map(i -> i.getPrice().multiply(BigDecimal.valueOf(i.getQuantity())))
.reduce(BigDecimal.ZERO, BigDecimal::add);
Order order = new Order();
order.setUserId(userId);
order.setAmount(amount);
order.setStatus("UNPAID");
orderMapper.insert(order);
items.forEach(i -> {
OrderItem oi = new OrderItem();
oi.setOrderId(order.getId());
oi.setDrugId(i.getDrugId());
oi.setQuantity(i.getQuantity());
oi.setPrice(i.getPrice());
orderItemMapper.insert(oi);
drugMapper.updateStock(i.getDrugId(), -i.getQuantity());
});
return order;
}
// 3. 药品信息分页+模糊查询:Service 层实现
public Page<DrugInfo> listDrugPage(String keyword, Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<DrugInfo> list = drugMapper.selectByKeyword(keyword == null ? "" : keyword.trim());
return new Page<>(list);
}
// Mapper XML 片段:模糊查询 + 分类联表
<select id="selectByKeyword" resultType="com.pharmacy.entity.DrugInfo">
SELECT d.id, d.name, d.price, d.stock, c.name AS categoryName
FROM drug_info d
LEFT JOIN drug_category c ON d.category_id = c.id
WHERE d.name LIKE CONCAT('%', #{keyword}, '%')
OR c.name LIKE CONCAT('%', #{keyword}, '%')
ORDER BY d.id DESC
</select>