From 3406bbd34469982efeefe164c207dcb5c4a0dac2 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 30 四月 2026 22:03:54 +0800
Subject: [PATCH] fix: 修复多个功能模块中的问题和优化逻辑

---
 Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs |   52 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 38 insertions(+), 14 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs
index a567ad2..1b3c8d5 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineNewJob/ConveyorLineDispatchHandler.cs
@@ -172,7 +172,7 @@
 
             QuartzLogHelper.LogInfo(_logger, $"RequestInNextAddress锛氬叆搴撲笅涓�鍦板潃锛屼换鍔″彿: {task.TaskNum}锛屽瓙璁惧: {childDeviceCode}", conveyorLine.DeviceCode);
 
-            bool isEmptyTask = task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty;
+            bool isEmptyTask = task.TaskType == (int)TaskInboundTypeEnum.InEmpty;
 
             // 纭畾鐩爣鍦板潃
             string targetAddress;
@@ -257,32 +257,56 @@
 
             // 纭畾鐩爣鍦板潃锛氱┖鎵樼洏浠诲姟浣跨敤 "2201"锛屽叾浠栦换鍔′娇鐢� NextAddress
             var isEmptyTask = task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty;
-            var targetAddress = task.CurrentAddress == "2217" ? (isEmptyTask ? "2201" : task.NextAddress) : task.NextAddress;
+            var targetAddress = task.CurrentAddress == "2217" ? (isEmptyTask ? task.TargetAddress : task.NextAddress) : task.NextAddress;
 
             // 澶勭悊鐗规畩鍦板潃 2217锛岄渶瑕佽皟鐢ㄧ洰鏍囧湴鍧�閫夋嫨鍣�
-            if (task.CurrentAddress == "2217" && !_targetAddressSelector.HandleOutboundNextAddress(conveyorLine, targetAddress, childDeviceCode))
-            {
-                return Task.CompletedTask; ;
-            }
+            //if (task.CurrentAddress == "2217" && !_targetAddressSelector.HandleOutboundNextAddress(conveyorLine, targetAddress, childDeviceCode))
+            //{
+            //    return Task.CompletedTask; ;
+            //}
 
             // 璁剧疆浠诲姟鍙枫�佹墭鐩樻潯鐮併�佺洰鏍囧湴鍧�銆乄CS_ACK
-            conveyorLine.SetValue(ConveyorLineDBNameNew.TaskNo, task.TaskNum, childDeviceCode);
-            conveyorLine.SetValue(ConveyorLineDBNameNew.Barcode, task.PalletCode, childDeviceCode);
-            conveyorLine.SetValue(ConveyorLineDBNameNew.Target, targetAddress, childDeviceCode);
-            conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, (short)1, childDeviceCode);
+            var isTaskNoSet = conveyorLine.SetValue(ConveyorLineDBNameNew.TaskNo, task.TaskNum, childDeviceCode);
 
+            Thread.Sleep(300); // 纭繚 PLC 鑳芥纭鍙栦换鍔″彿鍚庡啀鍐欏叆鏉$爜
+            var isPalletSet = conveyorLine.SetValue(ConveyorLineDBNameNew.Barcode, task.PalletCode, childDeviceCode);
+
+            Thread.Sleep(300); // 纭繚 PLC 鑳芥纭鍙栦换鍔″彿鍚庡啀鍐欏叆鏉$爜
+            bool isTargetSet = conveyorLine.SetValue(ConveyorLineDBNameNew.Target, targetAddress, childDeviceCode);
+            //if (targetAddress == "2217" && !isEmptyTask)
+            //{
+            //    QuartzLogHelper.LogDebug(_logger, $"瀛愯澶�: {childDeviceCode}锛屽嚭搴撶洰鏍囧湴鍧�: {targetAddress}", conveyorLine.DeviceCode);
+            //    Thread.Sleep(100); // 纭繚 PLC 鑳芥纭鍙栦换鍔″彿鍚庡啀鍐欏叆鏉$爜
+            //    isTargetSet = conveyorLine.SetValue(ConveyorLineDBNameNew.Target, targetAddress, childDeviceCode);
+            //}
+            //if (!isTargetSet || !isTaskNoSet || !isPalletSet)
+            //{
+            //    QuartzLogHelper.LogError(_logger, $"RequestOutbound锛氫笅鍙戝嚭搴撲换鍔″け璐ワ紝浠诲姟鍙�: {task.TaskNum}锛屽瓙璁惧: {childDeviceCode}", conveyorLine.DeviceCode);
+            //    return Task.CompletedTask;
+            //}
+
+            bool isWmsResult = false;
             // 鏇存柊浠诲姟鐘舵�佹垨浣嶇疆
-            if (isEmptyTask && task.NextAddress == "2217")
+            if (isEmptyTask && (task.TargetAddress == "2103" || task.TargetAddress == "2101"))
             {
                 task.TaskStatus = task.TaskStatus.GetNextNotCompletedStatus<TaskOutStatusEnum>();
-                task.NextAddress = "2201";
-                _taskService.Repository.UpdateData(task);
+                task.NextAddress = "2103";
+                isWmsResult = _taskService.Repository.UpdateData(task);
             }
             else
             {
-                _taskService.UpdateTaskStatusToNext(task);
+                isWmsResult = _taskService.UpdateTaskStatusToNext(task).Status;
             }
 
+            if (!isWmsResult)
+            {
+                QuartzLogHelper.LogError(_logger, $"RequestOutbound锛氭洿鏂颁换鍔$姸鎬佸け璐ワ紝浠诲姟鍙�: {task.TaskNum}锛屽瓙璁惧: {childDeviceCode}", conveyorLine.DeviceCode);
+                return Task.CompletedTask;
+            }
+
+            Thread.Sleep(100); // 纭繚 PLC 鑳芥纭鍙栦换鍔″彿鍚庡啀鍐欏叆鏉$爜
+            conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, (short)1, childDeviceCode);
+
             QuartzLogHelper.LogInfo(_logger, "RequestOutbound锛氬嚭搴撲换鍔″凡涓嬪彂锛屼换鍔″彿: {TaskNum}锛屽瓙璁惧: {ChildDeviceCode}", $"鍑哄簱浠诲姟宸蹭笅鍙戯紝浠诲姟鍙�: {task.TaskNum}", conveyorLine.DeviceCode, task.TaskNum, childDeviceCode);
             return Task.CompletedTask;
         }

--
Gitblit v1.9.3