|  |  | 
 |  |  | using WIDESEAWCS_Tasks.HoisterJob; | 
 |  |  | using WIDESEAWCS_Tasks.StackerCraneJob; | 
 |  |  | using WIDESEAWCS_Core.Caches; | 
 |  |  | using WIDESEAWCS_Tasks.ConveyorLineJob; | 
 |  |  | using WIDESEAWCS_QuartzJob.Repository; | 
 |  |  |  | 
 |  |  | namespace WIDESEAWCS_Tasks | 
 |  |  | { | 
 |  |  | 
 |  |  |         private readonly ITaskRepository _taskRepository; | 
 |  |  |         private readonly IRouterService _routerService; | 
 |  |  |         private readonly IStationMangerRepository _stationMangerRepository; | 
 |  |  |         private readonly IRouterRepository _routerRepository; | 
 |  |  |         private List<Dt_ApiInfo> apiInfos; | 
 |  |  |  | 
 |  |  |         public StackerCraneJob_GM(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository) | 
 |  |  |         public StackerCraneJob_GM(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository) | 
 |  |  |         { | 
 |  |  |             _taskService = taskService; | 
 |  |  |             _taskExecuteDetailService = taskExecuteDetailService; | 
 |  |  | 
 |  |  |             _routerService = routerService; | 
 |  |  |             _stationMangerRepository = stationMangerRepository; | 
 |  |  |             _cacheService = cacheService; | 
 |  |  |             _routerRepository = routerRepository; | 
 |  |  |  | 
 |  |  |             string? apiInfoStr = _cacheService.Get("apiInfos"); | 
 |  |  |             if (!string.IsNullOrEmpty(apiInfoStr)) | 
 |  |  | 
 |  |  |                                     task.ExceptionMessage = ""; | 
 |  |  |                                     _taskRepository.UpdateData(task); | 
 |  |  |                                     _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"ç³»ç»èªå¨æµç¨ï¼ä»»å¡ç¶æä»ã{oldState}ã转å°ã{task.TaskState}ã"); | 
 |  |  |  | 
 |  |  |                                     commonStackerCrane.Communicator.Write("DB105.54", (short)1); | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  | 
 |  |  |                         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}"); | 
 |  |  |                             _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"è¾é线åºåºç«ç¹æªé
ç½®,{task.NextAddress}"); | 
 |  |  |                             _taskService.UpdateTaskExceptionMessage(taskNum, $"è¾é线åºåºç«ç¹æªé
ç½®,{task.NextAddress}"); | 
 |  |  |                             return WebResponseContent.Instance.Error($"è¾é线åºåºç«ç¹æªé
ç½®,{task.NextAddress}"); | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         int oldStatus = task.TaskState; | 
 |  |  |                         task.DeviceCode = "AGV_CSJ"; | 
 |  |  |                         task.TaskState = TaskStatusEnum.AGV_Execute.ObjToInt(); | 
 |  |  |                         task.CurrentAddress = stationManger.AGVStationCode; | 
 |  |  |                         task.NextAddress = task.TargetAddress; | 
 |  |  |                         task.DeviceCode = "CL01_GM"; | 
 |  |  |                         task.TaskState = TaskStatusEnum.Line_Execute.ObjToInt(); | 
 |  |  |                         task.CurrentAddress = stationManger.StationCode; | 
 |  |  |                         _taskRepository.UpdateData(task); | 
 |  |  |                         _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"ç³»ç»èªå¨æµç¨,ï¼ä»»å¡ç¶æä»ã{oldStatus}ã转å°ã{task.TaskState}ã"); | 
 |  |  |                         //todo å®æ | 
 |  |  |                     } | 
 |  |  |                     else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup || task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) | 
 |  |  |                     { | 
 |  |  | 
 |  |  |                 if (device != null) | 
 |  |  |                 { | 
 |  |  |                     OtherDevice client = (OtherDevice)device; | 
 |  |  |                     if (client.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode))//åºåºç«å°æªè¢«å ç¨ | 
 |  |  |                     if (!client.GetValue<R_ConveyorLineDB, bool>(R_ConveyorLineDB.Goods, stationManger.StationCode))//åºåºç«å°æªè¢«å ç¨ | 
 |  |  |                     { | 
 |  |  |                         task.NextAddress = stationManger.StackerCraneStationCode; | 
 |  |  |                         _taskRepository.UpdateData(task); | 
 |  |  |                         client.SetValue(GroundStationDBName.R_IsCanPut, true, stationManger.StationCode); | 
 |  |  |                         return task; | 
 |  |  |                     } | 
 |  |  |                 } |