1. 项目背景与需求分析
学校食堂采购系统是校园后勤管理数字化转型的关键环节。我去年为某高校开发的这套系统,从立项到上线历时4个月,期间踩过不少坑,也积累了不少实战经验。
传统食堂采购通常采用Excel表格记录、微信/电话沟通的方式,存在三大痛点:
- 采购数据分散在多个文件中,难以统一管理和分析
- 供应商报价和比价过程不透明
- 库存、采购、财务三个环节数据脱节
我们调研了该校的实际需求后发现:
- 日均食材采购种类超过200种
- 有6家固定供应商和20余家备用供应商
- 需要支持移动端审批和紧急采购流程
- 财务部门要求与现有ERP系统对接
关键经验:需求调研阶段一定要实地观察食堂管理员的工作流程。我们发现他们实际使用的Excel模板中有很多隐藏的业务规则,这些在正式需求文档中往往被忽略。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与架构设计
2.1 技术栈选择
基于项目特点和团队技术储备,我们最终确定的技术方案:
- 前端:Vue3 + Element Plus(考虑管理员年龄层,需要操作简单的界面)
- 后端:Spring Boot 2.7(需要快速对接学校原有Java系统)
- 数据库:MySQL 8.0(关系型数据更适合采购业务)
- 中间件:RabbitMQ(用于处理异步审批流程)
- 基础设施:Docker + Kubernetes(学校信息中心要求的部署方式)
2.2 核心架构设计
系统采用微服务架构,拆分为四个核心服务:
- 采购服务:处理采购单生命周期管理
- 供应商服务:管理供应商资质和报价
- 库存服务:实时同步库存数据
- 报表服务:生成各类分析报表
mermaid复制graph TD
A[前端] --> B[API Gateway]
B --> C[采购服务]
B --> D[供应商服务]
B --> E[库存服务]
B --> F[报表服务]
C --> G[MySQL]
D --> G
E --> G
F --> G
避坑提示:最初我们考虑使用MongoDB存储非结构化报价数据,但后来发现财务对数据一致性要求极高,最终还是选择了关系型数据库。这种关键决策一定要提前与所有相关部门确认。
3. 核心功能开发要点
3.1 智能比价算法实现
采购系统的核心价值在于比价功能。我们开发的算法考虑以下维度:
- 供应商历史履约评分(30%权重)
- 当前报价(40%权重)
- 物流时效(20%权重)
- 最小起订量(10%权重)
算法核心代码片段(Java):
java复制public Supplier selectBestOffer(List<Offer> offers) {
return offers.stream()
.map(o -> {
double score = o.getSupplier().getCreditScore() * 0.3
+ (1 - normalizePrice(o.getPrice())) * 0.4
+ o.getDeliverySpeed() * 0.2
- o.getMinOrder() * 0.1;
return new ScoredOffer(o, score);
})
.max(Comparator.comparingDouble(ScoredOffer::getScore))
.map(ScoredOffer::getOffer)
.map(Offer::getSupplier)
.orElseThrow();
}
3.2 移动端审批流程
采用工作流引擎实现多级审批:
- 食堂主任初审
- 后勤处长复审
- 超过5万元需要分管校长审批
- 紧急采购可启动绿色通道
审批状态机设计:
java复制public enum ApprovalState {
DRAFT,
PENDING_LEVEL1,
PENDING_LEVEL2,
PENDING_LEVEL3,
APPROVED,
REJECTED,
CANCELLED
}
4. 测试与上线实战经验
4.1 压力测试发现的问题
在模拟200并发用户测试时暴露的问题:
- 比价算法响应时间超过5秒
- 优化方案:增加Redis缓存供应商评分
- 数据库连接池耗尽
- 优化方案:调整HikariCP配置
- 审批通知丢失
- 优化方案:引入消息重试机制
4.2 灰度发布策略
采用分食堂逐步上线的方式:
- 第一周:教职工食堂单点试用
- 第二周:加入3个学生食堂
- 第三周:全校推广
血泪教训:一定要提前准备数据迁移脚本。我们低估了历史数据的清洗工作量,导致上线首日部分食堂无法看到过往采购记录。
5. 系统优化与效果评估
上线三个月后的关键指标改善:
- 采购审批时间缩短65%(从平均3天到1天)
- 食材采购成本降低12%
- 供应商投诉减少40%
- 财务对账时间从每周2天缩短到半天
后续优化方向:
- 引入AI预测采购量
- 对接农产品直供平台API
- 开发供应商信用区块链存证
这个项目给我的最大启示是:看似简单的业务系统,背后往往隐藏着复杂的业务规则。开发过程中必须保持与一线用户的密切沟通,才能真正做出有价值的系统。
