Skip to content

ENERGY-003: 能源缴费与催缴

优先级: 🔴 高 (17.0分) | 技术复用度: 80% | 实施周期: 1-2周

客户原话

"每个月要给100多家企业发账单,我们要打印出来送过去,或者发邮件、发微信。企业说没收到,我们也没办法证明。企业要交费,要跑到物业公司来交现金或转账,很不方便。有的企业拖欠费用,我们要打电话催缴,但企业不接电话,或者说'下周一定交',结果一拖再拖。欠费严重的要停水停电,但我们不知道哪些企业欠了多少,要临时统计。有的企业说已经交了,但我们查不到记录,扯皮。"

—— 某工业园区财务主管

业务场景描述

典型场景

场景1: 账单推送

  • 每月5号生成账单
  • 打印100多份账单,逐个送到企业
  • 或者发邮件、微信,企业说没收到
  • 无法证明已送达,企业有理由拖延

场景2: 在线缴费

  • 企业要交费,要跑到物业公司
  • 交现金或转账,财务手工记账
  • 企业觉得不方便,希望在线支付
  • 没有在线支付渠道

场景3: 欠费催缴

  • 每月15号开始催缴欠费企业
  • 财务人员逐个打电话
  • 企业不接电话,或者承诺"下周交"
  • 一拖再拖,欠费越来越多

场景4: 停供管理

  • 欠费3个月以上要停水停电
  • 不知道哪些企业欠费严重
  • 要临时统计,通知工程部停供
  • 停供后企业投诉,说没有提前通知

场景5: 缴费记录查询

  • 企业说已经交了,但财务查不到
  • 要翻银行流水,费时费力
  • 有时候是企业记错了,有时候是财务漏记了
  • 扯皮,影响关系

核心痛点

  1. 账单送达难 - 打印或发邮件,无法证明送达
  2. 缴费不方便 - 企业要跑到现场,没有在线支付
  3. 催缴效率低 - 打电话催缴,企业不接或拖延
  4. 停供不及时 - 不知道哪些企业欠费严重
  5. 记录不清楚 - 缴费记录查询困难,容易扯皮

业务流程图

当前人工流程

问题点

  • 账单送达无法证明
  • 缴费不方便
  • 催缴效率低
  • 停供不及时

自动化流程

改进点

  • 账单自动推送,送达可追踪
  • 在线支付,方便快捷
  • 自动催缴,提升效率
  • 停供预警,提前通知

数据流与依赖

数据输入

  • 账单数据: 来自 ENERGY-002 能源费用分摊
  • 企业信息: 来自 LEASE-001 空间资源管理
  • 缴费记录: 银行流水、在线支付记录

数据输出

  • 缴费状态: 更新到账单系统
  • 欠费预警: 提供给管理层
  • 停供工单: 提供给工程部

场景依赖关系

技术实现方案

核心功能模块

1. 账单推送

账单数据结构:

json
{
  "bill_id": "BILL202403001",
  "company_id": "C001",
  "company_name": "XX科技公司",
  "period": "2024-03",
  "items": [
    {"type": "电费", "amount": 15000, "usage": 25000, "price": 0.6},
    {"type": "水费", "amount": 800, "usage": 200, "price": 4},
    {"type": "物业费", "amount": 4000, "area": 500, "price": 8}
  ],
  "total_amount": 19800,
  "due_date": "2024-04-15",
  "status": "unpaid",
  "push_status": "sent",
  "push_time": "2024-04-05 09:00:00",
  "read_status": "read",
  "read_time": "2024-04-05 10:30:00"
}

推送渠道:

javascript
function pushBill(bill) {
  let company = getCompany(bill.company_id)
  let pushResults = []

  // 1. APP推送
  if (company.has_app) {
    pushResults.push(pushToApp(company.app_user_id, bill))
  }

  // 2. 微信推送
  if (company.wechat_openid) {
    pushResults.push(pushToWechat(company.wechat_openid, bill))
  }

  // 3. 短信推送
  if (company.contact_phone) {
    let smsContent = `【园区物业】您的${bill.period}账单已生成,金额${bill.total_amount}元,请在${bill.due_date}前缴费。查看详情: ${bill.detail_url}`
    pushResults.push(sendSMS(company.contact_phone, smsContent))
  }

  // 4. 邮件推送
  if (company.contact_email) {
    pushResults.push(sendEmail(company.contact_email, bill))
  }

  // 记录推送状态
  bill.push_status = 'sent'
  bill.push_time = new Date()
  bill.push_channels = pushResults

  return bill
}

2. 在线支付

支付接口:

javascript
function createPayment(billId, paymentMethod) {
  let bill = getBill(billId)

  let payment = {
    payment_id: generateId(),
    bill_id: billId,
    company_id: bill.company_id,
    amount: bill.total_amount,
    method: paymentMethod, // wechat, alipay, bank_transfer
    status: 'pending',
    created_at: new Date()
  }

  // 调用支付接口
  if (paymentMethod === 'wechat') {
    payment.pay_url = createWechatPay(payment)
  } else if (paymentMethod === 'alipay') {
    payment.pay_url = createAlipay(payment)
  }

  return payment
}

