From bd40cc9e7dd6352915568ce49baa4accd1d9645b Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期六, 18 四月 2026 14:23:35 +0800
Subject: [PATCH] feat: 添加机器人任务处理逻辑和消息去重功能
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs | 42 +++++++++++++++++++++++++++---------------
1 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
index 2ddad09..05f2357 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
@@ -112,7 +112,7 @@
// 1. 杩愯妯″紡涓鸿嚜鍔紙2锛�
// 2. 鎺у埗妯″紡涓哄鎴风鎺у埗锛�1锛�
// 3. 杩愯鐘舵�佹槸 Running
- if (latestState.RobotRunMode == 2 /*&& latestState.RobotControlMode == 1*/ && latestState.OperStatus == "Running" && latestState.Homed == "Homed")
+ if (latestState.RobotRunMode == 2 /*&& latestState.RobotControlMode == 1*/ && latestState.OperStatus == "Running" && (latestState.Homed == "Homed" || latestState.Homed.IsNullOrEmpty()))
{
// ========== 鍙栬揣瀹屾垚鍚庣殑鏀捐揣澶勭悊 ==========
// 鏉′欢锛�
@@ -120,11 +120,11 @@
// - 鎵嬭噦涓婃湁鐗╂枡锛圧obotArmObject == 1锛�
// - 浠诲姟鐘舵�佷负 RobotPickFinish锛堝凡璁板綍鍙栬揣瀹屾垚锛�
if ((latestState.CurrentAction == "PickFinished" || latestState.CurrentAction == "AllPickFinished")
- && latestState.RobotArmObject == 1
+ && (latestState.RobotArmObject.IsNullOrEmpty() || latestState.RobotArmObject == 1)
&& task.RobotTaskState == TaskRobotStatusEnum.RobotPickFinish.GetHashCode())
{
- _logger.LogInformation("ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬪鐞嗗彇璐у畬鎴愶紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
- QuartzLogger.Info($"ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬪鐞嗗彇璐у畬鎴�", latestState.RobotCrane?.DeviceName ?? ipAddress);
+ _logger.LogInformation("ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬩笅鍙戞斁璐т换鍔★紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+ QuartzLogger.Info($"ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬩笅鍙戞斁璐т换鍔�", latestState.RobotCrane?.DeviceName ?? ipAddress);
// 鍙戦�佹斁璐ф寚浠�
await HandlePickFinishedStateAsync(task, ipAddress);
}
@@ -136,12 +136,12 @@
// - 鎵嬭噦涓婃棤鐗╂枡锛圧obotArmObject == 0锛�
// - 浠诲姟鐘舵�佷负 RobotPutFinish 鎴栦笉鏄� RobotExecuting
else if ((latestState.CurrentAction == "PutFinished" || latestState.CurrentAction == "AllPutFinished" || latestState.CurrentAction.IsNullOrEmpty())
- && latestState.RobotArmObject == 0
+ && (latestState.RobotArmObject.IsNullOrEmpty() || latestState.RobotArmObject == 0)
&& (task.RobotTaskState == TaskRobotStatusEnum.RobotPutFinish.GetHashCode()
|| task.RobotTaskState != TaskRobotStatusEnum.RobotExecuting.GetHashCode()))
{
- _logger.LogInformation("ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬪鐞嗘斁璐у畬鎴愶紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
- QuartzLogger.Info($"ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬪鐞嗘斁璐у畬鎴�", latestState.RobotCrane?.DeviceName ?? ipAddress);
+ _logger.LogInformation("ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬩笅鍙戝彇璐т换鍔★紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+ QuartzLogger.Info($"ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬩笅鍙戝彇璐т换鍔�", latestState.RobotCrane?.DeviceName ?? ipAddress);
// 鍙戦�佸彇璐ф寚浠�
await HandlePutFinishedStateAsync(task, ipAddress);
}
@@ -236,7 +236,7 @@
// 缁勭洏浠诲姟锛氭斁璐ч渶鍒ゆ柇鏄惁NG锛屽鏋淣G鍒欐斁鍒癗G鍙�
if (state.IsScanNG)
{
- taskString = $"Putbattery,NG";
+ taskString = $"Putbattery,4";
}
else
{
@@ -316,6 +316,11 @@
// 濡傛灉鏄粍鐩樹换鍔�
if (task.RobotTaskType == RobotTaskTypeEnum.GroupPallet.GetHashCode())
{
+
+ //if (!stateForUpdate.BatteryArrived)
+ //{
+ // return;
+ //}
// 璇诲彇绾夸綋鐢佃姱鏉$爜
string trayBarcode1 = RobotBarcodeGenerator.GenerateTrayBarcode("DB40.990");
string trayBarcode2 = RobotBarcodeGenerator.GenerateTrayBarcode("DB40.1020");
@@ -331,15 +336,21 @@
// 鏉$爜閲嶅锛岃褰曢敊璇棩蹇楀苟鍋滄鍚庣画鎿嶄綔(鍚庣画鏀捐揣鏃朵細鐢ㄥ埌杩欎簺鏉$爜淇℃伅锛屼緵鍚庣画鏀捐揣鏃朵娇鐢紝璋冭瘯鍚庡彲鑳戒細鍙栨秷姝ら�昏緫)
// 鍙戦�佸彇璐ф寚浠� 鏍囪鎵爜NG锛屾斁璐ф椂涓嶄娇鐢ㄨ繖浜涙潯鐮侊紝骞舵斁鍏G鍙�
- await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
+ //await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
+ return;
}
else
{
_logger.LogInformation("HandlePutFinishedStateAsync锛氳鍙栫殑鎵樼洏鏉$爜鍞竴锛岀户缁墽琛岋紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
QuartzLogger.Info($"璇诲彇鐨勬墭鐩樻潯鐮佸敮涓�锛岀户缁墽琛�", stateForUpdate.RobotCrane.DeviceName);
+ stateForUpdate.CellBarcode = new List<string>()
+ {
+ trayBarcode1,trayBarcode2
+ };
+
// 灏嗘潯鐮佹坊鍔犲埌鐘舵�佷腑锛屼緵鍚庣画鏀捐揣鏃朵娇鐢�
- stateForUpdate.CellBarcode.Add(trayBarcode1);
- stateForUpdate.CellBarcode.Add(trayBarcode2);
+ //stateForUpdate.CellBarcode.Add(trayBarcode1);
+ //stateForUpdate.CellBarcode.Add(trayBarcode2);
}
@@ -348,7 +359,7 @@
QuartzLogger.Info($"璇诲彇鎵樼洏鏉$爜鎴愬姛: {trayBarcode1}+{trayBarcode2}", stateForUpdate.RobotCrane.DeviceName);
// 鍙戦�佸彇璐ф寚浠�
- await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, false);
+ await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate);
}
else
{
@@ -358,7 +369,8 @@
// 鍙戦�佸彇璐ф寚浠� 鏍囪鎵爜NG锛屾斁璐ф椂涓嶄娇鐢ㄨ繖浜涙潯鐮侊紝骞舵斁鍏G鍙�
- await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
+ //await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
+ return;
}
}
else if (task.RobotTaskType == RobotTaskTypeEnum.ChangePallet.GetHashCode())
@@ -373,7 +385,7 @@
// 鐩爣鏁伴噺涓�48锛氱洿鎺ヨ蛋鍘熸湁閫昏緫锛屼笉杩涘叆鎵规妯″紡
if (targetNormalCount == targetTotal)
{
- await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, false);
+ await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate);
return;
}
@@ -542,7 +554,7 @@
else
{
// 闈炵粍鐩樹换鍔★紝鐩存帴鍙戦�佸彇璐ф寚浠�
- await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, false);
+ await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate);
}
}
}
--
Gitblit v1.9.3