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:
@@ -8,13 +8,11 @@ import com.viewsh.module.ops.enums.WorkOrderStatusEnum;
|
||||
import com.viewsh.module.ops.enums.WorkOrderTypeEnum;
|
||||
import com.viewsh.module.ops.security.dal.dataobject.area.OpsAreaSecurityUserDO;
|
||||
import com.viewsh.module.ops.security.dal.mysql.area.OpsAreaSecurityUserMapper;
|
||||
import com.viewsh.module.ops.service.dispatch.UserDispatchStatusService;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import static com.viewsh.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.viewsh.module.ops.enums.ErrorCodeConstants.SECURITY_ASSIGNEE_NOT_BOUND_TO_AREA;
|
||||
|
||||
/**
|
||||
* 安保条线策略
|
||||
* <p>
|
||||
@@ -32,11 +30,19 @@ public class SecurityOrderBusinessStrategy implements OrderBusinessStrategy {
|
||||
@Resource
|
||||
private OrderQueueService orderQueueService;
|
||||
|
||||
@Resource
|
||||
private UserDispatchStatusService userDispatchStatusService;
|
||||
|
||||
@Override
|
||||
public boolean supports(String businessType) {
|
||||
return WorkOrderTypeEnum.SECURITY.getType().equals(businessType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAssigneeIdle(DispatchOrderCommand cmd, OpsOrderDO order) {
|
||||
return userDispatchStatusService.isIdle(cmd.getAssigneeId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validateDispatch(DispatchOrderCommand cmd, OpsOrderDO order) {
|
||||
// 尝试从区域绑定记录回填姓名(不做区域限制,允许跨区域派单)
|
||||
|
||||
Reference in New Issue
Block a user