From 37b28e4f6b8c865c1df06543f124fd1c1ba244d9 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期一, 30 六月 2025 11:35:22 +0800
Subject: [PATCH] 优化错误处理和地址获取逻辑

---
 CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs |  208 ++++++++++++++++++++++++++++-----------------------
 1 files changed, 115 insertions(+), 93 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 eef4783..bcd1f7f 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;
 
@@ -101,10 +104,10 @@
         {
             // 浣跨敤姝e垯琛ㄨ揪寮忓尮閰嶇被浼� -鏁板瓧 鐨勬ā寮忥紝骞舵浛鎹负绌哄瓧绗︿覆
             task.NextAddress = Regex.Replace(task.NextAddress, @"-(\d+)", "");
-            if (Convert.ToInt32(task.NextAddress) > 1999)
-            {
-                task.NextAddress = (Convert.ToInt32(task.NextAddress) - 1000).ToString();
-            }
+            //if (Convert.ToInt32(task.NextAddress) > 2999)
+            //{
+            //    task.NextAddress = (Convert.ToInt32(task.NextAddress) - 1000).ToString();
+            //}
             var comm = _mapper.Map<ConveyorLineTaskCommand>(task);
             comm.InteractiveSignal = command.InteractiveSignal;
             return comm;
@@ -200,7 +203,8 @@
             var content = CreateAndSendTask(taskDTO);
             if (content.Status)
             {
-                var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+                //var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode);
+                var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode, command.Barcode);
                 if (task != null)
                 {
                     var next = task.NextAddress;
@@ -285,59 +289,101 @@
         /// </summary>
         private async Task RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue, Dt_StationManager stationManager)
         {
-            string isTrue = string.Empty;
-
-            ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
-
             ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
 
-            if (result.SerialNos.Count == 0)
+            if (childDeviceCode == "1435")
             {
-                var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
-                if (Traycontent.Status)
-                {
-                    ConsoleHelper.WriteSuccessLine("浜屽皝绌烘璇锋眰鍥炴祦");
-                    ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
-                }
-            }
+                ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
 
-            List<string> strings = stationManager.Roadway.Split(",").ToList();
-            foreach (string item in strings)
-            {
-                isTrue = RequestInboundPlatform(item, result.ProductionLine, false);
-                if (isTrue != null)
+                var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
+
+                if (serialNosError.Count > 0 || !result.Success || result.SerialNos.Count == 0)
                 {
-                    break;
+                    WMSTaskDTO taskDTO = new WMSTaskDTO
+                    {
+                        TaskNum = _taskRepository.GetTaskNo().Result,
+                        Grade = 1,
+                        PalletCode = command.Barcode,
+                        RoadWay = "CHSC4",
+                        SourceAddress = childDeviceCode,
+                        TargetAddress = "CHSC4",
+                        TaskState = (int)TaskInStatusEnum.InNew,
+                        Id = 2,
+                        TaskType = (int)TaskInboundTypeEnum.InNG,
+                        ProductionLine = result.ProductionLine,
+                    };
+                    var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+                    if (Taskcontent.Status)
+                    {
+                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                    }
+                    ConsoleHelper.WriteSuccessLine($"銆恵stationManager.stationRemark}銆戙�恵stationManager.stationChildCode}銆憑result.MOMMessage}");
+                    return;
                 }
-            }
-            if (isTrue != null && isTrue != string.Empty)
-            {
-                WMSTaskDTO taskDTO = new WMSTaskDTO
+                else
                 {
-                    TaskNum = _taskRepository.GetTaskNo().Result,
-                    Grade = 1,
-                    PalletCode = command.Barcode,
-                    RoadWay = childDeviceCode,
-                    SourceAddress = childDeviceCode,
-                    TargetAddress = isTrue,
-                    TaskState = (int)TaskOutStatusEnum.SC_OutFinish,
-                    Id = 2,
-                    TaskType = (int)TaskOutboundTypeEnum.OutTray,
-                    ProductionLine = result.ProductionLine,
-                };
-                var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
-                if (Taskcontent.Status)
-                {
-                    ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                    var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+                    if (Taskcontent.Status)
+                    {
+                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                    }
                 }
 
             }
             else
             {
-                var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
-                if (Taskcontent.Status)
+                string isTrue = string.Empty;
+
+                ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+
+                if (result.SerialNos.Count == 0)
                 {
-                    ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                    var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+                    if (Traycontent.Status)
+                    {
+                        ConsoleHelper.WriteSuccessLine("浜屽皝绌烘璇锋眰鍥炴祦");
+                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                    }
+                }
+
+                List<string> strings = stationManager.Roadway.Split(",").ToList();
+                foreach (string item in strings)
+                {
+                    isTrue = RequestInboundPlatform(item, result.ProductionLine, false);
+                    if (isTrue != null)
+                    {
+                        break;
+                    }
+                }
+                if (isTrue != null && isTrue != string.Empty)
+                {
+                    WMSTaskDTO taskDTO = new WMSTaskDTO
+                    {
+                        TaskNum = _taskRepository.GetTaskNo().Result,
+                        Grade = 1,
+                        PalletCode = command.Barcode,
+                        RoadWay = childDeviceCode,
+                        SourceAddress = childDeviceCode,
+                        TargetAddress = isTrue,
+                        TaskState = (int)TaskOutStatusEnum.SC_OutFinish,
+                        Id = 2,
+                        TaskType = (int)TaskOutboundTypeEnum.OutTray,
+                        ProductionLine = result.ProductionLine,
+                    };
+                    var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+                    if (Taskcontent.Status)
+                    {
+                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                    }
+
+                }
+                else
+                {
+                    var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+                    if (Taskcontent.Status)
+                    {
+                        ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                    }
                 }
             }
         }
@@ -384,6 +430,22 @@
                     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;
+                if (wmsbase == null || address == null)
+                {
+                    throw new InvalidOperationException("WMS IP 鏈厤缃�");
+                }
+                var wmsIpAddrss = wmsbase + address;
+                var x = await HttpHelper.PostAsync(wmsIpAddrss, new { RoadwayNo = "JZSC" }.ToJsonString());
+                var LocationFree = JsonConvert.DeserializeObject<WebResponseContent>(x);
+                if (!LocationFree.Status)
+                {
+                    ConsoleHelper.WriteErrorLine(LocationFree.Message);
+                    return;
+                }
                 if (resultTrayCellsStatus.SerialNos.Count == 0)
                 {
                     var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
@@ -399,14 +461,12 @@
                 }
                 else
                 {
-                    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.QueryStockInfoForRealTrayJZAsync).FirstOrDefault()?.ConfigValue;
-                    if (wmsbase == null || address == null)
+                    var QueryStockInfoForRealTrayJZ = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryStockInfoForRealTrayJZAsync).FirstOrDefault()?.ConfigValue;
+                    if (wmsbase == null || QueryStockInfoForRealTrayJZ == null)
                     {
                         throw new InvalidOperationException("WMS IP 鏈厤缃�");
                     }
