1. 项目概述
企业采购管理系统是现代企业数字化转型中的重要一环。这个基于SpringBoot+Vue的全栈项目,实现了从采购申请、审批、订单管理到供应商评估的完整业务流程闭环。我在实际开发中发现,这类系统最核心的价值在于将传统线下采购流程标准化、透明化,同时通过数据分析降低企业采购成本。
系统采用前后端分离架构,后端使用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 ) ENGINE=InnoDB;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 Map<PurchaseStatus, List<PurchaseStatus>> 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 :data="suppliers"> <el-table-column prop="name" label="供应商"/> <el-table-column label="综合评分"> <template #default="{row}"> <el-rate v-model="row.totalScore" disabled/> </template> </el-table-column> </el-table> </template>4. 系统部署方案
4.1 开发环境配置
后端依赖安装:
mvn clean install -DskipTests前端依赖安装:
npm install --registry=https://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:80"5. 常见问题排查
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实际开发中我发现,采购系统的审批流程配置最好采用可视化设计器,这样业务人员可以自行调整流程而不需要修改代码。另外,供应商评估的指标权重应该支持动态配置,不同品类的采购可以设置不同的评估标准。