using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Tasks.Workflow.Abstractions; namespace WIDESEAWCS_Tasks.Workflow { /// /// 简单命令处理:仅迁移原 RobotMessageHandler 中的命令分支,不改变业务语义。 /// public class RobotSimpleCommandHandler : IRobotSimpleCommandHandler { private readonly RobotTaskProcessor _taskProcessor; public RobotSimpleCommandHandler(RobotTaskProcessor taskProcessor) { _taskProcessor = taskProcessor; } public async Task HandleAsync(string message, RobotSocketState state) { switch (message) { case "homing": state.OperStatus = "Homing"; return true; case "homed": state.OperStatus = "Homed"; return true; case "picking": state.CurrentAction = "Picking"; return true; case "puting": state.CurrentAction = "Putting"; return true; case "allpickfinished": { state.CurrentAction = "AllPickFinished"; var currentTask = state.CurrentTask; if (currentTask == null) { return false; } var robotTaskType = (RobotTaskTypeEnum)currentTask.RobotTaskType; if (robotTaskType == RobotTaskTypeEnum.SplitPallet || robotTaskType == RobotTaskTypeEnum.ChangePallet) { if (await _taskProcessor.HandleInboundTaskAsync(state, useSourceAddress: true)) { _taskProcessor.DeleteTask(currentTask.RobotTaskId); return true; } } return false; } case "allputfinished": { state.CurrentAction = "AllPutFinished"; var currentTask = state.CurrentTask; if (currentTask == null) { return false; } var robotTaskType = (RobotTaskTypeEnum)currentTask.RobotTaskType; if (robotTaskType == RobotTaskTypeEnum.GroupPallet || robotTaskType == RobotTaskTypeEnum.ChangePallet) { if (await _taskProcessor.HandleInboundTaskAsync(state, useSourceAddress: false)) { _taskProcessor.DeleteTask(currentTask.RobotTaskId); state.CurrentTask = null; state.RobotTaskTotalNum = 0; state.CellBarcode = new List(); return true; } } return false; } case "running": state.OperStatus = "Running"; return true; case "pausing": state.OperStatus = "Pausing"; return true; case "warming": state.OperStatus = "Warming"; return true; case "emstoping": state.OperStatus = "Emstoping"; return true; case "runmode,1": state.RobotRunMode = 1; return true; case "runmode,2": state.RobotRunMode = 2; return true; case "controlmode,1": state.RobotControlMode = 1; return true; case "controlmode,2": state.RobotControlMode = 2; return true; case "armobject,1": state.RobotArmObject = 1; return true; case "armobject,0": state.RobotArmObject = 0; return true; default: return false; } } } }