-                    var wmsIpAddrss = wmsbase + address;
+                    wmsIpAddrss = wmsbase + QueryStockInfoForRealTrayJZ;
                     var result = await HttpHelper.PostAsync(wmsIpAddrss, new { ProductLine = resultTrayCellsStatus.ProductionLine, PalletCode = command.Barcode }.ToJsonString());
                     var StockInfocontent = JsonConvert.DeserializeObject<WebResponseContent>(result);
                     if (StockInfocontent.Status)
@@ -419,44 +479,6 @@
                             {
                                 ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
                             }
-                            #region
-                            //if (task != null && task.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting && task.CurrentAddress == "1537")
-                            //{
-                            //    ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(stationManager.stationLocation);
-
-                            //    if (command1.InteractiveSignal != 2)
-                            //    {
-                            //        ConsoleHelper.WriteSuccessLine("鍖栨垚瀹炴墭璇锋眰鍏ラ潤缃�");
-                            //        if (StaticVariable.isStackerRun == true)
-                            //        {
-                            //            ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
-                            //        }
-                            //        return;
-                            //    }
-                            //    else
-                            //    {
-                            //        ConsoleHelper.WriteWarningLine("鍑哄簱浠诲姟鏈畬鎴�");
-                            //        return;
-                            //    }
-                            //}
-                            //else if (task != null && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
-                            //{
-                            //    ConsoleHelper.WriteWarningLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�");
-                            //    return;
-                            //}
-                            //else
-                            //{
-                            //    var Task = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
-                            //    if (Task.Status)
-                            //    {
-                            //        if (StaticVariable.isStackerRun == true)
-                            //        {
-                            //            ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
-                            //        }
-                            //    }
-                            //    return;
-                            //}
-                            #endregion
                         }
                         else
                         {
@@ -568,11 +590,9 @@
             else if (task.Roadway.Contains("JZ"))
             {
                 // 鏌ヨ鏄惁瀛樺湪闈欑疆鍑哄簱浠诲姟
-                var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway &&
-                    (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);
@@ -585,10 +605,12 @@
 
                     // 鏇存柊浠诲姟鐘舵��
                     _taskService.UpdateTaskStatusToNext(task);
+
+                    WriteInfo(conveyorLine.DeviceName, $"闈欑疆瀛樺湪鍑哄簱浠诲姟{outJZTask.Count()}");
                 }
                 else
                 {
-                    ConsoleHelper.WriteWarningLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�,闈欑疆鍏ュ簱浠诲姟鏃犳硶涓嬪彂鑷崇嚎浣�");
+                    ConsoleHelper.WriteErrorLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�,闈欑疆鍏ュ簱浠诲姟鏃犳硶涓嬪彂鑷崇嚎浣�");
                 }
             }
             else

--
Gitblit v1.9.3