Skip to content

系统落地:生鲜损耗控制

← 上一阶段:开发资产


系统实现

这个场景已经作为"中央厨房管理系统"的核心模块之一落地实施。

在完整系统中的位置

中央厨房管理系统
├── 菜品标准化管理
├── 门店需求计划
├── 生产调度
└── 【采购收货管理】← 本场景所在模块
    ├── 采购计划
    ├── 【生鲜收货与损耗控制】← 本场景
    ├── 库存管理
    └── 供应商管理

功能模块

1. 移动端收货

界面展示:

┌───────────────────────────┐
│  收货扫码                  │
├───────────────────────────┤
│                           │
│  [扫描采购单二维码]        │
│                           │
│  或手动输入采购单号:       │
│  [____________] [搜索]     │
│                           │
└───────────────────────────┘

扫码后 ↓

┌───────────────────────────┐
│  收货:海鲜-大虾           │
├───────────────────────────┤
│  采购单号:PO202501160001  │
│  供应商:XX 海鲜供应        │
│                           │
│  📦 采购重量:500.00 kg    │
│  ⚖️  实际重量:490.00 kg    │
│  📊 差异:-10 kg (-2.0%)   │
│                           │
│  ✅ 系统判断:自动入库      │
│                           │
│  [确认入库]                │
│                           │
│  说明:                    │
│  • 差异在容忍范围内(±2%) │
│  • 系统已自动处理          │
│  • 损耗:10kg(自然损耗)   │
│  • 应付金额:14,700元      │
└───────────────────────────┘

核心功能:

  • ✓ 扫码快速收货
  • ✓ 蓝牙电子秤自动读重
  • ✓ 实时差异计算和判断
  • ✓ 一键确认入库

2. 异常处理

多收场景(微信通知)

【收货异常提醒】
商品:海鲜-大虾
采购单号:PO202501160001

采购重量:500kg
实际重量:520kg
多收:+20kg (+4%)

超出容忍范围,请处理:

[全部收货] [退回多余]

点击处理 >

少收场景(损耗单)

┌───────────────────────────┐
│  损耗单 #LS202501160001    │
├───────────────────────────┤
│  商品:海鲜-大虾           │
│  采购单号:PO202501160001  │
│                           │
│  采购重量:500 kg          │
│  实际重量:480 kg          │
│  损耗:-20 kg (-4%)        │
│                           │
│  损耗金额:600元           │
│  (20kg × 30元/kg)         │
│                           │
│  状态:待财务审核           │
│                           │
│  审核操作:                │
│  [ ] 正常损耗,审核通过     │
│  [ ] 异常损耗,联系供应商   │
│                           │
│  备注:_________________  │
│                           │
│  [审核通过] [拒绝]         │
└───────────────────────────┘

3. 数据看板

供应商损耗分析:

供应商损耗分析(最近30天)

供应商A(XX海鲜)
━━━━━━━━━━━━━━━━━━━━━━
收货次数:45次
平均损耗率:1.8%
损耗金额:¥8,500

供应商B(YY海鲜)
━━━━━━━━━━━━━━━━━━━━━━
收货次数:38次
平均损耗率:3.2%  ⚠️ 偏高
损耗金额:¥12,300

[查看详情] [导出报表]

实施效果

定量效果

指标上线前上线后提升
平均收货时间8 分钟/单3 分钟/单⬇️ 62.5%
财务对账时间2 小时/天10 分钟/天⬇️ 91.7%
采购员凌晨处理8 次/月2 次/月⬇️ 75%
损耗数据准确率~70%~98%⬆️ 40%

定性效果

仓管员反馈:

"以前收货要看采购单,手工记录,算差异,不知道该怎么处理。现在扫码、称重,系统自动告诉我怎么做,太方便了。" —— 李师傅(仓管)

采购员反馈:

"以前凌晨 4 点经常被叫醒处理重量差异问题,现在只有超出 2% 才会通知我,而且可以在手机上直接处理,不用赶到公司。" —— 张经理(采购主管)

财务反馈:

"最大的变化是对账不用重新算了,系统已经自动按实际重量调整了应付金额,我只要审核异常的损耗单就行。" —— 王会计(财务)

技术实现

技术栈

后端:

  • Node.js + Express
  • MySQL 数据库
  • Redis 缓存

前端:

  • Vue 3 + Vant(移动端)
  • PC 管理后台

集成:

  • 蓝牙电子秤 SDK
  • 微信公众号推送
  • 企业微信通知

核心代码片段

typescript
// 收货判断服务
class ReceiptCheckService {
  async checkAndProcess(data: ReceiptData) {
    // 1. 获取采购单信息
    const purchaseOrder = await this.getPurchaseOrder(data.purchaseOrderId);
    
    // 2. 判断差异
    const result = this.checkWeightDifference(
      data.actualWeight,
      purchaseOrder.weight,
      purchaseOrder.tolerance || 0.02
    );
    
    // 3. 根据判断结果执行不同流程
    switch (result.status) {
      case 'AUTO_APPROVE':
        return await this.autoApprove(purchaseOrder, data.actualWeight);
      
      case 'NEED_BUYER_APPROVE':
        return await this.notifyBuyer(purchaseOrder, result);
      
      case 'NEED_FINANCE_APPROVE':
        return await this.createLossRecord(purchaseOrder, result);
    }
  }
  
  private checkWeightDifference(actual, purchase, tolerance) {
    const diff = actual - purchase;
    const percent = Math.abs(diff / purchase);
    
    if (percent <= tolerance) return { status: 'AUTO_APPROVE' };
    if (diff > 0) return { status: 'NEED_BUYER_APPROVE', diff, percent };
    return { status: 'NEED_FINANCE_APPROVE', diff, percent };
  }
}

扩展应用

这个场景的逻辑已经被复用到以下场景:

  1. 蔬菜收货 - 容忍度调整为 5%
  2. 冻品收货 - 容忍度调整为 3%
  3. 退货处理 - 使用相同的差异判断逻辑
  4. 盘点差异 - 盘点数量与账面数量的差异处理

查看完整系统

本场景是"中央厨房管理系统"的核心模块之一。

查看完整系统文档

查看中央厨房管理系统完整文档 →

完整系统包含:

  • 菜品标准化管理
  • 门店需求计划
  • 生产调度
  • 采购收货管理(本场景所在模块)
  • 配送管理
  • 成本核算

系统演示

如需查看系统演示或了解部署方案,请 联系我们 →


相关链接

基于 AI 辅助开发,快速、灵活、可靠