From 5171d3f59b89389bf75293afd210cfa6de4ccff7 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 10 四月 2026 23:03:49 +0800
Subject: [PATCH] feat: 添加堆垛机相关常量类并重构代码使用常量
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs | 64 ++++++++++++++++++++++++++------
1 files changed, 52 insertions(+), 12 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
index caa4de8..c52343a 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskSelector.cs
@@ -1,9 +1,12 @@
+using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Diagnostics.CodeAnalysis;
using WIDESEA_Core;
+using WIDESEAWCS_Common.Constants;
using WIDESEAWCS_Common.HttpEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.LogHelper;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
@@ -40,6 +43,11 @@
private readonly IRouterService _routerService;
/// <summary>
+ /// 鏃ュ織璁板綍鍣�
+ /// </summary>
+ private readonly ILogger _logger;
+
+ /// <summary>
/// 绉诲簱妫�鏌ュ鎵樺嚱鏁�
/// </summary>
/// <remarks>
@@ -53,8 +61,9 @@
/// <param name="taskService">浠诲姟鏈嶅姟</param>
/// <param name="routerService">璺敱鏈嶅姟</param>
/// <param name="httpClientHelper">HTTP 瀹㈡埛绔府鍔╃被</param>
- public StackerCraneTaskSelector(ITaskService taskService, IRouterService routerService, HttpClientHelper httpClientHelper)
- : this(taskService, routerService, taskNum => QueryTransferTask(httpClientHelper, taskNum))
+ /// <param name="logger">鏃ュ織璁板綍鍣�</param>
+ public StackerCraneTaskSelector(ITaskService taskService, IRouterService routerService, HttpClientHelper httpClientHelper, ILogger logger)
+ : this(taskService, routerService, taskNum => QueryTransferTask(httpClientHelper, taskNum), logger)
{
}
@@ -64,11 +73,13 @@
/// <param name="taskService">浠诲姟鏈嶅姟</param>
/// <param name="routerService">璺敱鏈嶅姟</param>
/// <param name="transferCheck">绉诲簱妫�鏌ュ嚱鏁�</param>
- public StackerCraneTaskSelector(ITaskService taskService, IRouterService routerService, Func<int, Dt_Task?> transferCheck)
+ /// <param name="logger">鏃ュ織璁板綍鍣�</param>
+ public StackerCraneTaskSelector(ITaskService taskService, IRouterService routerService, Func<int, Dt_Task?> transferCheck, ILogger logger)
{
_taskService = taskService;
_routerService = routerService;
_transferCheck = transferCheck;
+ _logger = logger;
}
/// <summary>
@@ -88,35 +99,49 @@
public Dt_Task? SelectTask(IStackerCrane commonStackerCrane)
{
Dt_Task? candidateTask;
+ var deviceCode = commonStackerCrane.DeviceCode;
+
+ //_logger.LogInformation("SelectTask锛氬紑濮嬮�夋嫨浠诲姟锛岃澶�: {DeviceCode}锛屼笂涓�浠诲姟绫诲瀷: {LastTaskType}", deviceCode, commonStackerCrane.LastTaskType);
+ //QuartzLogger.Info($"寮�濮嬮�夋嫨浠诲姟锛岃澶�: {deviceCode}锛屼笂涓�浠诲姟绫诲瀷: {commonStackerCrane.LastTaskType}", deviceCode);
// 鏍规嵁涓婁竴浠诲姟绫诲瀷鍐冲畾鏌ヨ绛栫暐
if (commonStackerCrane.LastTaskType == null)
{
// 娌℃湁涓婁竴浠诲姟绫诲瀷锛屾煡璇㈡櫘閫氫换鍔�
- candidateTask = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
+ candidateTask = _taskService.QueryStackerCraneTask(deviceCode);
+ _logger.LogDebug("SelectTask锛氭煡璇㈡櫘閫氫换鍔★紝璁惧: {DeviceCode}锛岀粨鏋�: {TaskNum}", deviceCode, candidateTask?.TaskNum);
+ QuartzLogger.Debug($"鏌ヨ鏅�氫换鍔★紝璁惧: {deviceCode}锛岀粨鏋�: {candidateTask?.TaskNum}", deviceCode);
}
else if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
// 涓婁竴浠诲姟鏄嚭搴擄紝浼樺厛鏌ュ叆搴撲换鍔�
- candidateTask = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+ candidateTask = _taskService.QueryStackerCraneInTask(deviceCode);
// 濡傛灉娌℃湁鍏ュ簱浠诲姟锛屽啀鏌ヤ竴涓嬪嚭搴撲换鍔�
- candidateTask ??= _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+ candidateTask ??= _taskService.QueryStackerCraneOutTask(deviceCode);
+ _logger.LogDebug("SelectTask锛氬嚭搴撳悗浼樺厛鏌ュ叆搴擄紝璁惧: {DeviceCode}锛岀粨鏋�: {TaskNum}", deviceCode, candidateTask?.TaskNum);
+ QuartzLogger.Debug($"鍑哄簱鍚庝紭鍏堟煡鍏ュ簱锛岃澶�: {deviceCode}锛岀粨鏋�: {candidateTask?.TaskNum}", deviceCode);
}
else
{
// 涓婁竴浠诲姟鏄叆搴擄紙闈炲嚭搴擄級锛屼紭鍏堟煡鍑哄簱浠诲姟
- candidateTask = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+ candidateTask = _taskService.QueryStackerCraneOutTask(deviceCode);
+ _logger.LogDebug("SelectTask锛氬叆搴撳悗浼樺厛鏌ュ嚭搴擄紝璁惧: {DeviceCode}锛岀粨鏋�: {TaskNum}", deviceCode, candidateTask?.TaskNum);
+ QuartzLogger.Debug($"鍏ュ簱鍚庝紭鍏堟煡鍑哄簱锛岃澶�: {deviceCode}锛岀粨鏋�: {candidateTask?.TaskNum}", deviceCode);
}
// 濡傛灉娌℃湁鍊欓�変换鍔★紝杩斿洖 null
if (candidateTask == null)
{
+ _logger.LogDebug("SelectTask锛氭病鏈夊�欓�変换鍔★紝璁惧: {DeviceCode}", deviceCode);
+ QuartzLogger.Debug($"娌℃湁鍊欓�変换鍔★紝璁惧: {deviceCode}", deviceCode);
return null;
}
// 濡傛灉涓嶆槸鍑哄簱浠诲姟锛岀洿鎺ヨ繑鍥�
if (candidateTask.TaskType.GetTaskTypeGroup() != TaskTypeGroup.OutbondGroup)
{
+ _logger.LogInformation("SelectTask锛氶�変腑闈炲嚭搴撲换鍔★紝璁惧: {DeviceCode}锛屼换鍔″彿: {TaskNum}锛屼换鍔$被鍨�: {TaskType}", deviceCode, candidateTask.TaskNum, candidateTask.TaskType);
+ QuartzLogger.Info($"閫変腑闈炲嚭搴撲换鍔★紝浠诲姟鍙�: {candidateTask.TaskNum}锛屼换鍔$被鍨�: {candidateTask.TaskType}", deviceCode);
return candidateTask;
}
@@ -124,28 +149,35 @@
Dt_Task? selectedTask = TrySelectOutboundTask(candidateTask);
if (selectedTask != null)
{
+ _logger.LogInformation("SelectTask锛氶�変腑鍑哄簱浠诲姟锛岃澶�: {DeviceCode}锛屼换鍔″彿: {TaskNum}", deviceCode, selectedTask.TaskNum);
+ QuartzLogger.Info($"閫変腑鍑哄簱浠诲姟锛屼换鍔″彿: {selectedTask.TaskNum}", deviceCode);
return selectedTask;
}
// 鏌ユ壘鍏朵粬鍙敤鐨勫嚭搴撶珯鍙�
var otherOutStationCodes = _routerService
- .QueryNextRoutes(commonStackerCrane.DeviceCode, candidateTask.NextAddress, candidateTask.TaskType)
+ .QueryNextRoutes(deviceCode, candidateTask.NextAddress, candidateTask.TaskType)
.Select(x => x.ChildPosi)
.ToList();
// 鏌ヨ鍏朵粬绔欏彴鐨勫嚭搴撲换鍔�
- var tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStationCodes);
+ var tasks = _taskService.QueryStackerCraneOutTasks(deviceCode, otherOutStationCodes);
foreach (var alternativeTask in tasks)
{
selectedTask = TrySelectOutboundTask(alternativeTask);
if (selectedTask != null)
{
+ _logger.LogInformation("SelectTask锛氶�変腑澶囬�夊嚭搴撲换鍔★紝璁惧: {DeviceCode}锛屼换鍔″彿: {TaskNum}", deviceCode, selectedTask.TaskNum);
+ QuartzLogger.Info($"閫変腑澶囬�夊嚭搴撲换鍔★紝浠诲姟鍙�: {selectedTask.TaskNum}", deviceCode);
return selectedTask;
}
}
// 娌℃湁鍙敤鍑哄簱浠诲姟锛屽皾璇曡繑鍥炲叆搴撲换鍔�
- return _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
+ var inboundTask = _taskService.QueryStackerCraneInTask(deviceCode);
+ _logger.LogInformation("SelectTask锛氳繑鍥炲叆搴撲换鍔★紝璁惧: {DeviceCode}锛屼换鍔″彿: {TaskNum}", deviceCode, inboundTask?.TaskNum);
+ QuartzLogger.Info($"杩斿洖鍏ュ簱浠诲姟锛屼换鍔″彿: {inboundTask?.TaskNum}", deviceCode);
+ return inboundTask;
}
/// <summary>
@@ -257,7 +289,7 @@
if (task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty)
{
// 绌烘墭鐩樺嚭搴�
- taskType = 100;
+ taskType = StackerCraneConst.EmptyPalletTaskType;
}
else
taskType = task.TaskType;
@@ -267,6 +299,8 @@
if (router == null)
{
// 鏈壘鍒扮珯鍙拌矾鐢变俊鎭�
+ _logger.LogWarning("IsOutTaskStationAvailable锛氭湭鎵惧埌绔欏彴璺敱淇℃伅锛岀珯鍙�: {NextAddress}锛屼换鍔″彿: {TaskNum}", task.NextAddress, task.TaskNum);
+ QuartzLogger.Warn($"IsOutTaskStationAvailable锛氭湭鎵惧埌绔欏彴璺敱淇℃伅锛岀珯鍙�: {task.NextAddress}", task.Roadway);
_taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒扮珯鍙般�恵task.NextAddress}銆戜俊鎭紝鏃犳硶鏍¢獙绔欏彴");
return false;
}
@@ -276,6 +310,8 @@
if (device == null)
{
// 鏈壘鍒拌澶�
+ _logger.LogWarning("IsOutTaskStationAvailable锛氭湭鎵惧埌鍑哄簱绔欏彴瀵瑰簲鐨勯�氳瀵硅薄锛岀珯鍙�: {ChildPosiDeviceCode}锛屼换鍔″彿: {TaskNum}", router.ChildPosiDeviceCode, task.TaskNum);
+ QuartzLogger.Warn($"IsOutTaskStationAvailable锛氭湭鎵惧埌鍑哄簱绔欏彴瀵瑰簲鐨勯�氳瀵硅薄锛岀珯鍙�: {router.ChildPosiDeviceCode}", task.Roadway);
_taskService.UpdateTaskExceptionMessage(task.TaskNum, $"鏈壘鍒板嚭搴撶珯鍙般�恵router.ChildPosiDeviceCode}銆戝搴旂殑閫氳瀵硅薄锛屾棤娉曞垽鏂嚭搴撶珯鍙版槸鍚﹁鍗犵敤");
return false;
}
@@ -284,7 +320,11 @@
CommonConveyorLine conveyorLine = (CommonConveyorLine)device;
// 妫�鏌ョ珯鍙版槸鍚﹁鍗犵敤
- return conveyorLine.IsOccupied(router.ChildPosi);
+ bool isOccupied = conveyorLine.IsOccupied(router.ChildPosi);
+ _logger.LogInformation("IsOutTaskStationAvailable锛氱珯鍙� {ChildPosi}锛屾槸鍚﹁鍗犵敤: {IsOccupied}锛屼换鍔″彿: {TaskNum}", router.ChildPosi, isOccupied, task.TaskNum);
+ QuartzLogger.Info($"IsOutTaskStationAvailable锛氱珯鍙� {router.ChildPosi}锛屾槸鍚﹁鍗犵敤: {isOccupied}", task.Roadway);
+
+ return isOccupied;
}
}
}
--
Gitblit v1.9.3