|  |  | 
 |  |  |                                     commonStackerCrane.LastTaskType = task.TaskType; | 
 |  |  |                                     int oldState = task.TaskState; | 
 |  |  |                                     task.TaskState = TaskStatusEnum.SC_Executing.ObjToInt(); | 
 |  |  |                                     task.Dispatchertime = DateTime.Now; | 
 |  |  |                                     task.ExceptionMessage = ""; | 
 |  |  |                                     _taskRepository.UpdateData(task); | 
 |  |  |                                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"ç³»ç»èªå¨æµç¨ï¼ä»»å¡ç¶æä»ã{oldState}ã转å°ã{task.TaskState}ã"); | 
 |  |  |                                 } | 
 |  |  | 
 |  |  |                 { | 
 |  |  |                     if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) | 
 |  |  |                     { | 
 |  |  |                         Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneStationCode == task.NextAddress); | 
 |  |  |                         if(stationManger == null) | 
 |  |  |                         { | 
 |  |  |                             _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"AGVç«ç¹æªé
ç½®,{task.NextAddress}"); | 
 |  |  |                             _taskService.UpdateTaskExceptionMessage(taskNum, $"AGVç«ç¹æªé
ç½®,{task.NextAddress}"); | 
 |  |  |                             return WebResponseContent.Instance.Error($"AGVç«ç¹æªé
ç½®,{task.NextAddress}"); | 
 |  |  |                         } | 
 |  |  |                         int oldStatus = task.TaskState; | 
 |  |  |                         task.DeviceCode = "AGV"; | 
 |  |  |                         task.DeviceCode = "AGV_CSJ"; | 
 |  |  |                         task.TaskState = TaskStatusEnum.AGV_Execute.ObjToInt(); | 
 |  |  |                         task.CurrentAddress = task.NextAddress; | 
 |  |  |                         task.CurrentAddress = stationManger.AGVStationCode; | 
 |  |  |                         task.NextAddress = task.TargetAddress; | 
 |  |  |                         _taskRepository.UpdateData(task); | 
 |  |  |                         _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"ç³»ç»èªå¨æµç¨,ï¼ä»»å¡ç¶æä»ã{oldStatus}ã转å°ã{task.TaskState}ã"); | 
 |  |  | 
 |  |  |  | 
 |  |  |             if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) | 
 |  |  |             { | 
 |  |  |                 if (OutTaskStationIsOccupied(task) != null || true) | 
 |  |  |                 if (OutTaskStationIsOccupied(task) == null) | 
 |  |  |                 { | 
 |  |  |                     return task; | 
 |  |  |                 } | 
 |  |  |                 else | 
 |  |  |                 { | 
 |  |  |                     bool flag = false; | 
 |  |  |                     List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList(); | 
 |  |  |                     List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes); | 
 |  |  |                     foreach (var item in tasks) | 
 |  |  |                     { | 
 |  |  |                         if (OutTaskStationIsOccupied(task) != null) | 
 |  |  |                         { | 
 |  |  |                             return task; | 
 |  |  |                             flag = true; | 
 |  |  |                             break; | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); | 
 |  |  |                     if (!flag) | 
 |  |  |                     { | 
 |  |  |                         task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  | 
 |  |  |             stackerCraneTaskCommand.Barcode = task.PalletCode; | 
 |  |  |             stackerCraneTaskCommand.TaskNum = task.TaskNum; | 
 |  |  |             stackerCraneTaskCommand.WorkType = 1; | 
 |  |  |             stackerCraneTaskCommand.TrayType = 1; | 
 |  |  |             stackerCraneTaskCommand.TrayType = (Int16)task.PalletType; | 
 |  |  |             if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//夿æ¯å¦æ¯å
¥åºä»»å¡ | 
 |  |  |             { | 
 |  |  |                 string[] startCodes = task.CurrentAddress.Split("-"); | 
 |  |  | 
 |  |  |                 else | 
 |  |  |                 { | 
 |  |  |                     //æ°æ®é
ç½®é误 | 
 |  |  |                     _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"åºåºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); | 
 |  |  |                     WriteInfo(task.DeviceCode, $"åºåºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); | 
 |  |  |                     _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"åºåºä»»å¡ç»ç¹é误ï¼ç»ç¹ï¼ã{task.NextAddress}ã"); | 
 |  |  |                     WriteInfo(task.DeviceCode, $"åºåºä»»å¡ç»ç¹é误ï¼ç»ç¹ï¼ã{task.NextAddress}ã"); | 
 |  |  |                     return null; | 
 |  |  |                 } | 
 |  |  |  |