xiazhengtongxue
2026-03-19 bfcd7f5b405e431a5c07fe3fa77d74c892d4e66b
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/WMSCruJob.cs
@@ -57,12 +57,7 @@
            _taskService=taskService;
        }
        private static readonly object _taskProcessLock = new object();
        private const int TASK_PROCESS_TIMEOUT = 2000; // 2秒超时
        private static readonly object _taskProcessLockPLC = new object();
        private const int TASK_PROCESS_TIMEOUTPLC = 3000; // 2秒超时
        private const int TASK_PROCESS_TIMEOUT = 1000; // 2秒超时
        private readonly Queue<int> _deviceQueueSC = new Queue<int>();
        public Task StartAsync(CancellationToken cancellationToken)
@@ -73,8 +68,8 @@
                _deviceQueueSC.Enqueue(i);
            }
            _timer = new Timer(SCProcessNextDevice, null, TimeSpan.Zero, TimeSpan.FromSeconds(2));
            _timer2 = new Timer(PLCDoDeciceWork, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));
            _timer = new Timer(SCProcessNextDevice, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));
            //_timer2 = new Timer(PLCDoDeciceWork, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));
            return Task.CompletedTask;
        }
@@ -92,7 +87,8 @@
                try
                {
                    SCDoDeviceWork(deviceId);
                    _deviceQueueSC.Enqueue(deviceId);
                    _deviceQueueSC.Enqueue(deviceId);
                    PLCDoDeciceWork();
                }
                catch (Exception ex)
                {
@@ -123,7 +119,11 @@
                foreach (Dt_Task task in taskList)
                {
                    WebResponseContent webResponse = JudgmentIsRelocations(task);
                    if (!webResponse.Status) return;
                    if (!webResponse.Status)
                    {
                        WriteLog.Write_Log("WMS_移库故障", $"移库返回失败内容", "失败", $"移库失败,原因:{webResponse.Message}");
                        return;
                    }
                    WCSginseng result = _taskService.SC_IssueTasks(
                        task.TaskId,
@@ -146,9 +146,8 @@
            }
        }
        private void PLCDoDeciceWork(object state)
        private void PLCDoDeciceWork()
        {
            if (!Monitor.TryEnter(_taskProcessLockPLC, TASK_PROCESS_TIMEOUTPLC)) return;
            try
            {
                // èŽ·å–å½“å‰ä»»åŠ¡æ•°æ®
@@ -157,17 +156,13 @@
                foreach (var task in allTasks)
                {
                    // ä¸‹å‘PLC任务
                    WCSginseng result = _taskService.PLC_IssueTasks(task.TaskId, int.Parse(task.Roadway), task.TaskNum, task.PalletCode, int.Parse(task.PalletType), task.CurrentAddress, task.NextAddress, "");
                    WCSginseng result = _taskService.PLC_IssueTasks(task.TaskId, task.WarehouseId, task.TaskNum, task.PalletCode, int.Parse(task.PalletType), task.CurrentAddress, task.NextAddress, "");
                    UpdateTaskStatus(task, result, (int)OutTaskStatusEnum.PLC_OutExecuting, 2);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"堆垛机完成,下发输送线执行任务失败! åŽŸå› : {ex.Message}");
            }
            finally
            {
                Monitor.Exit(_taskProcessLockPLC);
            }
        }
        
@@ -190,7 +185,7 @@
            else
            {
                task.Remark = result.Message;
                task.NumberSsuances++;
                //task.NumberSsuances++;
            }
            _taskService.Repository.UpdateData(task);