SpringBoot+Vue企业采购管理系统开发实践
1. 项目概述企业采购管理系统是现代企业数字化转型中的重要一环。这个基于SpringBootVue的全栈项目实现了从采购申请、审批、订单管理到供应商评估的完整业务流程闭环。我在实际开发中发现这类系统最核心的价值在于将传统线下采购流程标准化、透明化同时通过数据分析降低企业采购成本。系统采用前后端分离架构后端使用SpringBoot提供RESTful API前端采用Vue.js构建响应式界面。这种技术组合既能保证后端服务的稳定性又能提供流畅的用户体验。特别适合中小型企业快速部署使用也方便二次开发扩展功能。2. 技术架构解析2.1 后端技术栈SpringBoot作为后端框架主要考虑了以下因素自动配置特性大幅减少了XML配置内嵌Tomcat简化了部署流程丰富的Starter依赖可以快速集成常用组件核心模块划分采购管理Purchase供应商管理Supplier审批工作流Approval报表统计Report数据库设计要点CREATE TABLE purchase_order ( id BIGINT PRIMARY KEY, order_no VARCHAR(32) UNIQUE, applicant_id BIGINT, total_amount DECIMAL(12,2), status TINYINT COMMENT 0-草稿 1-待审批 2-已通过 3-已拒绝, create_time DATETIME ) ENGINEInnoDB;2.2 前端技术栈Vue.js选型考虑组件化开发便于功能复用响应式数据绑定简化DOM操作Vue CLI提供的脚手架工具典型页面结构src/ ├── views/ │ ├── purchase/ │ │ ├── ApplyForm.vue # 采购申请表单 │ │ ├── ApprovalList.vue # 审批列表 │ │ └── OrderDetail.vue # 订单详情 ├── api/ │ └── purchase.js # 采购相关API封装3. 核心功能实现3.1 采购审批工作流采用状态机模式实现审批流程public enum PurchaseStatus { DRAFT, PENDING_APPROVAL, APPROVED, REJECTED; private static final MapPurchaseStatus, ListPurchaseStatus transitions Map.of( DRAFT, List.of(PENDING_APPROVAL), PENDING_APPROVAL, List.of(APPROVED, REJECTED) ); public boolean canTransitionTo(PurchaseStatus newStatus) { return transitions.getOrDefault(this, List.of()) .contains(newStatus); } }审批流程实现要点使用AOP记录审批日志审批人数据权限控制审批超时自动提醒3.2 供应商评估模块评估指标权重算法综合评分 质量得分×0.4 交期得分×0.3 价格得分×0.2 服务得分×0.1实现代码片段template el-table :datasuppliers el-table-column propname label供应商/ el-table-column label综合评分 template #default{row} el-rate v-modelrow.totalScore disabled/ /template /el-table-column /el-table /template4. 系统部署方案4.1 开发环境配置后端依赖安装mvn clean install -DskipTests前端依赖安装npm install --registryhttps://registry.npmmirror.com4.2 生产环境部署推荐使用Docker Compose部署version: 3 services: mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} backend: build: ./backend ports: - 8080:8080 frontend: build: ./frontend ports: - 80:805. 常见问题排查5.1 跨域问题解决后端配置示例Configuration public class CorsConfig implements WebMvcConfigurer { Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(/**) .allowedOrigins(*) .allowedMethods(*) .maxAge(3600); } }5.2 性能优化建议数据库优化措施采购单表按年分表供应商表添加索引CREATE INDEX idx_supplier_category ON supplier(category);使用Redis缓存热门供应商数据6. 二次开发建议扩展功能方向与ERP系统集成添加移动端审批功能采购数据分析看板代码结构优化# 建议的模块划分 com. └── enterprise ├── purchase │ ├── application # 应用服务 │ ├── domain # 领域模型 │ └── infrastructure # 基础设施 └── supplier ├── application ├── domain └── infrastructure实际开发中我发现采购系统的审批流程配置最好采用可视化设计器这样业务人员可以自行调整流程而不需要修改代码。另外供应商评估的指标权重应该支持动态配置不同品类的采购可以设置不同的评估标准。