Skip to content

系统落地:应急抢修调度

← 上一阶段:开发资产


系统实现

这个场景已经作为"易活PLUS 工单管理平台"的应急模块落地实施。

在完整系统中的位置

易活PLUS 工单管理平台
├── 常规工单管理
├── 应急抢修调度 ← 本场景核心模块
│   ├── 事件上报
│   ├── 智能派单
│   ├── 实时定位
│   └── 抢修跟踪
└── 数据统计

功能模块

1. 上报端(微信小程序)

快速上报界面:

┌───────────────────────────┐
│  应急抢修上报              │
├───────────────────────────┤
│  紧急程度:                │
│  ( ) 一级危急(电梯困人等) │
│  ( ) 二级紧急(水管爆裂等) │
│  ( ) 三级重要(门禁故障等) │
│  ( ) 四级普通(一般维修)   │
│                           │
│  故障类型:                │
│  [ ] 电梯                  │
│  [ ] 水管                  │
│  [ ] 电路                  │
│  [ ] 空调                  │
│  [ ] 其他                  │
│                           │
│  问题描述:                │
│  [________________]        │
│                           │
│  位置:[自动获取]          │
│                           │
│  [立即上报]                │
└───────────────────────────┘

核心功能:

  • ✓ 快速上报,一键选择紧急程度
  • ✓ 自动获取位置
  • ✓ 实时查看抢修进度

2. 师傅端(移动 App)

任务列表:

┌───────────────────────────┐
│  我的任务                  │
├───────────────────────────┤
│  [待接单] [处理中] [已完成] │
│                           │
│  ┌─────────────────────┐  │
│  │ ⚠️ 一级危急          │  │
│  │ 电梯困人             │  │
│  │ 位置:1号楼          │  │
│  │ 距离:200米          │  │
│  │ 时间:2分钟前        │  │
│  │                     │  │
│  │  [立即接单]          │  │
│  └─────────────────────┘  │
│                           │
│  ┌─────────────────────┐  │
│  │ 二级紧急             │  │
│  │ 水管爆裂             │  │
│  │ 位置:2号楼          │  │
│  │ 距离:500米          │  │
│  │ 时间:5分钟前        │  │
│  │                     │  │
│  │  [接单] [查看详情]   │  │
│  └─────────────────────┘  │
└───────────────────────────┘

核心功能:

  • ✓ 实时接收任务通知
  • ✓ 一键接单
  • ✓ 实时位置上报
  • ✓ 抢修进度更新

3. 调度端(Web 后台)

实时监控看板:

┌─────────────────────────────────────┐
│  应急抢修调度系统 - 实时监控          │
├─────────────────────────────────────┤
│                                     │
│  今日数据                            │
│  ┌──────┐ ┌──────┐ ┌──────┐        │
│  │ 上报 │ │ 处理中│ │ 已完成│        │
│  │  12  │ │   3  │ │   9  │        │
│  └──────┘ └──────┘ └──────┘        │
│                                     │
│  平均响应时间:8分钟 ⬇️ 73%          │
│  任务完成率:100% ⬆️ 25%             │
│                                     │
│  师傅状态                            │
│  ┌─────────────────────────────┐   │
│  │ 张师傅:在线空闲 ✓           │   │
│  │ 位置:1号楼附近              │   │
│  │ 技能:电工、水工             │   │
│  └─────────────────────────────┘   │
│                                     │
│  ┌─────────────────────────────┐   │
│  │ 李师傅:在线忙碌 ⚠️           │   │
│  │ 位置:2号楼                  │   │
│  │ 当前任务:1个                │   │
│  └─────────────────────────────┘   │
│                                     │
│  待处理任务                          │
│  ⚠️ 一级危急:电梯困人(待派单)      │
│  ⚠️ 二级紧急:水管爆裂(已派单)     │
│                                     │
│  [查看详细报表]                      │
└─────────────────────────────────────┘

地图视图:

┌───────────────────────────┐
│  实时地图                  │
├───────────────────────────┤
│  [地图显示]                │
│                           │
│  师傅位置:                │
│  • 张师傅 [在线空闲]       │
│  • 李师傅 [在线忙碌]       │
│  • 王师傅 [在线空闲]       │
│                           │
│  任务位置:                │
│  ⚠️ 电梯困人(1号楼)      │
│  ⚠️ 水管爆裂(2号楼)      │
│                           │
│  [智能派单] [手动派单]     │
└───────────────────────────┘