// 支付回调
function paymentCallback(paymentId, result) {
  let payment = getPayment(paymentId)

  if (result.status === 'success') {
    payment.status = 'paid'
    payment.paid_at = new Date()
    payment.transaction_id = result.transaction_id

    // 更新账单状态
    let bill = getBill(payment.bill_id)
    bill.status = 'paid'
    bill.paid_at = new Date()
    bill.payment_id = paymentId

    // 通知企业
    sendNotification(bill.company_id, {
      title: '缴费成功',
      content: `您的${bill.period}账单已缴费,金额${bill.total_amount}元`
    })

    // 通知财务
    sendNotification('finance_dept', {
      title: '收款通知',
      content: `${bill.company_name} 已缴费 ${bill.total_amount} 元`
    })
  }

  return payment
}

3. 自动催缴

催缴规则:

javascript
// 每天早上9点执行
function sendPaymentReminders() {
  let today = new Date()

  // 查找未缴费账单
  let unpaidBills = bills.filter(b => b.status === 'unpaid')

  unpaidBills.forEach(bill => {
    let dueDate = new Date(bill.due_date)
    let daysOverdue = Math.floor((today - dueDate) / (1000 * 60 * 60 * 24))

    // 到期前3天提醒
    if (daysOverdue === -3) {
      sendReminder(bill, '友好提醒', '您的账单即将到期,请及时缴费')
    }

    // 到期当天提醒
    if (daysOverdue === 0) {
      sendReminder(bill, '缴费提醒', '您的账单今天到期,请尽快缴费')
    }

    // 逾期3天催缴
    if (daysOverdue === 3) {
      sendReminder(bill, '逾期催缴', '您的账单已逾期3天,请立即缴费,避免影响信用')
      bill.overdue_level = 1
    }

    // 逾期7天加急催缴
    if (daysOverdue === 7) {
      sendReminder(bill, '加急催缴', '您的账单已逾期7天,请立即缴费,否则将影响服务')
      bill.overdue_level = 2
      // 同时通知物业主管
      sendNotification('property_manager', {
        title: '欠费预警',
        content: `${bill.company_name} 欠费 ${bill.total_amount} 元,已逾期7天`
      })
    }

    // 逾期15天严重催缴
    if (daysOverdue === 15) {
      sendReminder(bill, '严重催缴', '您的账单已逾期15天,请立即缴费,否则将停止供应')
      bill.overdue_level = 3
      // 通知物业主管和总经理
      sendNotification(['property_manager', 'general_manager'], {
        title: '严重欠费预警',
        content: `${bill.company_name} 欠费 ${bill.total_amount} 元,已逾期15天,建议停供`
      })
    }

    // 逾期30天停供预警
    if (daysOverdue === 30) {
      sendReminder(bill, '停供预警', '您的账单已逾期30天,将于3天后停止供应,请立即缴费')
      bill.overdue_level = 4
      // 创建停供工单
      createCutoffOrder(bill)
    }
  })
}

function sendReminder(bill, title, content) {
  let company = getCompany(bill.company_id)

  // 多渠道推送
  if (company.wechat_openid) {
    pushToWechat(company.wechat_openid, { title, content, bill })
  }

  if (company.contact_phone) {
    sendSMS(company.contact_phone, `【园区物业】${content},账单金额${bill.total_amount}元。查看详情: ${bill.detail_url}`)
  }

  // 记录催缴记录
  bill.reminders = bill.reminders || []
  bill.reminders.push({
    time: new Date(),
    title: title,
    content: content
  })
}

4. 停供管理

停供工单:

json
{
  "cutoff_id": "CUT202403001",
  "company_id": "C001",
  "company_name": "XX科技公司",
  "space_id": "A-3F-301",
  "overdue_bills": ["BILL202401001", "BILL202402001", "BILL202403001"],
  "total_overdue": 59400,
  "overdue_months": 3,
  "cutoff_type": "water_electricity",
  "scheduled_date": "2024-04-08",
  "status": "scheduled",
  "executed_at": null,
  "restored_at": null
}

停供流程:

javascript
function createCutoffOrder(bill) {
  let company = getCompany(bill.company_id)

  // 查找所有欠费账单
  let overdueBills = bills.filter(b =>
    b.company_id === company.company_id &&
    b.status === 'unpaid' &&
    new Date(b.due_date) < new Date()
  )

  let totalOverdue = overdueBills.reduce((sum, b) => sum + b.total_amount, 0)

  let cutoffOrder = {
    cutoff_id: generateId(),
    company_id: company.company_id,
    company_name: company.company_name,
    space_id: company.space_id,
    overdue_bills: overdueBills.map(b => b.bill_id),
    total_overdue: totalOverdue,
    overdue_months: overdueBills.length,
    cutoff_type: 'water_electricity',
    scheduled_date: addDays(new Date(), 3), // 3天后执行
    status: 'scheduled'
  }

  // 提前通知企业
  sendNotification(company.company_id, {
    title: '停供通知',
    content: `您已欠费${totalOverdue}元,将于${cutoffOrder.scheduled_date}停止供应水电,请立即缴费`,
    priority: 'urgent'
  })

  // 通知工程部
  sendNotification('engineering_dept', {
    title: '停供工单',
    content: `${company.company_name} 欠费${totalOverdue}元,计划于${cutoffOrder.scheduled_date}停供`,
    cutoff_id: cutoffOrder.cutoff_id
  })

  return cutoffOrder
}

