feat(ops): 手动派单遵循执行人忙碌状态,忙碌时入队等待

ManualOrderActionFacade.dispatch:
- 新增 strategy.isAssigneeIdle() 判断,空闲→DISPATCHED,忙碌→QUEUED
- 不再无条件直接派发

OrderBusinessStrategy:
- 新增 isAssigneeIdle() 默认方法,默认返回 true

CleanOrderBusinessStrategy:
- isAssigneeIdle 通过 BadgeDeviceStatusService.isBusy() 判断设备忙碌

SecurityOrderBusinessStrategy:
- isAssigneeIdle 通过 UserDispatchStatusService.isIdle() 判断人员忙碌

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
lzh
2026-03-27 16:37:30 +08:00
parent 78396cf35a
commit 55ef659364
4 changed files with 39 additions and 8 deletions

View File

@@ -36,6 +36,12 @@ public class CleanOrderBusinessStrategy implements OrderBusinessStrategy {
return WorkOrderTypeEnum.CLEAN.getType().equals(businessType);
}
@Override
public boolean isAssigneeIdle(DispatchOrderCommand cmd, OpsOrderDO order) {
BadgeDeviceStatusDTO badge = badgeDeviceStatusService.getBadgeStatus(cmd.getAssigneeId());
return badge != null && !badge.isBusy();
}
@Override
public void validateDispatch(DispatchOrderCommand cmd, OpsOrderDO order) {
if (cmd.getAssigneeId() == null) {