From b690250002ee04f4309e6a90fd16fbfd9bd959e2 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 01 五月 2026 23:11:23 +0800
Subject: [PATCH] feat(router): 添加托盘操作页面路由
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs | 75 +++++++++++++++++++++++--------------
1 files changed, 47 insertions(+), 28 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
index ecb24ae..3792119 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotJob.cs
@@ -203,46 +203,65 @@
return;
}
- if (state.CurrentAction == "Picking" || state.CurrentAction == "Puting")
- {
- return;
- }
- // 杞鑾峰彇璇ヨ澶囩殑寰呭鐞嗕换鍔�
- // 浼樺厛閫氳繃鐘舵�佷腑缂撳瓨鐨勪换鍔$紪鍙锋煡鎵炬墽琛屼腑鐨勪换鍔�
- Dt_RobotTask? task = null;
- if (state.CurrentTaskNum.HasValue)
- {
- task = _taskProcessor.GetTaskByNum(state.CurrentTaskNum.Value);
- }
+ // 鑾峰彇璇ヨ澶囩殑浜掓枼閿侊紝纭繚 Job 鎵ц涓庢秷鎭鐞嗕簰鏂�
+ var robotLock = _stateManager.GetOrCreateLock(ipAddress);
- // 缂撳瓨鐨勪换鍔″彿鏈壘鍒板搴斾换鍔℃椂锛屾寜璁惧缂栫爜鑾峰彇鏂颁换鍔�
- task ??= _taskProcessor.GetTask(robotCrane);
-
- // 濡傛灉娌℃湁鑾峰彇鍒板緟澶勭悊浠诲姟锛屼笖RobotArmObject涓�1锛堟湁鐗╂枡锛夛紝鍒欒幏鍙栬璁惧鎵ц涓殑浠诲姟
- //if (task == null && state.RobotArmObject == 1)
+ // 閿佽娑堟伅澶勭悊鍣ㄥ崰鐢ㄦ椂鐩存帴璺宠繃鏈 tick锛岀瓑涓嬫璋冨害鍐嶆墽琛�
+ //if (!await robotLock.WaitAsync(TimeSpan.Zero))
//{
- // task = _taskProcessor.GetExecutingTask(robotCrane);
+ // return;
//}
- // 濡傛灉鏈夊緟澶勭悊浠诲姟
- if (task != null)
+ // 鑾峰彇璇ヨ澶囩殑浜掓枼閿侊紝纭繚 Job 鎵ц涓庢秷鎭鐞嗕簰鏂�
+ await robotLock.WaitAsync();
+ try
{
- // 鑾峰彇鏈�鏂扮殑璁惧鐘舵��
- var latestState = _stateManager.GetState(ipAddress);
- if (latestState == null)
+ if (state.CurrentAction == "Picking" || state.CurrentAction == "Puting")
{
- // 鐘舵�佷笉瀛樺湪锛屽彲鑳借澶囨湭鍒濆鍖�
return;
}
- // 妫�鏌ヤ换鍔℃�绘暟鏄惁鏈揪鍒颁笂闄�
- if (latestState.RobotTaskTotalNum < RobotConst.MaxTaskTotalNum)
+ // 杞鑾峰彇璇ヨ澶囩殑寰呭鐞嗕换鍔�
+ // 浼樺厛閫氳繃鐘舵�佷腑缂撳瓨鐨勪换鍔$紪鍙锋煡鎵炬墽琛屼腑鐨勪换鍔�
+ Dt_RobotTask? task = null;
+ if (state.CurrentTaskNum.HasValue)
{
- // 璋冪敤宸ヤ綔娴佺紪鎺掑櫒鎵ц浠诲姟
- // 缂栨帓鍣ㄤ細鏍规嵁褰撳墠鐘舵�佸喅瀹氫笅涓�姝ュ姩浣�
- await _workflowOrchestrator.ExecuteAsync(latestState, task, ipAddress);
+ task = _taskProcessor.GetTaskByNum(state.CurrentTaskNum.Value);
}
+
+ // 缂撳瓨鐨勪换鍔″彿鏈壘鍒板搴斾换鍔℃椂锛屾寜璁惧缂栫爜鑾峰彇鏂颁换鍔�
+ task ??= _taskProcessor.GetTask(robotCrane);
+
+ // 濡傛灉娌℃湁鑾峰彇鍒板緟澶勭悊浠诲姟锛屼笖RobotArmObject涓�1锛堟湁鐗╂枡锛夛紝鍒欒幏鍙栬璁惧鎵ц涓殑浠诲姟
+ //if (task == null && state.RobotArmObject == 1)
+ //{
+ // task = _taskProcessor.GetExecutingTask(robotCrane);
+ //}
+
+ // 濡傛灉鏈夊緟澶勭悊浠诲姟
+ if (task != null)
+ {
+ // 鑾峰彇鏈�鏂扮殑璁惧鐘舵��
+ var latestState = _stateManager.GetState(ipAddress);
+ if (latestState == null)
+ {
+ // 鐘舵�佷笉瀛樺湪锛屽彲鑳借澶囨湭鍒濆鍖�
+ return;
+ }
+
+ // 妫�鏌ヤ换鍔℃�绘暟鏄惁鏈揪鍒颁笂闄�
+ if (latestState.RobotTaskTotalNum < RobotConst.MaxTaskTotalNum)
+ {
+ // 璋冪敤宸ヤ綔娴佺紪鎺掑櫒鎵ц浠诲姟
+ // 缂栨帓鍣ㄤ細鏍规嵁褰撳墠鐘舵�佸喅瀹氫笅涓�姝ュ姩浣�
+ await _workflowOrchestrator.ExecuteAsync(latestState, task, ipAddress);
+ }
+ }
+ }
+ finally
+ {
+ robotLock.Release();
}
}
catch (Exception ex)
--
Gitblit v1.9.3