// 企业缴费后自动恢复供应
function restoreSupply(companyId) {
  let cutoffOrder = getCutoffOrder(companyId)

  if (cutoffOrder && cutoffOrder.status === 'executed') {
    cutoffOrder.status = 'restored'
    cutoffOrder.restored_at = new Date()

    // 通知工程部恢复供应
    sendNotification('engineering_dept', {
      title: '恢复供应',
      content: `${cutoffOrder.company_name} 已缴费,请恢复供应`,
      cutoff_id: cutoffOrder.cutoff_id
    })

    // 通知企业
    sendNotification(companyId, {
      title: '供应已恢复',
      content: '您的水电供应已恢复,感谢您的配合'
    })
  }
}

技术复用度分析

可复用的技术能力(80%):

技术能力复用场景说明
账单管理LEASE-003相同的账单生成和推送
在线支付通用能力微信/支付宝支付接口
催缴提醒LEASE-003相同的定时提醒能力
工单管理FACILITY-002相同的工单流程

需要新开发的能力(20%):

  • 多渠道推送(APP/微信/短信)
  • 停供工单自动化

实施方案

实施步骤

第1周: 系统开发

  • 开发账单推送功能
  • 接入在线支付(微信/支付宝)
  • 开发自动催缴功能
  • 开发停供管理功能

第2周: 试点与上线

  • 选择10家企业试点
  • 培训财务和工程人员
  • 全面上线

成本估算

软件成本:

  • 平台开发: 约3-4万元(可复用80%)
  • 支付接口费用: 0.6% × 年收款额
  • 短信费用: 0.05元/条 × 约500条/月 × 12月 = 300元/年

人力成本节省:

  • 账单推送自动化: 约1.5万元/年
  • 催缴自动化: 约2万元/年
  • 缴费记账自动化: 约1万元/年
  • 年节省成本: 约4.5万元

其他收益:

  • 缴费及时率提升,减少欠费: 约10-15万元/年
  • 减少停供纠纷: 约2-3万元/年
  • 提升企业满意度: 约3-5万元/年
  • 总收益: 约15-23万元/年

投资回收期: 约2-3个月

预期收益

效率提升:

  • 账单推送时间: 从2天 → 1分钟
  • 催缴时间: 从2小时/天 → 自动化
  • 缴费记账时间: 从30分钟 → 实时

缴费率提升:

  • 按时缴费率: 从70% → 85%(提升21%)
  • 欠费金额: 减少50%
  • 停供纠纷: 减少80%

满意度提升:

  • 企业满意度: 从70% → 85%(提升21%)
  • 缴费便利性: 大幅提升

风险与应对

技术风险

风险1: 支付接口故障

  • 表现: 微信/支付宝接口不可用
  • 应对:
    • 提供多种支付方式
    • 支持线下转账
    • 及时通知企业

风险2: 推送失败

  • 表现: 短信/微信推送失败
  • 应对:
    • 多渠道推送
    • 记录推送状态
    • 失败后重试

业务风险

风险1: 企业不接受在线支付

  • 表现: 习惯线下转账
  • 应对:
    • 保留线下支付方式
    • 引导企业使用在线支付
    • 提供优惠激励

风险2: 停供引发纠纷

  • 表现: 企业投诉停供不合理
  • 应对:
    • 提前多次通知
    • 保留通知记录
    • 协商解决

实施检查清单

上线前检查

  • [ ] 账单推送功能已开发
  • [ ] 在线支付接口已接入
  • [ ] 自动催缴功能已开发
  • [ ] 停供管理功能已开发
  • [ ] 财务和工程人员已培训

上线后监控

  • [ ] 每日检查账单推送情况
  • [ ] 每周检查缴费率变化
  • [ ] 每月分析欠费情况
  • [ ] 每季度优化催缴策略

成功案例参考

某科技园区(120家企业,月均账单120张)

实施前:

  • 账单推送时间: 2天
  • 按时缴费率: 70%
  • 催缴时间: 2小时/天
  • 欠费金额: 约50万元

实施后(3个月):

  • 账单推送时间: 1分钟(提升99%)
  • 按时缴费率: 85%(提升21%)
  • 催缴时间: 自动化(节省100%)
  • 欠费金额: 约25万元(减少50%)
  • 企业满意度: 从70% → 85%

相关资源

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