|  |  |  | 
|---|
|  |  |  | using Microsoft.AspNetCore.Components.Routing; | 
|---|
|  |  |  | using Newtonsoft.Json; | 
|---|
|  |  |  | using Quartz; | 
|---|
|  |  |  | using System; | 
|---|
|  |  |  | using System.Collections.Generic; | 
|---|
|  |  |  | 
|---|
|  |  |  | using System.Linq; | 
|---|
|  |  |  | using System.Text; | 
|---|
|  |  |  | using System.Threading.Tasks; | 
|---|
|  |  |  | using WIDESEAWCS_Common.APIEnum; | 
|---|
|  |  |  | using WIDESEAWCS_Common.TaskEnum; | 
|---|
|  |  |  | using WIDESEAWCS_Core; | 
|---|
|  |  |  | using WIDESEAWCS_Core.Caches; | 
|---|
|  |  |  | using WIDESEAWCS_Core.Enums; | 
|---|
|  |  |  | using WIDESEAWCS_Core.Helper; | 
|---|
|  |  |  | using WIDESEAWCS_IBasicInfoRepository; | 
|---|
|  |  |  | 
|---|
|  |  |  | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; | 
|---|
|  |  |  | using WIDESEAWCS_Tasks.HoisterJob; | 
|---|
|  |  |  | using WIDESEAWCS_Tasks.StackerCraneJob; | 
|---|
|  |  |  | using WIDESEAWCS_Tasks.é»çä»; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace WIDESEAWCS_Tasks | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | [DisallowConcurrentExecution] | 
|---|
|  |  |  | public class StackerCraneJob_YM : JobBase, IJob | 
|---|
|  |  |  | { | 
|---|
|  |  |  | private readonly ICacheService _cacheService; | 
|---|
|  |  |  | private readonly ITaskService _taskService; | 
|---|
|  |  |  | private readonly ITaskExecuteDetailService _taskExecuteDetailService; | 
|---|
|  |  |  | private readonly ITaskRepository _taskRepository; | 
|---|
|  |  |  | private readonly IRouterService _routerService; | 
|---|
|  |  |  | private readonly IStationMangerRepository _stationMangerRepository; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public StackerCraneJob_YM(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository) | 
|---|
|  |  |  | public StackerCraneJob_YM(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _cacheService = cacheService; | 
|---|
|  |  |  | _taskService = taskService; | 
|---|
|  |  |  | _taskExecuteDetailService = taskExecuteDetailService; | 
|---|
|  |  |  | _taskRepository = taskRepository; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public Task Execute(IJobExecutionContext context) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | try | 
|---|
|  |  |  | bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object value); | 
|---|
|  |  |  | if (flag && value != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | CommonStackerCrane commonStackerCrane = (CommonStackerCrane)context.JobDetail.JobDataMap.Get("JobParams"); | 
|---|
|  |  |  | if (commonStackerCrane != null) | 
|---|
|  |  |  | CommonStackerCrane commonStackerCrane = (CommonStackerCrane)value; | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (!commonStackerCrane.IsEventSubscribed) | 
|---|
|  |  |  | if (commonStackerCrane != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订é
ä»»å¡å®æäºä»¶ | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶
æ¶ï¼åæå¨è§¦å䏿¬¡ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby) | 
|---|
|  |  |  | if (!commonStackerCrane.IsEventSubscribed) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订é
ä»»å¡å®æäºä»¶ | 
|---|
|  |  |  | } | 
|---|
|  |  |  | commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶
æ¶ï¼åæå¨è§¦å䏿¬¡ | 
|---|
|  |  |  | if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Thread.Sleep(1000); | 
|---|
|  |  |  | Dt_Task? task = GetTask(commonStackerCrane); | 
|---|
|  |  |  | if (task != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | if (sendFlag) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | commonStackerCrane.LastTaskType = task.TaskType; | 
|---|
|  |  |  | int oldState = task.TaskState; | 
|---|
|  |  |  | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | task.TaskState = TaskInStatusEnum.SC_InExecuting.ObjToInt(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | task.TaskState = TaskOutStatusEnum.SC_OutExecuting.ObjToInt(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | _taskRepository.UpdateData(task); | 
|---|
|  |  |  | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"ç³»ç»èªå¨æµç¨ï¼ä»»å¡ç¶æä»ã{oldState}ã转å°ã{task.TaskState}ã"); | 
|---|
|  |  |  | task.Dispatchertime = DateTime.Now; | 
|---|
|  |  |  | task.ExceptionMessage = ""; | 
|---|
|  |  |  | _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing); | 
|---|
|  |  |  | //å»¶æ¶1s | 
|---|
|  |  |  | Thread.Sleep(1000); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WriteError(nameof(CommonStackerCraneJob), ex.Message, ex); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WriteError(commonStackerCrane.DeviceName, ex.Message, ex); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return Task.CompletedTask; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane; | 
|---|
|  |  |  | if (commonStackerCrane != null) | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WriteInfo(commonStackerCrane.DeviceName, $"读åå°ä»»å¡å®æä¿¡å·,{e.TaskNum}"); | 
|---|
|  |  |  | if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) | 
|---|
|  |  |  | if (commonStackerCrane != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == e.TaskNum); | 
|---|
|  |  |  | if (task != null) | 
|---|
|  |  |  | if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) | 
|---|
|  |  |  | { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | WriteDebug(commonStackerCrane.DeviceName, $"读åå°ä»»å¡å®æä¿¡å·,{e.TaskNum}"); | 
|---|
|  |  |  | Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == e.TaskNum); | 
|---|
|  |  |  | if (task != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _taskService.TaskCompleted(e.TaskNum); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WriteError(commonStackerCrane.DeviceName, $"读åå°ä»»å¡å®æä¿¡å·,æªæ¾å°å¯¹åºçä»»å¡ä¿¡æ¯,{e.TaskNum}"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WriteInfo(commonStackerCrane.DeviceName, $"读åå°ä»»å¡å®æä¿¡å·,æªæ¾å°å¯¹åºçä»»å¡ä¿¡æ¯,{e.TaskNum}"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WriteError(commonStackerCrane?.DeviceCode ?? nameof(StackerCraneJob_YM), ex.Message, ex); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress).Select(x => x.ChildPosi).ToList(); | 
|---|
|  |  |  | List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress,task.TaskType).Select(x => x.ChildPosi).ToList(); | 
|---|
|  |  |  | List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes); | 
|---|
|  |  |  | foreach (var item in tasks) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | /// <returns>妿æªè¢«å ç¨ï¼è¿åä¼ å
¥çä»»å¡ä¿¡æ¯ï¼å¦åï¼è¿ånull</returns> | 
|---|
|  |  |  | private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.TargetAddress && x.StackerCraneCode == task.Roadway); | 
|---|
|  |  |  | Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.TargetAddress && x.StackerCraneCode == task.DeviceCode); | 
|---|
|  |  |  | if (stationManger != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode); | 
|---|
|  |  |  | if (device != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | OtherDevice client = (OtherDevice)device; | 
|---|
|  |  |  | if (client.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode))//åºåºç«å°æªè¢«å ç¨ | 
|---|
|  |  |  | if (client.GetValue<HoisterDBName, bool>(HoisterDBName.Tray, stationManger.StationCode))//åºåºç«å°æªè¢«å ç¨ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | task.TargetAddress = stationManger.StackerCraneStationCode; | 
|---|
|  |  |  | task.NextAddress = stationManger.StackerCraneStationCode; | 
|---|
|  |  |  | _taskRepository.UpdateData(task); | 
|---|
|  |  |  | return task; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | stackerCraneTaskCommand.TrayType = 1; | 
|---|
|  |  |  | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//夿æ¯å¦æ¯å
¥åºä»»å¡ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.CurrentAddress, task.Roadway); | 
|---|
|  |  |  | //if (routers.Count > 0) | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | string[] startCodes = task.CurrentAddress.Split("-"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(startCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]); | 
|---|
|  |  |  | if (startCodes.Length == 3) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.StartRow = Convert.ToInt16(startCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(startCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"å
¥åºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); | 
|---|
|  |  |  | WriteError(task.DeviceCode, $"å
¥åºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | string[] targetCodes = task.NextAddress.Split("-"); | 
|---|
|  |  |  | if (targetCodes.Length == 5) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[2]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[3]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //æ°æ®é
ç½®é误 | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"å
¥åºä»»å¡ç»ç¹é误ï¼ç»ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | WriteError(task.DeviceCode, $"å
¥åºä»»å¡ç»ç¹é误ï¼ç»ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string[] targetCodes = task.NextAddress.Split("-"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (targetCodes.Length == 3) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); | 
|---|
|  |  |  | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //æ°æ®é
ç½®é误 | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"å
¥åºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"åºåºä»»å¡ç»ç¹é误ï¼ç»ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | WriteError(task.DeviceCode, $"åºåºä»»å¡ç»ç¹é误ï¼ç»ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | //else | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³è·å对åºçå åæºåè´§ç«å°ä¿¡æ¯"); | 
|---|
|  |  |  | //    return null; | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //List<Dt_Router> routers = _routerService.QueryNextRoutes(task.Roadway, task.TargetAddress); | 
|---|
|  |  |  | //if (routers.Count > 0) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | string[] sourceCodes = task.CurrentAddress.Split("-"); | 
|---|
|  |  |  | if (sourceCodes.Length == 5) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string[] targetCodes = task.NextAddress.Split("-"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | string[] sourceCodes = task.CurrentAddress.Split("-"); | 
|---|
|  |  |  | if (sourceCodes.Length == 3) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //æ°æ®é
ç½®é误 | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"åºåºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //else | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³è·å对åºçå åæºæ¾è´§ç«å°ä¿¡æ¯"); | 
|---|
|  |  |  | //    return null; | 
|---|
|  |  |  | //} | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //æ°æ®é
ç½®é误 | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"åºåºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); | 
|---|
|  |  |  | WriteError(task.DeviceCode, $"åºåºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string[] targetCodes = task.NextAddress.Split("-"); | 
|---|
|  |  |  | if (targetCodes.Length == 3) | 
|---|
|  |  |  | if (targetCodes.Length == 5) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[2]); | 
|---|
|  |  |  | stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[3]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //æ°æ®é
ç½®é误 | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"ç§»åºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"ç§»åºä»»å¡ç»ç¹é误ï¼ç»ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | WriteError(task.DeviceCode, $"ç§»åºä»»å¡ç»ç¹é误ï¼ç»ç¹ï¼ã{task.NextAddress}ã"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | string[] sourceCodes = task.CurrentAddress.Split("-"); | 
|---|
|  |  |  | if (sourceCodes.Length == 3) | 
|---|
|  |  |  | if (sourceCodes.Length == 5) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[2]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[1]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[2]); | 
|---|
|  |  |  | stackerCraneTaskCommand.StartLayer = Convert.ToInt16(sourceCodes[3]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | //æ°æ®é
ç½®é误 | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"ç§»åºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); | 
|---|
|  |  |  | WriteError(task.DeviceCode, $"ç§»åºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|