| | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class CommonRGVJob :JobBase, IJob |
| | | public class CommonRGVJob : JobBase, IJob |
| | | { |
| | | private readonly ITaskService _taskService; |
| | | private readonly ITaskRepository _taskRepository; |
| | |
| | | CommonRGV commonRGV = (CommonRGV)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | if (commonRGV != null) |
| | | { |
| | | //if (!commonRGV.IsEventSubscribed) |
| | | //{ |
| | | // commonRGV.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订é
ä»»å¡å®æäºä»¶ |
| | | //} |
| | | |
| | | //commonRGV.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶
æ¶ï¼åæå¨è§¦å䏿¬¡ |
| | | if (commonRGV.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.WorkCompleted)) |
| | | { |
| | | var x = commonRGV.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum); |
| | | RGVTaskFinish(commonRGV, commonRGV.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum)); |
| | | } |
| | | |
| | |
| | | } |
| | | var userTokenIds = tokenInfos?.Select(x => x.Token_ID).ToList(); |
| | | var userIds = tokenInfos?.Select(x => x.UserId).ToList(); |
| | | |
| | | string RGVAutoStatus(bool AutoStatus) => AutoStatus switch |
| | | { |
| | | true => "èæºæ¨¡å¼", |
| | | false => "åæºæ¨¡å¼", |
| | | }; |
| | | string RGVWorkStatus(bool WorkStatus) => WorkStatus switch |
| | | { |
| | | true => "è¿è¡ä¸", |
| | | false => "å¾
æº", |
| | | }; |
| | | string RGVStatus(bool Status) => Status switch |
| | | { |
| | | true => "æ
é", |
| | | false => "æ£å¸¸", |
| | | }; |
| | | object obj = new |
| | | { |
| | | Automatic = commonRGV.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Automatic), |
| | | Fault = commonRGV.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Fault), |
| | | Running = commonRGV.GetValue<StackerCraneDBName, bool>(StackerCraneDBName.Running), |
| | | //commonRGV.StackerCraneAutoStatusDes, |
| | | //commonRGV.StackerCraneWorkStatusDes, |
| | | //commonRGV.DeviceCode, |
| | | //commonRGV.DeviceName, |
| | | //commonRGV.CurrentTaskNum, |
| | | //commonRGV.LastTaskNum, |
| | | Automatic = RGVAutoStatus(commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Automatic)), |
| | | Fault = RGVStatus(commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Fault)), |
| | | Running = RGVWorkStatus(commonRGV.GetValue<RGVDBName, bool>(RGVDBName.Running)), |
| | | LevelPoint = commonRGV.GetValue<RGVDBName, int>(RGVDBName.LevelPoint), |
| | | CurrentTaskNum = commonRGV.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum), |
| | | commonRGV.DeviceCode, |
| | | commonRGV.DeviceName, |
| | | }; |
| | | _noticeService.StackerData(userIds?.FirstOrDefault(), userTokenIds, new { commonRGV.DeviceName, data = obj }); |
| | | _noticeService.RGVData(userIds?.FirstOrDefault(), userTokenIds, new { commonRGV.DeviceName, data = obj }); |
| | | |
| | | #endregion è°ç¨äºä»¶æ»çº¿éç¥å端 |
| | | } |
| | |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | /// <summary> |
| | | /// ä»»å¡å®æäºä»¶è®¢é
çæ¹æ³ |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, WIDESEAWCS_QuartzJob.StackerCrane.StackerCraneTaskCompletedEventArgs e) |
| | | { |
| | | CommonRGV? commonRGV = sender as CommonRGV; |
| | | |
| | | } |
| | | |
| | | |
| | | public void RGVTaskFinish(CommonRGV commonRGV, int TaskNum) |
| | | { |
| | | if (commonRGV != null) |
| | | { |
| | | #region æ¥å¿è®°å½ |
| | | ConsoleHelper.WriteColorLine($"ã{commonRGV.DeviceName}ãå åæºä½ä¸ç¶æï¼ããæ¶é´ã{DateTime.Now}ã", ConsoleColor.Magenta); |
| | | |
| | | string str = $"ã{commonRGV.DeviceName}ãä»»å¡å®æ,ä»»å¡å·ï¼ã{TaskNum}ãæ¶é´ã{DateTime.Now}ã"; |
| | | WriteInfo(commonRGV.DeviceName, str); |
| | | ConsoleHelper.WriteColorLine(str, ConsoleColor.Blue); |
| | | |
| | | #endregion |
| | | |
| | | var task = _taskRepository.QueryFirst(x => x.TaskNum == TaskNum); |
| | | if (task != null) |
| | | { |
| | | if (task.TaskState == (int)TaskInStatusEnum.RGV_Indispatch) |
| | | if (task.TaskState == (int)TaskInStatusEnum.InRetuen) |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.SourceAddress); |
| | | if (stationManager != null) |
| | |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | Thread.Sleep(100); |
| | | var Barcode = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.ConveyorLineBarcode, stationManager.stationChildCode); |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(3), stationManager.stationChildCode); |
| | | |
| | | if (Barcode == null) |
| | | var content = _taskService.RGVTaskCompleted(TaskNum); |
| | | } |
| | | } |
| | | } |
| | | if (task.TaskState == (int)TaskInStatusEnum.RGV_Indispatch) |
| | | { |
| | | if (task.SourceAddress == "3002") |
| | | { |
| | | task.TaskState = (int)TaskInStatusEnum.RGV_IndispatchFinish; |
| | | _taskRepository.UpdateData(task); |
| | | return; |
| | | } |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.SourceAddress); |
| | | if (stationManager != null) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | Thread.Sleep(100); |
| | | |
| | | DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceChildCode == stationManager.stationChildCode && x.DeviceProParamName == "ConveyorLineBarcode").FirstOrDefault(); |
| | | var x = conveyorLine.Communicator.Read(devicePro.DeviceProAddress, 5); |
| | | string Barcode = Encoding.UTF8.GetString(x); |
| | | |
| | | if (Barcode == null || Barcode == "") |
| | | { |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(3), stationManager.stationChildCode); |
| | | commonRGV.SetValue(StackerCraneDBName.PutcargoLocation, Convert.ToSByte(stationManager.stationRemark)); |
| | | commonRGV.SetValue(StackerCraneDBName.TaskNum, Convert.ToInt16(task.TaskNum)); |
| | | // commonRGV.SetValue(StackerCraneDBName.TaskType, Convert.ToSByte(4)); |
| | | task.TaskState = (int)TaskInStatusEnum.InRetuen; |
| | | _taskRepository.UpdateData(task); |
| | | return; |
| | | } |
| | | var content = _taskService.RGVTaskCompleted(TaskNum, Barcode); |
| | |
| | | } |
| | | else |
| | | { |
| | | if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting) |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.TargetAddress && x.stationType == 7); |
| | | if (stationManager != null) |
| | | { |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManager.stationPLC); |
| | | if (device != null) |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | Thread.Sleep(100); |
| | | conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTargetAddress, Convert.ToInt16(stationManager.stationNextChildCode), stationManager.stationChildCode); |
| | | Thread.Sleep(100); |
| | | conveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, Convert.ToInt16(1000), stationManager.stationChildCode); |
| | | Thread.Sleep(100); |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, Convert.ToSByte(2), stationManager.stationChildCode); |
| | | } |
| | | } |
| | | } |
| | | var content = _taskService.RGVTaskCompleted(TaskNum); |
| | | } |
| | | } |
| | |
| | | Dt_Task task; |
| | | if (InStock) |
| | | { |
| | | task = _taskService.QueryRGVExecutingTask(commonRGV.DeviceCode); |
| | | task = _taskService.QueryRGVExecutingTask(commonRGV.DeviceCode, commonRGV.GetValue<RGVDBName, short>(RGVDBName.RGVTaskNum)); |
| | | if (task != null) |
| | | { |
| | | return task; |
| | |
| | | rgvTaskCommand.TaskNum = Convert.ToInt16(task.TaskNum); |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//夿æ¯å¦æ¯å
¥åºä»»å¡ |
| | | { |
| | | //rgvTaskCommand.TaskType = (byte)Convert.ToSByte(16); |
| | | //rgvTaskCommand.TaskType = (byte)Convert.ToSByte(64); éå |
| | | if (task.TaskState == (int)TaskInStatusEnum.InNew) |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.SourceAddress); |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress); |
| | | rgvTaskCommand.TaskType = (byte)Convert.ToSByte(3); |
| | | rgvTaskCommand.PickupLocation = (byte)Convert.ToSByte(stationManager.stationRemark); |
| | | } |
| | |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) |
| | | { |
| | | |
| | | if (task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish) |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.CurrentAddress); |