From 0b2869539598059704e1d208e2bcb18603b0fe0f Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 01 五月 2026 00:00:30 +0800
Subject: [PATCH] feat(出库时效): 添加出库时效配置功能
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs | 65 +++++++++++++++++++++-----------
1 files changed, 43 insertions(+), 22 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 158d35c..6d8f9a7 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/Workflow/RobotWorkflowOrchestrator.cs
@@ -118,7 +118,7 @@
// - 鎵嬭噦涓婃湁鐗╂枡锛圧obotArmObject == 1锛�
// - 浠诲姟鐘舵�佷负 RobotPickFinish锛堝凡璁板綍鍙栬揣瀹屾垚锛�
if ((latestState.CurrentAction == "PickFinished" || latestState.CurrentAction == "AllPickFinished")
- && (latestState.RobotArmObject.IsNullOrEmpty() || latestState.RobotArmObject == 1)
+ //&& (latestState.RobotArmObject.IsNullOrEmpty() || latestState.RobotArmObject == 1)
&& task.RobotTaskState == TaskRobotStatusEnum.RobotPickFinish.GetHashCode())
{
QuartzLogHelper.LogInfo(_logger, $"ExecuteAsync锛氭弧瓒虫斁璐ф潯浠讹紝寮�濮嬩笅鍙戞斁璐т换鍔�,浠诲姟鍙�: {task.RobotTaskNum}", latestState.RobotCrane?.DeviceName ?? ipAddress);
@@ -133,7 +133,7 @@
// - 鎵嬭噦涓婃棤鐗╂枡锛圧obotArmObject == 0锛�
// - 浠诲姟鐘舵�佷负 RobotPutFinish 鎴栦笉鏄� RobotExecuting
else if ((latestState.CurrentAction == "PutFinished" || latestState.CurrentAction == "AllPutFinished" || latestState.CurrentAction.IsNullOrEmpty())
- && (latestState.RobotArmObject.IsNullOrEmpty() || latestState.RobotArmObject == 0)
+ //&& (latestState.RobotArmObject.IsNullOrEmpty() || latestState.RobotArmObject == 0)
&& (task.RobotTaskState == TaskRobotStatusEnum.RobotPutFinish.GetHashCode() || task.RobotTaskState != TaskRobotStatusEnum.RobotExecuting.GetHashCode()))
{
QuartzLogHelper.LogInfo(_logger, $"ExecuteAsync锛氭弧瓒冲彇璐ф潯浠讹紝寮�濮嬩笅鍙戝彇璐т换鍔★紝浠诲姟鍙�: {task.RobotTaskNum}", latestState.RobotCrane?.DeviceName ?? ipAddress);
@@ -168,6 +168,9 @@
int currentCompletedCount = state?.RobotTaskTotalNum ?? 0;
bool isFlowA = task.RobotSourceAddressLineCode is "11001" or "11010";
+
+ await _taskProcessor.SendSocketRobotNumAsync(task, state, false);
+ Thread.Sleep(500);
// ==================== Phase 2: 鏀炬甯哥數鑺埌鐩爣鎵樼洏锛堜袱娴佸悜鐩稿悓锛�====================
// PickFinished 鍒拌揪锛歅hase 1 鐨� Pick 鍛戒护瀹屾垚锛岀幇鍦ㄤ笅鍙� Put 鍛戒护鏀炬甯哥數鑺�
@@ -239,8 +242,6 @@
return;
}
- // 闈炴壒娆℃ā寮忔垨鍏朵粬闃舵涓嶄笅鍙戞寚浠�
- return;
}
// 闈炴崲鐩樹换鍔★細浣跨敤鍘熸湁鏍煎紡
@@ -270,10 +271,11 @@
if (stateToUpdate != null)
{
stateToUpdate.CurrentTask = task;
+ stateToUpdate.CurrentTaskNum = task.RobotTaskNum;
if (_stateManager.TryUpdateStateSafely(ipAddress, stateToUpdate))
{
- await _robotTaskService.UpdateRobotTaskAsync(task);
+ //await _robotTaskService.UpdateRobotTaskAsync(task);
}
}
}
@@ -327,36 +329,49 @@
// 妫�鏌ョ數姹犳槸鍚﹀凡鍒颁綅
if (!stateForUpdate.BatteryArrived)
{
+ QuartzLogHelper.LogError(_logger, $"HandlePutFinishedStateAsync锛氱數鑺湭鍒颁綅锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
return;
}
// 璇诲彇绾夸綋鐢佃姱鏉$爜
- string trayBarcode1 = RobotBarcodeGenerator.GenerateTrayBarcode("DB40.990");
- string trayBarcode2 = RobotBarcodeGenerator.GenerateTrayBarcode("DB40.1020");
+ string trayBarcode2 = RobotBarcodeGenerator.GenerateTrayBarcode("DB40.990");
+ string trayBarcode1 = RobotBarcodeGenerator.GenerateTrayBarcode("DB40.1020");
// 濡傛灉鏉$爜鐢熸垚鎴愬姛
if (!string.IsNullOrEmpty(trayBarcode1) && !string.IsNullOrEmpty(trayBarcode2))
{
- if (stateForUpdate.CellBarcode.Contains(trayBarcode1) || stateForUpdate.CellBarcode.Contains(trayBarcode2))
- {
- QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栫殑鎵樼洏鏉$爜宸插瓨鍦紝鍙兘瀛樺湪閲嶅锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
+ //if (stateForUpdate.CellBarcode.Contains(trayBarcode1) || stateForUpdate.CellBarcode.Contains(trayBarcode2))
+ //{
+ // QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栫殑鐢佃姱鏉$爜宸插瓨鍦紝鍙兘瀛樺湪閲嶅锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
- // 鍙戦�佸彇璐ф寚浠� 鏍囪鎵爜NG锛屾斁璐ф椂涓嶄娇鐢ㄨ繖浜涙潯鐮侊紝骞舵斁鍏G鍙�
- //await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
- return;
- }
- else
+ // // 鍙戦�佸彇璐ф寚浠� 鏍囪鎵爜NG锛屾斁璐ф椂涓嶄娇鐢ㄨ繖浜涙潯鐮侊紝骞舵斁鍏G鍙�
+ // //await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate, true);
+ // return;
+ //}
+ //else
{
- QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栫殑鎵樼洏鏉$爜鍞竴锛岀户缁墽琛岋紝浠诲姟鍙�: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
-
- // 灏嗘潯鐮佹坊鍔犲埌鐘舵�佷腑锛屼緵鍚庣画鏀捐揣鏃朵娇鐢�
- stateForUpdate.CellBarcode = new List<string>()
+ if (trayBarcode1.Length < 13 || trayBarcode2.Length < 13)
{
- trayBarcode1,trayBarcode2
+ QuartzLogHelper.LogError(_logger, $"HandlePutFinishedStateAsync锛氱數鑺潯鐮侀暱搴︿笉杈炬爣锛屼换鍔″彿: {task.RobotTaskNum}锛岃鍙栫數鑺潯鐮佹垚鍔�: 銆恵trayBarcode1}銆�-----銆恵trayBarcode2}銆�", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
+ return;
+ }
+
+ QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栫殑鐢佃姱鏉$爜鍞竴锛岀户缁墽琛岋紝浠诲姟鍙�: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
+
+ // 灏嗘潯鐮佺疮绉埌 CellBarcode锛堝幓閲嶏級锛屽苟璁剧疆褰撳墠鎵规鏉$爜
+ if (!stateForUpdate.CellBarcode.Contains(trayBarcode1))
+ stateForUpdate.CellBarcode.Add(trayBarcode1);
+ if (!stateForUpdate.CellBarcode.Contains(trayBarcode2))
+ stateForUpdate.CellBarcode.Add(trayBarcode2);
+
+ // 璁剧疆褰撳墠鎵规鏉$爜锛岀敤浜� WMS 鎻愪氦
+ stateForUpdate.CurrentBatchBarcodes = new List<string>()
+ {
+ trayBarcode1, trayBarcode2
};
}
// 璁板綍鏃ュ織锛氳鍙栨墭鐩樻潯鐮佹垚鍔�
- QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栨墭鐩樻潯鐮佹垚鍔�: 銆恵trayBarcode1}銆�-----銆恵trayBarcode2}銆戯紝浠诲姟鍙�: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
+ QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氳鍙栫數鑺潯鐮佹垚鍔�: 銆恵trayBarcode1}銆�-----銆恵trayBarcode2}銆戯紝浠诲姟鍙�: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
// 鍙戦�佸彇璐ф寚浠�
await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate);
@@ -382,13 +397,19 @@
// 鍒ゆ柇娴佸悜锛坣ull-safe锛�
bool isFlowA = task.RobotSourceAddressLineCode is "11001" or "11010";
+ await _taskProcessor.SendSocketRobotNumAsync(task, stateForUpdate);
+ Thread.Sleep(500);
+
// 鐩爣鏁伴噺涓�48锛氱洿鎺ヨ蛋鍘熸湁閫昏緫锛屼笉杩涘叆鎵规妯″紡
- if (targetNormalCount == targetTotal)
+ if (targetNormalCount + currentCompletedCount == targetTotal)
{
+ QuartzLogHelper.LogInfo(_logger, $"HandlePutFinishedStateAsync锛氱洰鏍囨暟閲忓凡杈�48锛岀洿鎺ヤ笅鍙戝彇璐ф寚浠わ紝浠诲姟鍙�: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
await _taskProcessor.SendSocketRobotPickAsync(task, stateForUpdate);
return;
}
+ QuartzLogHelper.LogDebug(_logger,$"HandlePutFinishedStateAsync锛氭崲鐩樹换鍔$洰鏍囨暟閲�: {targetNormalCount}锛屽綋鍓嶅凡瀹屾垚鏁伴噺: {currentCompletedCount}锛屾祦鍚�: {(isFlowA ? "A" : "B")}锛屼换鍔″彿: {task.RobotTaskNum}", stateForUpdate?.RobotCrane?.DeviceName ?? ipAddress);
+
// 鍒濆鍖栨壒娆℃ā寮�
if (stateForUpdate.ChangePalletPhase == 0)
{
--
Gitblit v1.9.3