SpringBoot+Vue构建学校物资采购系统实战

SpringBoot+Vue构建学校物资采购系统实战

1. 项目背景与核心需求

学校物资采购系统是教育机构日常运营中不可或缺的管理工具。传统的手工记账或Excel管理方式在采购规模扩大后暴露出诸多问题:审批流程不透明、库存数据滞后、供应商管理混乱等。我们团队近期完成的这套基于SpringBoot+Vue的系统,正是为了解决这些痛点而生。

这个系统最核心的价值在于实现了采购全流程的数字化管理。从需求提报、审批流转、供应商比价到入库登记、领用发放,所有环节都在线上完成。某中学使用后反馈,采购周期从原来的平均15天缩短到7天,库存准确率提升至99.3%。

2. 技术架构设计

2.1 后端技术选型

SpringBoot 2.7.4作为后端框架是经过多重考量后的选择:

  • 内嵌Tomcat简化部署
  • 自动配置减少XML配置
  • 丰富的Starter依赖(特别是Spring Security和MyBatis-Plus)
  • Actuator提供的完善监控端点

数据库选用MySQL 8.0,主要考虑到:

  • 学校IT部门现有运维能力
  • 事务完整性要求
  • JSON字段对动态扩展属性的支持

2.2 前端技术栈

Vue 3.2作为前端框架具有明显优势:

  • Composition API更适合复杂业务逻辑
  • 更小的打包体积(相比Vue 2减少40%)
  • 更好的TypeScript支持

配合使用的关键技术:

  • Element Plus组件库(表格、表单等)
  • Axios处理HTTP请求
  • Vue Router管理路由
  • Pinia状态管理(替代Vuex)

3. 核心功能实现

3.1 采购审批工作流

采用Activiti 7实现的可配置审批流:

// 审批流程定义示例 @Workflow public class PurchaseApprovalProcess { @StartEvent public void startProcess(PurchaseRequest request) { // 初始化流程变量 } @UserTask(assignee = "#{request.departmentHead}") public void departmentApproval() { // 部门审批逻辑 } @ServiceTask public void financialReview() { // 财务审核 } }

3.2 供应商智能推荐

基于历史采购数据的推荐算法:

  1. 计算供应商的准时交付率
  2. 分析商品质量合格率
  3. 综合价格因素加权评分
  4. 使用Elasticsearch实现快速检索

3.3 库存预警机制

多维度库存监控策略:

  • 安全库存阈值预警
  • 保质期提前预警(针对易耗品)
  • 季节性使用预测(如开学季文具需求)

4. 前后端交互设计

4.1 API规范

采用RESTful风格设计:

GET /api/v1/purchases?status=approved POST /api/v1/purchases PUT /api/v1/purchases/{id}

4.2 安全控制

JWT认证流程:

  1. 用户登录获取token
  2. 前端存储于localStorage
  3. 每次请求携带Authorization头
  4. 后端校验token并鉴权

Spring Security配置要点:

@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .antMatchers("/api/auth/**").permitAll() .anyRequest().authenticated() .and() .addFilter(new JwtAuthenticationFilter(authenticationManager())); } }

5. 部署与优化

5.1 生产环境部署

推荐部署方案:

  • 后端:Docker容器化部署
  • 前端:Nginx静态资源服务
  • 数据库:主从复制架构

5.2 性能优化措施

实测有效的优化手段:

  1. Vue组件懒加载
  2. SpringBoot启用GZIP压缩
  3. MyBatis二级缓存
  4. 高频接口添加Redis缓存

6. 典型问题解决方案

6.1 跨域问题处理

完整解决方案:

@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE") .allowCredentials(true) .maxAge(3600); } }

6.2 文件上传限制

SpringBoot配置调整:

# application.properties spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=20MB

7. 扩展功能建议

值得考虑的增强功能:

  1. 移动端审批(集成企业微信/钉钉)
  2. 采购数据分析看板
  3. 供应商评价体系
  4. 电子合同在线签署

实际开发中发现,采购审批的撤回功能需求比预期更频繁,建议在流程设计阶段就考虑审批链的可逆性。另外,物品分类体系最好采用国家标准编码,便于后续数据对接。