| | |
| | | private readonly ICacheService _cacheService; private readonly IRepository<Dt_Router> _routerRepository; |
| | | private readonly IRepository<Dt_StationManger> _stationMangerRepository; |
| | | private readonly IRepository<Dt_Task> _taskRepository; |
| | | //bool SCres = false; |
| | | |
| | | public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IRepository<Dt_Router> routerRepository, IRepository<Dt_StationManger> stationMangerRepository, IRepository<Dt_Task> taskRepository) |
| | | { |
| | |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | try |
| | | { |
| | | |
| | | SpeStackerCrane speStackerCrane = (SpeStackerCrane)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | if (speStackerCrane != null) |
| | | { |
| | | GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); |
| | | if (!getStackerObject.IsEventSubscribed) |
| | | { |
| | | getStackerObject.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler; |
| | | } |
| | | getStackerObject.CheckStackerCraneTaskCompleted(); |
| | | if (getStackerObject.StackerCraneStatusValue == StackerCraneStatus.Normal) |
| | | { |
| | | //var a = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum); |
| | | Dt_Task? task = GetTasks(speStackerCrane); |
| | | if (task != null) |
| | | { |
| | | WriteInfo("æ¥æ¾å åæºä»»å¡å·", $"ä»»å¡ä¿¡æ¯,ä»»å¡å·:{task.TaskNum}ï¼å åæºç¼å·{speStackerCrane.DeviceCode}"); |
| | | bool sendFlag = true; |
| | | if (sendFlag) |
| | | { |
| | | StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); //转æ¢ä¸ºå åæºä»»å¡ |
| | | if (stackerCraneTaskCommand != null) |
| | | { |
| | | sendFlag = getStackerObject.SendCommand(stackerCraneTaskCommand); //åéå åæºä»»å¡ |
| | | if (sendFlag) |
| | | { |
| | | speStackerCrane.SetValue(StackerCraneDBName.CommandSend, 1);//å¯å¨å½ä»¤ |
| | | speStackerCrane.LastTaskType = task.TaskType; |
| | | task.Dispatchertime = DateTime.Now; |
| | | task.ExceptionMessage = ""; |
| | | |
| | | WebResponseContent webResponseContent = _taskService.UpdateTaskStatusToNext(task.TaskNum); |
| | | //å»¶æ¶1s |
| | | Thread.Sleep(1000); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception) |
| | | { |
| | | |
| | | throw; |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | |
| | | /* |
| | | // æ·»å äºä»¶è®¢é
ç¶ææ è®° |
| | | private static readonly Dictionary<string, bool> _eventSubscribedMap = new Dictionary<string, bool>(); |
| | | private static readonly object _lockObject = new object(); |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | try |
| | | { |
| | | |
| | | SpeStackerCrane speStackerCrane = (SpeStackerCrane)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | if (speStackerCrane != null) |
| | | { |
| | | GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); |
| | | if (!getStackerObject.IsEventSubscribed) |
| | | |
| | | // 使ç¨éç¡®ä¿çº¿ç¨å®å
¨çäºä»¶è®¢é
|
| | | lock (_lockObject) |
| | | { |
| | | getStackerObject.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler; |
| | | string deviceKey = speStackerCrane.DeviceCode; |
| | | if (!_eventSubscribedMap.ContainsKey(deviceKey) || !_eventSubscribedMap[deviceKey]) |
| | | { |
| | | getStackerObject.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler; |
| | | _eventSubscribedMap[deviceKey] = true; |
| | | } |
| | | } |
| | | |
| | | getStackerObject.CheckStackerCraneTaskCompleted(); |
| | | if (getStackerObject.StackerCraneStatusValue == StackerCraneStatus.Normal) |
| | | { |
| | | var a = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum); |
| | | Dt_Task? task = GetTasks(speStackerCrane); |
| | | if (task != null) |
| | | { |
| | |
| | | bool sendFlag = true; |
| | | if (sendFlag) |
| | | { |
| | | StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); |
| | | StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task); //转æ¢ä¸ºå åæºä»»å¡ |
| | | if (stackerCraneTaskCommand != null) |
| | | { |
| | | sendFlag = getStackerObject.SendCommand(stackerCraneTaskCommand); |
| | | sendFlag = getStackerObject.SendCommand(stackerCraneTaskCommand); //åéå åæºä»»å¡ |
| | | if (sendFlag) |
| | | { |
| | | speStackerCrane.SetValue(StackerCraneDBName.CommandSend, 1);//å¯å¨å½ä»¤ |
| | | speStackerCrane.LastTaskType = task.TaskType; |
| | | task.Dispatchertime = DateTime.Now; |
| | | task.ExceptionMessage = ""; |
| | | |
| | | WebResponseContent webResponseContent = _taskService.UpdateTaskStatusToNext(task.TaskNum); |
| | | //å»¶æ¶1s |
| | | Thread.Sleep(1000); |
| | |
| | | } |
| | | } |
| | | } |
| | | catch (Exception) |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | WriteError("å åæºä»»å¡æ§è¡å¼å¸¸", ex.Message); |
| | | throw; |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, StackerCraneTaskCompletedEventArgs e) |
| | | { |
| | | SpeStackerCrane? speStackerCrane = sender as SpeStackerCrane; |
| | | if (speStackerCrane != null) |
| | | { |
| | | // 使ç¨éç¡®ä¿åä¸ä»»å¡ä¸ä¼è¢«å¹¶åå¤ç |
| | | lock (_lockObject) |
| | | { |
| | | if (speStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) |
| | | { |
| | | var currentTaskNum = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum); |
| | | WriteInfo("å åæºä»»å¡å®æ", $"PLCä»»å¡å·:{currentTaskNum}, ç³»ç»ä»»å¡å·:{e.TaskNum}, æ¶é´:{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}"); |
| | | |
| | | _taskService.StackCraneTaskCompleted(e.TaskNum); |
| | | WriteInfo("å åæºä»»å¡å®æåé¦ä»»å¡å·", $"ä»»å¡ä¿¡æ¯,ä»»å¡å·:{e.TaskNum}"); |
| | | speStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); |
| | | |
| | | WriteInfo("å åæºä»»å¡ç¶ææ´æ°", $"ä»»å¡{e.TaskNum}å®æç¶æå·²è®¾ç½®"); |
| | | } |
| | | else |
| | | { |
| | | WriteInfo("å åæºä»»å¡éå¤å®æäºä»¶", $"ä»»å¡å·:{e.TaskNum} 已被å¤çï¼å¿½ç¥éå¤äºä»¶"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | */ |
| | | |
| | | private void CommonStackerCrane_StackerCraneTaskCompletedEventHandler(object? sender, StackerCraneTaskCompletedEventArgs e) |
| | | { |
| | |
| | | { |
| | | var TaskNum = speStackerCrane.GetValue<StackerCraneDBName, Int32>(StackerCraneDBName.CurrentTaskNum); |
| | | WriteInfo("å åæºä»»å¡å®æ", $"ä»»å¡å·:{TaskNum}"); |
| | | _taskService.StackCraneTaskCompleted(e.TaskNum); |
| | | bool res = _taskService.StackCraneTaskCompleted(e.TaskNum); |
| | | if(res == true) |
| | | { |
| | | speStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); |
| | | |
| | | } |
| | | WriteInfo("å åæºä»»å¡å®æåé¦ä»»å¡å·", $"ä»»å¡ä¿¡æ¯,ä»»å¡å·:{e.TaskNum}"); |
| | | speStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); |
| | | return; |
| | | //SCres=true; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·åä»»å¡ |
| | | /// </summary> |
| | |
| | | } |
| | | |
| | | task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); //è·åå
¥åºä»»å¡ |
| | | List<Dt_Task> YKtasks = _taskService.QueryStackerCraneYKTasks(commonStackerCrane.DeviceCode); |
| | | |
| | | |
| | | if (task != null) |
| | | { |
| | | if(task.Roadway=="SC02") return task; //妿æä»»å¡åç´æ¥ä¸åç»å åæº |
| | |
| | | |
| | | Dt_Task dt_Task = _taskService.RequestWMSTaskMovelibrary(task); |
| | | if (dt_Task != null) return dt_Task; |
| | | } |
| | | else if (YKtasks.Count > 0) |
| | | { |
| | | foreach (var item in YKtasks) |
| | | { |
| | | if (item.Roadway == "SC01") |
| | | { |
| | | if (item.Depth == 1) return item; |
| | | //è°åWMSæ¥å£è¿è¡å¤ææ¯å¦éè¦è¿è¡ç§»åº |
| | | Dt_Task dt_Task = OutTaskMovelibrary(item); |
| | | if (dt_Task != null) return dt_Task; |
| | | |
| | | else |
| | | { |
| | | return item; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | return task; |
| | | } |
| | | |