实施效果

定量效果

指标上线前上线后提升
平均响应时间30 分钟8 分钟⬇️ 73.3%
一级危急响应时间15 分钟4 分钟⬇️ 73.3%
任务完成率80%100%⬆️ 25%
调度效率基准+60%⬆️ 60%
业主满意度3.5/5.04.7/5.0⬆️ 34.3%

定性效果

调度员反馈:

"最大的变化是派单快了,以前要一个个打电话,现在系统自动推荐,几秒钟就能派单。而且师傅位置实时显示,知道谁在附近,派单更准确。" —— 张调度员

维修师傅反馈:

"任务通知及时了,而且能看到任务位置和距离,知道哪些是紧急的,工作安排更合理。一级危急的任务会广播通知,不会错过。" —— 李师傅(维修工)

物业经理反馈:

"应急响应时间从30分钟缩短到8分钟,业主投诉大幅减少。特别是电梯困人这种危急情况,现在4分钟就能响应,业主满意度大幅提升。" —— 王经理(物业经理)

技术实现

技术栈

后端:

  • Node.js + Express
  • MySQL 数据库
  • Redis 缓存
  • WebSocket 实时通信

前端:

  • 微信小程序(上报端)
  • Android/iOS App(师傅端)
  • Vue 3 + Element Plus(PC 调度端)

集成:

  • 地图服务(高德/百度)
  • 推送服务(极光推送/个推)
  • 短信服务(阿里云/腾讯云)

核心代码片段

typescript
// 应急抢修调度服务
class EmergencyDispatchService {
  async dispatchTask(taskId: string): Promise<Worker> {
    // 1. 获取任务信息
    const task = await this.getTask(taskId);
    
    // 2. 一级危急事件:广播通知
    if (task.urgency === 'critical') {
      return await this.broadcastTask(task);
    }
    
    // 3. 其他级别:智能派单
    const candidates = await this.getAvailableWorkers({
      skills: [task.skillType],
      status: 'online-idle',
      inShift: true
    });
    
    // 4. 计算评分
    const scoredWorkers = await Promise.all(
      candidates.map(async worker => ({
        worker,
        score: await this.calculateScore(worker, task)
      }))
    );
    
    // 5. 选择评分最高的
    scoredWorkers.sort((a, b) => b.score - a.score);
    const selectedWorker = scoredWorkers[0].worker;
    
    // 6. 派单
    await this.assignTask(taskId, selectedWorker.id);
    
    // 7. 通知师傅
    await this.notifyWorker(selectedWorker.id, {
      type: 'NEW_TASK',
      taskId: task.id
    });
    
    return selectedWorker;
  }
  
  private async broadcastTask(task: EmergencyTask): Promise<Worker> {
    // 1. 广播通知所有在线师傅
    const onlineWorkers = await this.getOnlineWorkers({
      skills: [task.skillType]
    });
    
    await Promise.all(
      onlineWorkers.map(worker => 
        this.notifyWorker(worker.id, {
          type: 'CRITICAL_TASK',
          taskId: task.id,
          allowGrab: true  // 允许抢单
        })
      )
    );
    
    // 2. 等待抢单(2分钟)
    const grabbedWorker = await this.waitForGrab(task.id, 2 * 60 * 1000);
    
    if (grabbedWorker) {
      return grabbedWorker;
    }
    
    // 3. 无人抢单,自动指派最近的
    const nearestWorker = await this.findNearestWorker(task);
    await this.assignTask(task.id, nearestWorker.id, true); // 强制指派
    
    // 4. 通知主管
    await this.notifySupervisor({
      type: 'CRITICAL_TASK_NO_GRAB',
      taskId: task.id,
      assignedWorker: nearestWorker
    });
    
    return nearestWorker;
  }
}

扩展应用

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

  1. 医院应急抢修 - 手术室、ICU设备故障应急
  2. 工厂设备故障 - 生产线停机抢修
  3. 酒店应急维修 - 客房设施紧急维修

查看完整系统

本场景是"易活PLUS 工单管理平台"的应急模块。

系统演示

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


相关链接

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