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/RobotMessageHandler.cs | 81 ++++++++++++++++++++++------------------
1 files changed, 45 insertions(+), 36 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs
index e67abf1..7a78510 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/RobotJob/RobotMessageHandler.cs
@@ -1,8 +1,6 @@
-using Microsoft.Extensions.Logging;
+using Serilog;
using System.Net.Sockets;
using WIDESEAWCS_Common;
-using WIDESEAWCS_Core.LogHelper;
-using WIDESEAWCS_Model.Models;
using WIDESEAWCS_Tasks.Workflow.Abstractions;
namespace WIDESEAWCS_Tasks
@@ -45,7 +43,7 @@
/// <summary>
/// 鏃ュ織璁板綍鍣�
/// </summary>
- private readonly ILogger<RobotJob> _logger;
+ private readonly ILogger _logger;
/// <summary>
/// 鏋勯�犲嚱鏁�
@@ -60,7 +58,7 @@
RobotStateManager stateManager,
IRobotSimpleCommandHandler simpleCommandHandler,
IRobotPrefixCommandHandler prefixCommandHandler,
- ILogger<RobotJob> logger)
+ ILogger logger)
{
_socketClientGateway = socketClientGateway;
_stateManager = stateManager;
@@ -91,49 +89,60 @@
public async Task<string?> HandleMessageReceivedAsync(string message, bool isJson, TcpClient client)
{
var state = _stateManager.GetState(client.Client.RemoteEndPoint.ToString());
- if(state.OperStatus == message)
- {
- // 澶勭悊鎴愬姛鍚庯紝灏嗗師娑堟伅鍥炲啓鍒板鎴风锛堜繚鎸佸師鏈夎涓猴級
- await _socketClientGateway.SendMessageAsync(client, message);
- }
- // 璁板綍鎺ユ敹鍒扮殑娑堟伅鏃ュ織
- _logger.LogInformation($"鎺ユ敹鍒板鎴风銆恵state.RobotCrane?.DeviceName}銆戝彂閫佹秷鎭�恵message}銆�");
- QuartzLogger.Info($"鎺ユ敹鍒板鎴风娑堟伅銆恵message}銆�", state.RobotCrane?.DeviceName);
- // 妫�鏌ヤ换鍔℃�绘暟鏄惁鏈揪鍒颁笂闄�
- if (state.RobotTaskTotalNum > RobotConst.MaxTaskTotalNum)
+ // 璁惧鐘舵�佷笉瀛樺湪鏃剁洿鎺ヨ繑鍥烇紝閬垮厤鍚庣画绌哄紩鐢�
+ if (state == null)
{
- _logger.LogInformation($"鎺ユ敹鍒板鎴风銆恵state.RobotCrane?.DeviceName}銆戝彂閫佹秷鎭�恵message}銆�");
- QuartzLogger.Info($"鎺ユ敹鍒板鎴风娑堟伅銆恵message}銆�", state.RobotCrane?.DeviceName);
- await _socketClientGateway.SendMessageAsync(client, message);
return null;
}
- // 灏嗘秷鎭浆鎹负灏忓啓锛堢敤浜庣畝鍗曞懡浠ゅ尮閰嶏級
- string messageLower = message.ToLowerInvariant();
-
- // 灏濊瘯鐢ㄧ畝鍗曞懡浠ゅ鐞嗗櫒澶勭悊
- // 绠�鍗曞懡浠ゅ寘鎷細homing銆乭omed銆乺unning銆乸ausing銆乺unmode銆乧ontrolmode 绛�
- if (await _simpleCommandHandler.HandleAsync(messageLower, state))
+ // 鑾峰彇璇ヨ澶囩殑浜掓枼閿侊紝纭繚娑堟伅澶勭悊涓� Job 鎵ц浜掓枼
+ // Job 鍦ㄥ鐞嗕换鍔℃椂浼氱瓑寰呮閿侀噴鏀惧悗鎵嶇户缁墽琛�
+ var robotLock = _stateManager.GetOrCreateLock(state.IPAddress);
+ await robotLock.WaitAsync();
+ try
{
- if(messageLower != "batteryarrived")
+ // 璁板綍鎺ユ敹鍒扮殑娑堟伅鏃ュ織
+ QuartzLogHelper.LogInfo(_logger, $"鎺ユ敹鍒板鎴风銆恵state.RobotCrane?.DeviceName}銆戝彂閫佹秷鎭�恵message}銆�", state.RobotCrane?.DeviceName);
+
+ // 妫�鏌ヤ换鍔℃�绘暟鏄惁鏈揪鍒颁笂闄�
+ if (state.RobotTaskTotalNum > RobotConst.MaxTaskTotalNum)
{
- // 澶勭悊鎴愬姛鍚庯紝灏嗗師娑堟伅鍥炲啓鍒板鎴风锛堜繚鎸佸師鏈夎涓猴級
+ QuartzLogHelper.LogInfo(_logger, $"鎺ユ敹鍒板鎴风銆恵state.RobotCrane?.DeviceName}銆戝彂閫佹秷鎭�恵message}銆�", state.RobotCrane?.DeviceName);
await _socketClientGateway.SendMessageAsync(client, message);
- QuartzLogger.Info($"鍙戦�佹秷鎭細銆恵message}銆�", state.RobotCrane?.DeviceName);
+ return null;
}
- // 瀹夊叏鏇存柊鐘舵�佸埌鏁版嵁搴�
- _stateManager.TryUpdateStateSafely(state.IPAddress, state);
- return null;
- }
+ // 灏嗘秷鎭浆鎹负灏忓啓锛堢敤浜庣畝鍗曞懡浠ゅ尮閰嶏級
+ string messageLower = message.ToLowerInvariant();
- // 濡傛灉涓嶆槸绠�鍗曞懡浠わ紝妫�鏌ユ槸鍚︽槸鍓嶇紑鍛戒护
- // 鍓嶇紑鍛戒护鍖呮嫭锛歱ickfinished銆乸utfinished锛堝悗闈㈣窡閫楀彿鍒嗛殧鐨勪綅缃弬鏁帮級
- if (_prefixCommandHandler.IsPrefixCommand(messageLower))
+ // 灏濊瘯鐢ㄧ畝鍗曞懡浠ゅ鐞嗗櫒澶勭悊
+ // 绠�鍗曞懡浠ゅ寘鎷細homing銆乭omed銆乺unning銆乸ausing銆乺unmode銆乧ontrolmode 绛�
+ if (await _simpleCommandHandler.HandleAsync(messageLower, state))
+ {
+ //if (messageLower != "batteryarrived")
+ //{
+ // 澶勭悊鎴愬姛鍚庯紝灏嗗師娑堟伅鍥炲啓鍒板鎴风锛堜繚鎸佸師鏈夎涓猴級
+ //await _socketClientGateway.SendMessageAsync(client, message);
+ QuartzLogHelper.LogInfo(_logger, $"鎺ユ敹鍒版秷鎭秷鎭�恵message}銆戯紝绾﹀畾涓嶈繑鍥炲彂閫佹秷鎭細銆恵message}銆�", state.RobotCrane?.DeviceName);
+ //}
+
+ //// 瀹夊叏鏇存柊鐘舵�佸埌鏁版嵁搴�
+ //_stateManager.TryUpdateStateSafely(state.IPAddress, state);
+ return null;
+ }
+
+ // 濡傛灉涓嶆槸绠�鍗曞懡浠わ紝妫�鏌ユ槸鍚︽槸鍓嶇紑鍛戒护
+ // 鍓嶇紑鍛戒护鍖呮嫭锛歱ickfinished銆乸utfinished锛堝悗闈㈣窡閫楀彿鍒嗛殧鐨勪綅缃弬鏁帮級
+ if (_prefixCommandHandler.IsPrefixCommand(messageLower))
+ {
+ // 璋冪敤鍓嶇紑鍛戒护澶勭悊鍣�
+ await _prefixCommandHandler.HandleAsync(message, state, client);
+ }
+ }
+ finally
{
- // 璋冪敤鍓嶇紑鍛戒护澶勭悊鍣�
- await _prefixCommandHandler.HandleAsync(message, state, client);
+ robotLock.Release();
}
return null;
--
Gitblit v1.9.3