为什么他的springboot药店项目能跑Spark,而你的却卡在第一步?

98 阅读2分钟

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的药店管理系统演示图片

系统首页.png

登陆界面.png

药品分类.png

药品信息.png

用药指南.png

订单管理.png

用户管理.png

个人中心.png

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>

spring boot基于Java的药店管理系统文档展示

文档.png