From b1f5b17a608d3d9c06ce216c7e1effc5edcc7b74 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期一, 06 四月 2026 19:53:31 +0800
Subject: [PATCH] 更新机器人工作流逻辑、配置并添加电子表格
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs | 57 ++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 46 insertions(+), 11 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 f696a30..4f2960d 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
@@ -1,5 +1,7 @@
+using Microsoft.Extensions.Logging;
using WIDESEA_Core;
using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.LogHelper;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
@@ -58,22 +60,30 @@
private readonly IRobotTaskService _robotTaskService;
/// <summary>
+ /// 鏃ュ織璁板綍鍣�
+ /// </summary>
+ private readonly ILogger _logger;
+
+ /// <summary>
/// 鏋勯�犲嚱鏁�
/// </summary>
/// <param name="stateManager">鐘舵�佺鐞嗗櫒</param>
/// <param name="clientManager">瀹㈡埛绔鐞嗗櫒</param>
/// <param name="taskProcessor">浠诲姟澶勭悊鍣�</param>
/// <param name="robotTaskService">浠诲姟鏈嶅姟</param>
+ /// <param name="logger">鏃ュ織璁板綍鍣�</param>
public RobotWorkflowOrchestrator(
RobotStateManager stateManager,
RobotClientManager clientManager,
RobotTaskProcessor taskProcessor,
- IRobotTaskService robotTaskService)
+ IRobotTaskService robotTaskService,
+ ILogger logger)
{
_stateManager = stateManager;
_clientManager = clientManager;
_taskProcessor = taskProcessor;
_robotTaskService = robotTaskService;
+ _logger = logger;
}
/// <summary>
@@ -100,33 +110,42 @@
// 妫�鏌ユ槸鍚︽弧瓒宠嚜鍔ㄦ帶鍒舵潯浠讹細
// 1. 杩愯妯″紡涓鸿嚜鍔紙2锛�
// 2. 鎺у埗妯″紡涓哄鎴风鎺у埗锛�1锛�
- // 3. 杩愯鐘舵�佷笉鏄� Running锛堣鏄庡凡瀹屾垚褰撳墠鍔ㄤ綔锛�
- if (latestState.RobotRunMode == 2 && latestState.RobotControlMode == 1 && latestState.OperStatus != "Running")
+ // 3. 杩愯鐘舵�佹槸 Running
+ if (latestState.RobotRunMode == 2 /*&& latestState.RobotControlMode == 1*/ && latestState.OperStatus == "Running")
{
+ if(latestState.CurrentAction == "Picking" || latestState.CurrentAction == "Puting")
+ {
+ return;
+ }
+
// ========== 鍙栬揣瀹屾垚鍚庣殑鏀捐揣澶勭悊 ==========
// 鏉′欢锛�
// - 褰撳墠鍔ㄤ綔鏄� PickFinished 鎴� AllPickFinished锛堝彇璐у畬鎴愶級
// - 鎵嬭噦涓婃湁鐗╂枡锛圧obotArmObject == 1锛�
// - 浠诲姟鐘舵�佷负 RobotPickFinish锛堝凡璁板綍鍙栬揣瀹屾垚锛�
if ((latestState.CurrentAction == "PickFinished" || latestState.CurrentAction == "AllPickFinished")
- && latestState.RobotArmObject == 1
+ && latestState.RobotArmObject == 0
&& task.RobotTaskState == TaskRobotStatusEnum.RobotPickFinish.GetHashCode())
{
+ _logger.LogInformation("ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬪鐞嗗彇璐у畬鎴愶紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+ QuartzLogger.Info($"ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬪鐞嗗彇璐у畬鎴�", latestState.RobotCrane?.DeviceName ?? ipAddress);
// 鍙戦�佹斁璐ф寚浠�
await HandlePickFinishedStateAsync(task, ipAddress);
}
- // ========== 鏀捐揣瀹屾垚鍚庣殑鍙栬揣澶勭悊 ==========
+
+ // ========== 鍒濆鍖栨垨鑰呮斁璐у畬鎴愬悗鐨勫彇璐у鐞� ==========
// 鏉′欢锛�
// - 褰撳墠鍔ㄤ綔鏄� PutFinished銆丄llPutFinished 鎴� null锛堟斁璐у畬鎴愶級
// - 杩愯鐘舵�佷负 Homed锛堝凡褰掍綅锛�
// - 鎵嬭噦涓婃棤鐗╂枡锛圧obotArmObject == 0锛�
// - 浠诲姟鐘舵�佷负 RobotPutFinish 鎴栦笉鏄� RobotExecuting
- else if ((latestState.CurrentAction == "PutFinished" || latestState.CurrentAction == "AllPutFinished" || latestState.CurrentAction == null)
- && latestState.OperStatus == "Homed"
+ else if ((latestState.CurrentAction == "PutFinished" || latestState.CurrentAction == "AllPutFinished" || latestState.CurrentAction.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);
// 鍙戦�佸彇璐ф寚浠�
await HandlePutFinishedStateAsync(task, ipAddress);
}
@@ -155,8 +174,9 @@
if (result)
{
- // 鍙戦�佹垚鍔燂紝璁板綍鏃ュ織
- QuartzLogger.Info($"涓嬪彂鏀捐揣鎸囦护锛屾寚锟�?: {taskString}", task.RobotRoadway);
+ // 鍙戦�佹垚鍔燂紝璁板綍 Info 鏃ュ織
+ _logger.LogInformation("HandlePickFinishedStateAsync锛氫笅鍙戞斁璐ф寚浠ゆ垚鍔燂紝鎸囦护: {TaskString}锛屼换鍔″彿: {TaskNum}", taskString, task.RobotTaskNum);
+ QuartzLogger.Info($"涓嬪彂鏀捐揣鎸囦护鎴愬姛锛屾寚浠�: {taskString}", task.RobotRoadway);
// 鏇存柊浠诲姟鐘舵�佷负"鏈哄櫒浜烘墽琛屼腑"
task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
@@ -174,6 +194,12 @@
await _robotTaskService.UpdateRobotTaskAsync(task);
}
}
+ }
+ else
+ {
+ // 鍙戦�佸け璐ワ紝璁板綍 Error 鏃ュ織
+ _logger.LogError("HandlePickFinishedStateAsync锛氫笅鍙戞斁璐ф寚浠ゅけ璐ワ紝鎸囦护: {TaskString}锛屼换鍔″彿: {TaskNum}", taskString, task.RobotTaskNum);
+ QuartzLogger.Error($"涓嬪彂鏀捐揣鎸囦护澶辫触锛屾寚浠�: {taskString}", task.RobotRoadway);
}
}
@@ -202,6 +228,8 @@
var stateForUpdate = _stateManager.GetState(ipAddress);
if (stateForUpdate == null)
{
+ _logger.LogWarning("HandlePutFinishedStateAsync锛氳幏鍙栫姸鎬佸け璐ワ紝IP: {IpAddress}", ipAddress);
+ QuartzLogger.Warn($"HandlePutFinishedStateAsync锛氳幏鍙栫姸鎬佸け璐ワ紝IP: {ipAddress}", ipAddress);
return;
}
@@ -231,12 +259,19 @@
stateForUpdate.CellBarcode.Add(trayBarcode1);
stateForUpdate.CellBarcode.Add(trayBarcode2);
- // 璁板綍鏃ュ織
- QuartzLogger.Info($"取锟斤拷锟斤拷锟斤拷锟叫撅拷牛锟斤拷锟叫�: {trayBarcode1}+{trayBarcode2}", stateForUpdate.RobotCrane.DeviceName);
+ // 璁板綍鏃ュ織锛氱敓鎴愭墭鐩樻潯鐮佹垚鍔�
+ _logger.LogInformation("HandlePutFinishedStateAsync锛氱敓鎴愭墭鐩樻潯鐮佹垚鍔�: {Barcode1}+{Barcode2}锛屼换鍔″彿: {TaskNum}", trayBarcode1, trayBarcode2, task.RobotTaskNum);
+ QuartzLogger.Info($"鐢熸垚鎵樼洏鏉$爜鎴愬姛: {trayBarcode1}+{trayBarcode2}", stateForUpdate.RobotCrane.DeviceName);
// 鍙戦�佸彇璐ф寚浠�
await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate);
}
+ else
+ {
+ // 鏉$爜鐢熸垚澶辫触锛岃褰曢敊璇棩蹇�
+ _logger.LogError("HandlePutFinishedStateAsync锛氱敓鎴愭墭鐩樻潯鐮佸け璐ワ紝浠诲姟鍙�: {TaskNum}", task.RobotTaskNum);
+ QuartzLogger.Error($"鐢熸垚鎵樼洏鏉$爜澶辫触", stateForUpdate.RobotCrane.DeviceName);
+ }
}
else
{
--
Gitblit v1.9.3