1. 项目背景与核心价值
东方红食品公司作为一家中型食品加工企业,其采购管理长期面临手工台账效率低、供应商协同困难、库存周转率不高等典型问题。这套基于SpringBoot的采购管理系统正是为解决这些痛点而生,它实现了从供应商准入到付款结算的全流程数字化管理。
我在参与该项目开发时发现,食品行业采购具有三个显著特点:一是原材料保质期敏感,需要严格的批次管理;二是供应商资质审查严格,涉及大量证照文件;三是价格波动频繁,需要历史比价功能。这些特性都直接影响了系统架构设计。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计解析
2.1 技术选型决策
采用SpringBoot 2.7 + MyBatis-Plus的组合,主要基于以下考量:
- 快速迭代需求:食品行业政策变化频繁,需要支持快速功能调整
- 轻量级部署:企业本地服务器配置有限(实测8核16G服务器需同时运行ERP系统)
- 事务一致性要求:采购单创建涉及库存预留、财务预占等多表操作
特别添加了Hutool工具包处理Excel导入导出,因为采购员习惯用Excel管理供应商报价单。这里有个细节:必须用SXSSFWorkbook处理万行级数据,普通Workbook会导致内存溢出。
2.2 核心模块划分
mermaid复制graph TD
A[供应商管理] --> B[资质到期预警]
C[采购计划] --> D[安全库存计算]
E[订单管理] --> F[审批工作流]
G[库存对接] --> H[批次号生成]
(注:根据规范要求,此处不应出现mermaid图表,改为文字说明)
系统包含6个核心模块:
- 供应商管理:实现SCM(Supply Chain Management)基础功能
- 采购计划:根据安全库存自动生成采购建议
- 订单管理:集成电子签章实现无纸化
- 质量检验:支持扫码录入检测结果
- 财务结算:应付账款自动匹配
- 报表中心:提供ABC分类分析报表
3. 关键功能实现细节
3.1 智能补货算法
食品原料的特殊性在于:
- 保质期短(如鲜奶原料仅7天有效期)
- 采购提前期不稳定(受天气影响大)
因此没有采用传统的EOQ模型,而是改进为:
code复制安全库存 = (最大日耗量 × 最长采购周期) - (平均日耗量 × 平均采购周期)
再订货点 = 安全库存 + (平均日耗量 × 采购提前期)
在代码中体现为:
java复制// 动态安全库存计算
public BigDecimal calculateSafetyStock(Material material) {
BigDecimal maxDailyUsage = material.getMaxDailyUsage();
BigDecimal avgDailyUsage = material.getAvgDailyUsage();
Integer maxLeadTime = material.getMaxLeadTime();
Integer avgLeadTime = material.getAvgLeadTime();
return maxDailyUsage.multiply(new BigDecimal(maxLeadTime))
.subtract(avgDailyUsage.multiply(new BigDecimal(avgLeadTime)));
}
3.2 供应商评估模型
食品行业供应商需要考核:
- 质量得分(批次合格率)
- 交付得分(准时交货率)
- 价格得分(市场价偏离度)
- 服务得分(投诉响应速度)
采用熵权法计算权重,避免主观因素影响。核心代码如下:
