chore: 【ops】保洁员DispatchEngine
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
package com.viewsh.module.ops.api.dispatch;
|
||||
|
||||
import com.viewsh.module.ops.api.queue.OrderQueueDTO;
|
||||
import com.viewsh.module.ops.enums.DispatchStrategyEnum;
|
||||
import com.viewsh.module.ops.enums.PriorityEnum;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 派单引擎服务接口
|
||||
* 提供工单自动派单、手动派单、紧急派单等功能
|
||||
*
|
||||
* @author lzh
|
||||
*/
|
||||
public interface DispatchEngineService {
|
||||
|
||||
/**
|
||||
* 自动派单
|
||||
* 根据工单的派单策略自动分配执行人员
|
||||
*
|
||||
* @param queueId 队列记录ID
|
||||
* @return 是否派单成功
|
||||
*/
|
||||
boolean autoDispatch(Long queueId);
|
||||
|
||||
/**
|
||||
* 手动派单
|
||||
* 管理员手动指定执行人员
|
||||
*
|
||||
* @param queueId 队列记录ID
|
||||
* @param assigneeId 执行人员ID
|
||||
* @return 是否派单成功
|
||||
*/
|
||||
boolean manualDispatch(Long queueId, Long assigneeId);
|
||||
|
||||
/**
|
||||
* 批量自动派单
|
||||
* 批量处理指定区域的待派单任务
|
||||
*
|
||||
* @param areaId 区域ID(可选,null表示处理所有区域)
|
||||
* @param batchSize 批次大小
|
||||
* @return 实际派单成功的数量
|
||||
*/
|
||||
int batchAutoDispatch(Long areaId, int batchSize);
|
||||
|
||||
/**
|
||||
* 紧急派单
|
||||
* 处理P0紧急任务,立即分配可用的执行人员
|
||||
* 如果所有人员都在忙,可以考虑:
|
||||
* 1. 打断正在执行低优先级任务的人员
|
||||
* 2. 跨区域调派人员
|
||||
*
|
||||
* @param queueId 队列记录ID
|
||||
* @return 是否派单成功
|
||||
*/
|
||||
boolean urgentDispatch(Long queueId);
|
||||
|
||||
/**
|
||||
* 处理紧急插队
|
||||
* 当工单优先级被升级为P0时,需要重新评估并打断当前低优先级任务的执行
|
||||
*
|
||||
* @param orderId 工单ID
|
||||
* @return 是否成功处理
|
||||
*/
|
||||
boolean handlePriorityInterrupt(Long orderId);
|
||||
|
||||
/**
|
||||
* 查询可用的执行人员
|
||||
* 根据区域、技能等条件查询可派单的人员
|
||||
*
|
||||
* @param areaId 区域ID
|
||||
* @param assigneeType 执行人员类型(CLEANER、SECURITY等)
|
||||
* @return 可用人员ID列表
|
||||
*/
|
||||
List<Long> findAvailableAssignees(Long areaId, String assigneeType);
|
||||
|
||||
/**
|
||||
* 推荐最佳执行人员
|
||||
* 根据派单策略推荐最合适的执行人员
|
||||
*
|
||||
* @param queueId 队列记录ID
|
||||
* @param dispatchStrategy 派单策略
|
||||
* @return 推荐的执行人员ID,如果没有合适的返回null
|
||||
*/
|
||||
Long recommendAssignee(Long queueId, DispatchStrategyEnum dispatchStrategy);
|
||||
|
||||
/**
|
||||
* 获取派单建议
|
||||
* 为指定工单提供派单建议,包括推荐人员和原因
|
||||
*
|
||||
* @param queueId 队列记录ID
|
||||
* @return 派单建议
|
||||
*/
|
||||
DispatchSuggestion getDispatchSuggestion(Long queueId);
|
||||
|
||||
/**
|
||||
* 取消派单
|
||||
* 取消已派单但未接单的任务
|
||||
*
|
||||
* @param queueId 队列记录ID
|
||||
* @param reason 取消原因
|
||||
* @return 是否成功
|
||||
*/
|
||||
boolean cancelDispatch(Long queueId, String reason);
|
||||
|
||||
/**
|
||||
* 重新派单
|
||||
* 将派单失败或超时的任务重新派单
|
||||
*
|
||||
* @param queueId 队列记录ID
|
||||
* @return 是否成功
|
||||
*/
|
||||
boolean redispatch(Long queueId);
|
||||
|
||||
/**
|
||||
* 启动派单引擎
|
||||
* 启动定时任务,自动处理待派单队列
|
||||
*/
|
||||
void startDispatchEngine();
|
||||
|
||||
/**
|
||||
* 停止派单引擎
|
||||
* 停止定时任务
|
||||
*/
|
||||
void stopDispatchEngine();
|
||||
|
||||
/**
|
||||
* 派单建议
|
||||
*/
|
||||
class DispatchSuggestion {
|
||||
/**
|
||||
* 推荐的执行人员ID
|
||||
*/
|
||||
private Long assigneeId;
|
||||
|
||||
/**
|
||||
* 执行人员姓名
|
||||
*/
|
||||
private String assigneeName;
|
||||
|
||||
/**
|
||||
* 推荐理由
|
||||
*/
|
||||
private String reason;
|
||||
|
||||
/**
|
||||
* 匹配度分数(0-100)
|
||||
*/
|
||||
private Integer score;
|
||||
|
||||
public DispatchSuggestion(Long assigneeId, String assigneeName, String reason, Integer score) {
|
||||
this.assigneeId = assigneeId;
|
||||
this.assigneeName = assigneeName;
|
||||
this.reason = reason;
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
public Long getAssigneeId() {
|
||||
return assigneeId;
|
||||
}
|
||||
|
||||
public String getAssigneeName() {
|
||||
return assigneeName;
|
||||
}
|
||||
|
||||
public String getReason() {
|
||||
return reason;
|
||||
}
|
||||
|
||||
public Integer getScore() {
|
||||
return score;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user