| | |
| | | _locationInfoService = locationInfoService; |
| | | _taskService=taskService; |
| | | } |
| | | |
| | | private static readonly object _taskProcessLock = new object(); |
| | | private const int TASK_PROCESS_TIMEOUT = 3000; // 3ç§è¶
æ¶ |
| | | |
| | | public Task StartAsync(CancellationToken cancellationToken) |
| | | { |
| | |
| | | return Task.CompletedTask; |
| | | } |
| | | private void DoWorkWheel(object state) |
| | | { |
| | | if (!Monitor.TryEnter(_taskProcessLock, TASK_PROCESS_TIMEOUT)) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | try |
| | | { |
| | | // å®ä¹ç¶æå¸¸éï¼é¿å
éæ³æ°å |
| | | const int PLC_IN_FINISH = (int)InTaskStatusEnum.PLC_InFinish; |
| | |
| | | ProcessInAndNewTasks(tasksToProcess, allTasks, excludedRoadways); //ä¸åå åæº |
| | | ProcessOutFinishTasks(tasksToProcess, allTasks); //ä¸åè¾éçº¿ä»»å¡ |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine($"ä»»å¡å¤çå¼å¸¸ï¼{ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | // å¿
须鿾éï¼å¦åä¼å¯¼è´æ»é |
| | | Monitor.Exit(_taskProcessLock); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | private void ProcessInAndNewTasks(List<Dt_Task> tasksToProcess, List<Dt_Task> allTasks, HashSet<string> excludedRoadways) |
| | | { |
| | |
| | | x.Roadway == task.Roadway && |
| | | (x.TaskStatus == SC_IN_EXECUTING || |
| | | x.TaskStatus == SC_OUT_EXECUTING || |
| | | x.TaskStatus == RELOCATION_EXECUTING)); |
| | | x.TaskStatus == RELOCATION_EXECUTING || x.TaskStatus == RELOCCATION_NEW)); |
| | | |
| | | if (hasExecutingTask) |
| | | continue; |
| | | |
| | | if(task.TaskStatus == OUT_NEW) |
| | | { |
| | | bool SCNewTasks = allTasks.Any(x => x.TaskStatus != OUT_NEW && x.TargetAddress == task.TargetAddress); |
| | | if (SCNewTasks) |
| | | continue; |
| | | } |
| | | |
| | | //夿æ¯å¦éè¦ç§»åº |
| | | WebResponseContent webResponse=JudgmentIsRelocations(task); |
| | |
| | | _taskService.AddData(task); |
| | | _locationInfoService.UpdateData(dt_Locations); |
| | | _stockInfoService.UpdateData(dt_StockInfo); |
| | | //_stockInfoService.Repository.AddData(dt_StockInfo); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | //è¿è¡ä¸åç»å åæºä»»å¡ |