一、需求背景
美团买菜作为生鲜电商平台,需要支持商品分装管理以满足以下业务需求:
1. 不同规格包装的商品销售(如整箱/散装、大包装/小包装)
2. 库存动态管理(分装后库存自动扣减)
3. 灵活的定价策略(不同包装不同价格)
4. 提升拣货效率和配送准确性
二、核心功能设计
1. 商品分装基础信息管理
- 分装规格定义:支持创建多种分装规格(如500g/袋、1kg/盒)
- 分装单位管理:定义基本单位(个、kg、L)与分装单位的换算关系
- 分装成本计算:记录分装材料成本和人工成本
2. 分装流程管理
- 分装任务创建:
- 手动创建分装任务
- 自动触发分装(当某规格库存低于阈值时)
- 分装操作记录:
- 扫码分装(通过PDA扫描商品和包装)
- 批量分装(同一商品多种规格同时分装)
- 分装损耗记录:记录分装过程中的正常损耗
3. 库存管理
- 多级库存体系:
- 原始商品库存
- 分装中库存
- 已分装成品库存
- 库存联动:
- 分装操作自动扣减原始库存
- 销售时扣减对应分装规格库存
- 库存预警:设置各规格库存上下限预警
4. 价格与促销管理
- 分装规格定价:支持不同分装规格独立定价
- 组合促销:如"买大送小"、"多件折扣"等
- 动态定价:根据库存情况自动调整价格
5. 拣货与配送支持
- 智能分单:根据订单商品分装情况优化拣货路径
- 包装建议:根据商品特性推荐最佳分装方式
- 配送标识:特殊分装商品的配送注意事项提示
三、技术实现方案
1. 数据库设计
```sql
-- 分装规格表
CREATE TABLE packaging_spec (
id BIGINT PRIMARY KEY,
product_id BIGINT NOT NULL, -- 原始商品ID
spec_name VARCHAR(50) NOT NULL, -- 规格名称(如"500g装")
unit VARCHAR(20) NOT NULL, -- 分装单位
conversion_rate DECIMAL(10,3), -- 与基本单位的换算率
base_unit VARCHAR(20), -- 基本单位
cost DECIMAL(10,2), -- 分装成本
status TINYINT DEFAULT 1 -- 状态
);
-- 分装任务表
CREATE TABLE packaging_task (
id BIGINT PRIMARY KEY,
spec_id BIGINT NOT NULL,
quantity INT NOT NULL, -- 计划分装数量
actual_quantity INT DEFAULT 0, -- 实际分装数量
operator VARCHAR(50), -- 操作人
start_time DATETIME,
end_time DATETIME,
status TINYINT DEFAULT 0 -- 0-待处理 1-进行中 2-已完成 3-已取消
);
-- 分装库存表
CREATE TABLE packaging_inventory (
id BIGINT PRIMARY KEY,
spec_id BIGINT NOT NULL,
current_stock INT NOT NULL,
locked_stock INT DEFAULT 0,
last_update_time DATETIME
);
```
2. 核心业务逻辑
```java
// 分装操作示例
public boolean executePackaging(Long taskId, int actualQuantity) {
PackagingTask task = taskRepository.findById(taskId);
if (task == null || task.getStatus() != PackagingStatus.PROCESSING) {
return false;
}
// 1. 扣减原始库存
Product product = productRepository.findById(task.getProductId());
int requiredQuantity = actualQuantity * task.getConversionRate();
if (product.getStock() < requiredQuantity) {
return false;
}
product.setStock(product.getStock() - requiredQuantity);
// 2. 更新分装任务
task.setActualQuantity(actualQuantity);
task.setStatus(PackagingStatus.COMPLETED);
// 3. 增加分装库存
PackagingInventory inventory = inventoryRepository.findBySpecId(task.getSpecId());
inventory.setCurrentStock(inventory.getCurrentStock() + actualQuantity);
// 4. 记录操作日志
PackagingLog log = new PackagingLog();
log.setTaskId(taskId);
log.setOperator(getCurrentUser());
log.setOperationTime(new Date());
logRepository.save(log);
return true;
}
```
3. 接口设计
- 分装规格管理接口:
- `GET /api/packaging/specs` - 获取所有分装规格
- `POST /api/packaging/specs` - 创建新规格
- `PUT /api/packaging/specs/{id}` - 更新规格
- 分装任务接口:
- `POST /api/packaging/tasks` - 创建分装任务
- `GET /api/packaging/tasks/{id}` - 获取任务详情
- `PUT /api/packaging/tasks/{id}/complete` - 完成分装任务
- 库存查询接口:
- `GET /api/inventory/packaging/{specId}` - 查询分装库存
四、实施步骤
1. 需求分析与设计(2周)
- 与业务部门确认详细需求
- 完成系统架构设计
2. 开发与测试(6-8周)
- 核心功能开发
- 单元测试与集成测试
3. 试点运行(2周)
- 选择部分仓库进行试点
- 收集反馈并优化
4. 全面推广(1周)
- 全平台上线
- 培训操作人员
五、预期效果
1. 运营效率提升:
- 分装操作时间减少30%
- 库存准确率提升至99%以上
2. 成本优化:
- 减少分装过程中的损耗
- 优化包装材料使用
3. 用户体验改善:
- 提供更多购买选择
- 减少缺货情况
4. 管理决策支持:
- 提供分装成本分析
- 优化分装规格建议
六、后续优化方向
1. 引入AI算法自动推荐最优分装方案
2. 与供应链系统深度集成,实现自动补货
3. 增加消费者端的分装选择功能
4. 开发移动端分装管理APP
该方案可根据美团买菜的实际业务规模和技术架构进行适当调整,建议先从高销量商品开始实施,逐步扩展到全品类。