# 食堂食材采购与成本管理系统 **Repository Path**: fire-wall/canteen-takeOut ## Basic Information - **Project Name**: 食堂食材采购与成本管理系统 - **Description**: 湖北师范大学专升本第二次实训项目食堂食材采购与成本管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-06-22 - **Last Updated**: 2026-07-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 食堂食材采购与成本管理系统 食堂食材采购与成本管理系统是一套面向食堂业务场景的前后端分离管理系统,覆盖菜单、原料、供应商、询价、定价、采购申请、采购审批、采购验收、食材领用、成本监测、消息通知和系统用户管理等业务流程。 项目采用 Spring Boot 3 + MyBatis-Plus 构建后端服务,Vue 3 + Vite + Element Plus 构建前端页面,并通过 JWT、角色权限控制和 WebSocket 实时消息完成核心业务协作。 ## 技术栈 ### 后端 - Java 17 - Spring Boot 3.2.0 - Spring Security - MyBatis-Plus - MySQL - Redis - WebSocket - Knife4j / OpenAPI - EasyExcel ### 前端 - Vue 3 - Vite 5 - Vue Router - Pinia - Element Plus - Axios - ECharts ## 项目结构 ```text canteen ├── canteen-server # 后端 Spring Boot 服务 │ ├── src/main/java # Java 源码 │ └── src/main/resources # 配置、SQL、Mapper XML ├── canteen-web # 前端 Vue 3 项目 │ ├── src/api # 接口封装 │ ├── src/components # 通用组件 │ ├── src/layout # PC 端与移动端布局 │ ├── src/router # 路由配置 │ ├── src/stores # Pinia 状态管理 │ └── src/views # 页面模块 ├── docs # 项目文档 ├── start.bat # Windows 一键启动脚本 └── README.md ``` ## 功能模块 - 登录认证:登录、退出登录、JWT 鉴权、登录用户信息获取。 - 权限控制:支持 ADMIN、CHEF、PRICING、FINANCE 等角色的菜单、路由和接口权限控制。 - 数据看板:展示采购、成本、库存、供应商等统计信息,支持近 7 天成本趋势。 - 菜单管理:菜单目录、菜品信息、菜品主料、每周菜单、包厢菜单、菜品图片展示和 AI 图片生成。 - 原料目录:原料分类、原料条目、库存、规格、单位、均价、导入、导出和模板下载。 - 供应商管理:供应商维护、供应商报价、报价导入、供应商评价和统计汇总。 - 市场询价:记录市场价格,为定价和价格比较提供数据来源。 - 价格与定价:价格比较、定价表、定价确认、历史查询、价格公示和导出。 - 采购管理:采购申请、预览、提交审批、审批通过/拒绝、采购统计和待验收查询。 - 采购验收:采购验收记录、收货单查看、待验收明细和供应商评价入口。 - 食材领用:领用申请、领用详情、按菜单获取所需原料、管理员确认出库和领用统计。 - 成本监测:每日成本、自动生成成本、异常成本标记、成本复核、趋势查询和导出。 - 消息通知:站内消息、未读数量、已读处理、WebSocket 实时推送、消息搜索和单据详情跳转。 - 移动端能力:厨师移动端布局、底部导航、采购/领用入口、消息抽屉和未读角标。 - 系统管理:用户列表、新增、编辑、删除和密码重置。 更完整的功能清单可查看 [docs/completed-features.md](docs/completed-features.md)。 ## 环境要求 - JDK 17+ - Maven 3.8+ - Node.js 18+ - MySQL 8.x - Redis ## 数据库配置 默认数据库连接配置位于 `canteen-server/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/canteen_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456 ``` 如本地数据库用户名、密码或端口不同,请先修改该配置。 初始化数据库: 1. 创建数据库 `canteen_db`。 2. 执行 `canteen-server/src/main/resources/schema.sql` 初始化表结构。 3. 如需测试数据,继续执行 `canteen-server/src/main/resources/test_data.sql`。 ## 快速启动 ### 方式一:使用启动脚本 Windows 环境可在项目根目录执行: ```bat start.bat ``` 脚本支持启动、重启、停止后端和前端服务。默认端口: - 后端:`http://localhost:8080` - 前端:`http://localhost:5173` ### 方式二:手动启动后端 ```bash cd canteen-server mvn spring-boot:run ``` 后端服务默认运行在: ```text http://localhost:8080 ``` ### 方式三:手动启动前端 ```bash cd canteen-web npm install npm run dev ``` 前端服务启动后,终端会输出实际访问地址。启动脚本按 `http://localhost:5173` 管理前端端口。 ## 常用命令 ### 后端 ```bash cd canteen-server mvn test mvn spring-boot:run mvn clean package ``` ### 前端 ```bash cd canteen-web npm install npm run dev npm run build npm run preview ``` ## API 与通信 - 后端 REST API 默认前缀由各 Controller 定义。 - 前端请求封装位于 `canteen-web/src/utils/request.js`。 - WebSocket 客户端封装位于 `canteen-web/src/utils/websocket.js`。 - 消息通知支持采购审批、领用确认等业务场景的实时推送。 ## 权限说明 系统主要角色如下: - `ADMIN`:系统管理员,可访问审批、验收、供应商、成本、系统管理等核心模块。 - `CHEF`:厨师角色,主要使用菜单查看、采购申请、食材领用和移动端功能。 - `PRICING`:定价角色,主要维护供应商报价、市场询价和定价相关数据。 - `FINANCE`:财务角色,主要查看供应商评价、采购统计和成本监测相关数据。 前端路由权限配置位于 `canteen-web/src/router/index.js`,后端接口权限通过角色注解和鉴权逻辑控制。 ## 文档 - [已完成功能清单](docs/completed-features.md) ## 注意事项 - Redis 需要在后端启动前可用,否则与缓存或消息相关能力可能异常。 - 删除类操作已统一接入确认和全局错误提示,请避免在页面中重复弹出错误信息。 - WebSocket 会在登录后建立连接,并在退出登录前断开,避免无效重连。 - 菜品和原料图片支持自动生成与兜底展示,图片生成失败不应阻塞业务保存。