|  |  |  | 
|---|
|  |  |  | using WIDESEAWCS_Tasks; | 
|---|
|  |  |  | using WIDESEAWCS_Core; | 
|---|
|  |  |  | using SqlSugar.Extensions; | 
|---|
|  |  |  | using WIDESEAWCS_Tasks.ConveyorLineJob; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace WIDESEAWCS_Tasks | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订é
ä»»å¡å®æäºä»¶ | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal) | 
|---|
|  |  |  | commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶
æ¶ï¼åæå¨è§¦å䏿¬¡ | 
|---|
|  |  |  | if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶
æ¶ï¼åæå¨è§¦å䏿¬¡ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby) | 
|---|
|  |  |  | Thread.Sleep(1000); | 
|---|
|  |  |  | Dt_Task? task = GetTask(commonStackerCrane); | 
|---|
|  |  |  | if (task != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_Task? task = GetTask(commonStackerCrane); | 
|---|
|  |  |  | if (task != null) | 
|---|
|  |  |  | StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); | 
|---|
|  |  |  | if (stackerCraneTaskCommand != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); | 
|---|
|  |  |  | if (stackerCraneTaskCommand != null) | 
|---|
|  |  |  | bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand); | 
|---|
|  |  |  | if (sendFlag) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand); | 
|---|
|  |  |  | if (sendFlag) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | commonStackerCrane.LastTaskType = task.TaskType; | 
|---|
|  |  |  | task.Dispatchertime = DateTime.Now; | 
|---|
|  |  |  | task.ExceptionMessage = ""; | 
|---|
|  |  |  | _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | commonStackerCrane.Communicator.Write("DB105.54", (short)1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | commonStackerCrane.LastTaskType = task.TaskType; | 
|---|
|  |  |  | task.Dispatchertime = DateTime.Now; | 
|---|
|  |  |  | task.ExceptionMessage = ""; | 
|---|
|  |  |  | _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing); | 
|---|
|  |  |  | commonStackerCrane.Communicator.Write("DB105.54", (short)1); | 
|---|
|  |  |  | //å»¶æ¶1s | 
|---|
|  |  |  | Thread.Sleep(1000); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | StackerCraneTaskCompleted(e.TaskNum, commonStackerCrane.DeviceCode); | 
|---|
|  |  |  | commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); | 
|---|
|  |  |  | if (StackerCraneTaskCompleted(e.TaskNum, commonStackerCrane.DeviceCode).Status) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | task.CurrentAddress = stationManger.StationCode; | 
|---|
|  |  |  | _taskRepository.UpdateData(task); | 
|---|
|  |  |  | _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"ç³»ç»èªå¨æµç¨,ä»»å¡ç¶æä»ã{oldStatus}ã转å°ã{task.TaskState}ã"); | 
|---|
|  |  |  | WriteInfo(deviceCode, $"å åæºä»»å¡å®æ,ä»»å¡å·:{taskNum}"); | 
|---|
|  |  |  | //todo å®æ | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup || task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WriteInfo(deviceCode, $"å åæºä»»å¡å®æ,ä»»å¡å·:{taskNum}"); | 
|---|
|  |  |  | _taskService.TaskCompleted(taskNum); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | 
|---|
|  |  |  | 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.TargetAddress = stationManger.StackerCraneStationCode; | 
|---|
|  |  |  | task.NextAddress = stationManger.StackerCraneStationCode; | 
|---|
|  |  |  | _taskRepository.UpdateData(task); | 
|---|
|  |  |  | return task; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WriteInfo(task.DeviceCode, $"æªæ¾å°åºåºç«å°ã{stationManger.StationDeviceCode}ã对åºçéè®¯å¯¹è±¡ï¼æ æ³å¤æåºåºç«å°æ¯å¦è¢«å ç¨"); | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°åºåºç«å°ã{stationManger.StationDeviceCode}ã对åºçéè®¯å¯¹è±¡ï¼æ æ³å¤æåºåºç«å°æ¯å¦è¢«å ç¨"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | else | 
|---|
|  |  |  | { | 
|---|
|  |  |  | WriteInfo(task.DeviceCode, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³æ ¡éªç«å°"); | 
|---|
|  |  |  | _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³æ ¡éªç«å°"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | { | 
|---|