Files
aiot-document/开发者文档/02-Ops领域/02-工单队列系统.md

3.0 KiB
Raw Blame History

02-工单队列系统

工单队列系统是 AIOT 平台 Ops 领域的公共基础设施,用于管理工单的排队与分配。

一、队列状态机 (OrderQueueStatusEnum)

工单队列的生命周期状态:

队列状态 说明 对应工单状态
WAITING 等待中 QUEUED
PROCESSING 处理中 DISPATCHED/CONFIRMED/ARRIVED
PAUSED 暂停中 PAUSED
REMOVED 已移除 COMPLETED/CANCELLED

二、队列数据结构 (OrderQueueDTO)

核心字段:

  • userId执行人员ID
  • opsOrderId工单ID
  • deviceId工牌设备ID
  • priority优先级0=P0, 1=P1, 2=P2, 3=P3
  • queueScore:队列分数 = 优先级分数 + 时间戳
  • enqueueTime:入队时间
  • queueStatus:队列状态

三、区域模型 (OpsBusAreaDO)

区域层级(AreaTypeEnum

  • PARK:园区
  • BUILDING:楼栋
  • FLOOR:楼层
  • FUNCTION:功能区域

核心字段:

  • parentId/parentPath:区域树
  • floorNo:楼层号
  • areaLevel区域等级HIGH/MEDIUM/LOW
  • standardDuration:标准保洁时长(分钟)

四、派单策略 (BadgeDeviceAreaAssignStrategy)

当前启用的策略:工牌设备区域优先分配

派单流程

  1. 查询该区域的工牌设备(listBadgesByArea
  2. 过滤在线设备(isOnline
  3. 选择最佳设备:
    • P0紧急优先canAcceptNewOrderIDLE、电量充足、心跳最新
    • 普通任务优先IDLE无IDLE则选等待队列少的BUSY设备

推荐评分

  • 基础分50
  • 状态分:可接单+30忙碌+10
  • 电量分:>80%+15>50%+10>20%+5
  • 心跳分5分钟内+5

出队策略(按楼层动态重算)

注意:该逻辑属于业务设计,当前 OrderQueueServiceEnhanced 代码实现中仍待补充完整落地。 在派单引擎分配等待任务时,为了提高同楼层作业效率,系统需要引入动态算分逻辑:

  1. 基础排序:队列内默认按 queueScore(优先级分数 + 时间戳)排队。
  2. 同楼层加权(出队重算):当系统准备把任务出队并派发给保洁员时,如果当前任务的区域所在的 floorNo 与保洁员当前所在楼层(或上一个刚完成工单的楼层)一致,则该工单在本次出队评估时获得临时加分/权重优先。
  3. 目的:避免保洁员在完成当前任务后,跨楼层去处理另一个只早入队几秒钟的普通任务,而是优先扫尾同一楼层内的积压任务。

五、核心操作 (OrderQueueService)

  • enqueue:入队
  • dequeue:出队
  • startExecution:开始执行
  • pauseTask/resumeTask:暂停/恢复
  • adjustPriority:调整优先级
  • getWaitingTasksByUserId:获取等待中任务

六、优先级 (PriorityEnum)

优先级 描述 可打断
P0 紧急任务
P1 重要任务
P2 普通任务
P3 低优任务