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_TaskInfoService/TaskService.cs |   54 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 42 insertions(+), 12 deletions(-)

diff --git a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
index 98f23aa..f7cb0c7 100644
--- a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
+++ b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -94,7 +94,7 @@
                     // 鍒ゆ柇浠诲姟绫诲瀷鏄惁涓哄嚭搴撲换鍔�
                     if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
                     {
-                        if ((task.Roadway == "1326"||task.Roadway == "1529" )&& ( task.TaskType == (int)TaskOutboundTypeEnum.OutTray|| task.TaskType == (int)TaskOutboundTypeEnum.InToOut))
+                        if ((task.Roadway == "2000"||task.Roadway == "1529" )&& ( task.TaskType == (int)TaskOutboundTypeEnum.OutTray|| task.TaskType == (int)TaskOutboundTypeEnum.InToOut))
                         {
                             // 璁剧疆浠诲姟鐘舵�佷负鍑哄簱鏂板缓
                             //task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish;
@@ -226,7 +226,15 @@
                 var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode);
                 if (hasTask != null)
                 {
-                    return content.OK("褰撳墠鎵樼洏瀛樺湪浠诲姟");
+                    var taskExecuting = BaseDal.QueryFirst(x => x.PalletCode == palletCode && x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting);
+
+                    if (taskExecuting != null)
+                    {
+                        taskExecuting.ExceptionMessage = "鏈帴鏀跺埌绾夸綋瀹屾垚淇″彿绯荤粺鍐呴儴鑷姩瀹屾垚";
+                        Delete(taskExecuting);
+                    }
+                    ConsoleHelper.WriteErrorLine($"褰撳墠鎵樼洏瀛樺湪浠诲姟锛氥�恵palletCode}銆�");
+                    QuartzLogger.WriteLogToFile($"浠诲姟寮傚父鏈畬鎴�", $"褰撳墠鎵樼洏瀛樺湪浠诲姟锛氥�恵palletCode}銆憑Environment.NewLine}");
                 }
 
                 var wmsIpAddrss = string.Empty;
@@ -284,9 +292,9 @@
         {
             Dt_Task task = null;
               task= BaseDal.QueryFirst(x => ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish)) && x.CurrentAddress == currentAddress, TaskOrderBy);
-            if(task == null)
+            if (task == null)
             {
-                task= BaseDal.QueryFirst(x => x.Roadway==currentAddress&& x.TaskType== (int)TaskOutboundTypeEnum.TrayInToOut&&x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
+                task = BaseDal.QueryFirst(x => x.Roadway == currentAddress && x.TaskType == (int)TaskOutboundTypeEnum.TrayInToOut && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy);
             }
             return task;
         }
@@ -338,6 +346,16 @@
         public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress,string Barcode)
         {
             return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.PalletCode == Barcode, TaskOrderBy);
+        }
+        /// <summary>
+        /// 鏍规嵁鎵樼洏鍙枫�佷笅涓�鍦板潃鏌ヨ杈撻�佺嚎鎵ц涓殑浠诲姟
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="nextAddress">涓嬩竴鍦板潃</param>
+        /// <returns></returns>
+        public Dt_Task QueryExecutingConveyorLineTask(string nextAddress, string Barcode)
+        {
+            return BaseDal.QueryFirst(x => (x.NextAddress == nextAddress || x.TargetAddress == nextAddress) && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.PalletCode == Barcode, TaskOrderBy);
         }
 
         /// <summary>
@@ -745,14 +763,18 @@
                 var wmsIpAddress = wmsBase + completeTask;
 
                 var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result;
-                content = JsonConvert.DeserializeObject<WebResponseContent>(result);
-                if (!content.Data.IsNullOrEmpty())
+
+                if (result != null)
                 {
-                    if (content.Data.ToString() == "NG")
+                    content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+                    if (!content.Data.IsNullOrEmpty())
                     {
-                        task.Remark = "NG";
-                        //BaseDal.UpdateData(task);
-                        //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG");
+                        if (content.Data.ToString() == "NG")
+                        {
+                            task.Remark = "NG";
+                            //BaseDal.UpdateData(task);
+                            //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG");
+                        }
                     }
                 }
                 task.ExceptionMessage += "   " + content.Message;
@@ -761,7 +783,7 @@
 
                 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
                 {
-                    if (task.Roadway.Contains("GW") || (task.Roadway.Contains("JZ") && task.TaskType == (int)TaskOutboundTypeEnum.OutTray))
+                    if (task.Roadway.Contains("GW") || (task.Roadway.Contains("JZ") && task.TaskType == (int)TaskOutboundTypeEnum.OutTray)|| (task.Roadway.Contains("CW") && task.TaskType == (int)TaskOutboundTypeEnum.InToOut))
                     {
                         task.TaskState = (int)TaskOutStatusEnum.OutFinish;
                         //濡傞珮娓╁嚭搴撳悗 NG 鍒欏皢浠诲姟鏍囪涓篘G 骞跺湪鍑哄簱鐢宠鍚庡皢浠诲姟鍑鸿嚦NG鍙�
@@ -772,7 +794,7 @@
                         else
                         {
                             BaseDal.DeleteData(task);
-                            ConsoleHelper.WriteWarningLine($"{(task.Roadway.Contains("GW")? "楂樻俯":"闈欑疆")}鍑哄簱鐩殑鍦板潃{task.TargetAddress}");
+                            ConsoleHelper.WriteWarningLine($"{(task.Roadway)}鍑哄簱鐩殑鍦板潃{task.TargetAddress}");
                         }
 
                         var taskHty = task.Adapt<Dt_Task_Hty>();
@@ -950,6 +972,14 @@
             return wcsBasez + address;
         }
 
+        public WebResponseContent Delete(Dt_Task task)
+        {
+            var taskHty = task.Adapt<Dt_Task_Hty>();
+            taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
+            _taskHtyRepository.AddData(taskHty);
+            return base.DeleteData(task);
+        }
+
         #region 閲嶅啓鏂规硶
 
         public override WebResponseContent DeleteData(object[] key)

--
Gitblit v1.9.3