From 1c637ea862816ae6fa53945fa0327b95c79aa18b Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期五, 22 八月 2025 16:20:27 +0800
Subject: [PATCH] 增强 WMS IP 地址处理逻辑的健壮性在 `TaskService.cs` 文件中,添加了对 `result` 是否为 `null` 的检查,以确保在反序列化之前 `result` 是有效的。同时,调整了对 `content.Data` 的检查逻辑,确保在 `content.Data` 不为空的情况下,才会进一步检查其值是否为 "NG"。如果是 "NG",则设置 `task.Remark` 为 "NG"。这些更改提高了代码的健壮性,避免了潜在的空引用异常。
---
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 41 +++++++++++++++++++++++++++--------------
1 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
index 601c5b7..d300996 100644
--- a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
+++ b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -6,6 +6,8 @@
using Microsoft.VisualBasic;
using MoYu.Logging;
using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using SqlSugar;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using WIDESEAWCS_Common;
@@ -17,6 +19,7 @@
using WIDESEAWCS_DTO.WMS;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
@@ -100,8 +103,8 @@
private ConveyorLineTaskCommand MapTaskCommand(Dt_Task task, ConveyorLineTaskCommand command)
{
// 浣跨敤姝e垯琛ㄨ揪寮忓尮閰嶇被浼� -鏁板瓧 鐨勬ā寮忥紝骞舵浛鎹负绌哄瓧绗︿覆
- //task.NextAddress = Regex.Replace(task.NextAddress, @"-(\d+)", "");
- //if (Convert.ToInt32(task.NextAddress) > 1999)
+ task.NextAddress = Regex.Replace(task.NextAddress, @"-(\d+)", "");
+ //if (Convert.ToInt32(task.NextAddress) > 2999)
//{
// task.NextAddress = (Convert.ToInt32(task.NextAddress) - 1000).ToString();
//}
@@ -150,6 +153,21 @@
{
if (command.Barcode != "NoRead")
{
+ if (_taskRepository.QueryFirst(x => x.PalletCode == command.Barcode) != null)
+ {
+ var taskExecuting = _taskRepository.QueryFirst(x => x.PalletCode == command.Barcode && (x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting || x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish));
+
+ if (taskExecuting != null)
+ {
+ taskExecuting.ExceptionMessage = "鏈帴鏀跺埌绾夸綋瀹屾垚淇″彿绯荤粺鍐呴儴鑷姩瀹屾垚";
+ _taskService.Delete(taskExecuting);
+ }
+
+ ConsoleHelper.WriteErrorLine($"褰撳墠鎵樼洏瀛樺湪浠诲姟锛氥�恵command.Barcode}銆�");
+
+ WriteInfo(conveyorLine.DeviceName, $"褰撳墠鎵樼洏瀛樺湪浠诲姟{command.Barcode}");
+
+ }
string isTrue = string.Empty;
ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
@@ -186,10 +204,6 @@
taskDTO = CreateEmptyTrayTaskDto(command.Barcode, childDeviceCode); ;
}
- if (_taskRepository.QueryFirst(x => x.PalletCode == taskDTO.PalletCode) != null)
- {
- WriteInfo(conveyorLine.DeviceName, "褰撳墠鎵樼洏瀛樺湪浠诲姟");
- }
CreateEmptyTryTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue, taskDTO);
}
@@ -400,7 +414,7 @@
try
{
StaticVariable.isLineRun = false;
-
+
if (StaticVariable.isStackerRun)
{
ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
@@ -427,6 +441,7 @@
LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, conveyorLineTaskCommand.TargetAddress.ToString());
return;
}
+
var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
var wmsbase = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
var address = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryLocationFreeJZ).FirstOrDefault()?.ConfigValue;
@@ -442,7 +457,6 @@
ConsoleHelper.WriteErrorLine(LocationFree.Message);
return;
}
-
if (resultTrayCellsStatus.SerialNos.Count == 0)
{
var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
@@ -458,7 +472,6 @@
}
else
{
-
var QueryStockInfoForRealTrayJZ = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryStockInfoForRealTrayJZAsync).FirstOrDefault()?.ConfigValue;
if (wmsbase == null || QueryStockInfoForRealTrayJZ == null)
{
@@ -552,7 +565,7 @@
finally
{
StaticVariable.isLineRun = true;
- }
+ }
}
/// <summary>
@@ -588,11 +601,9 @@
else if (task.Roadway.Contains("JZ"))
{
// 鏌ヨ鏄惁瀛樺湪闈欑疆鍑哄簱浠诲姟
- var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway && task.TaskType == (int)TaskOutboundTypeEnum.Outbound &&
- (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting ||
- x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutNew));
+ var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway && x.TaskType == (int)TaskOutboundTypeEnum.Outbound && (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting || x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutNew));
- if (!outJZTask.Any())
+ if (!outJZTask.Any() || outJZTask.Count() == 0)
{
// 鏄犲皠浠诲姟鍛戒护
var taskCommand = MapTaskCommand(task, command);
@@ -605,6 +616,8 @@
// 鏇存柊浠诲姟鐘舵��
_taskService.UpdateTaskStatusToNext(task);
+
+ WriteInfo(conveyorLine.DeviceName, $"闈欑疆瀛樺湪鍑哄簱浠诲姟{outJZTask.Count()}");
}
else
{
--
Gitblit v1.9.3