From 6e380a6002fb7675f8795d8c223801cf6ec67347 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <1247017146@qq.com>
Date: 星期三, 26 三月 2025 09:22:21 +0800
Subject: [PATCH] 修改化成实框与空框去静置逻辑

---
 CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs |  252 +++++++++++++++++--------------------------------
 1 files changed, 88 insertions(+), 164 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 2383341..914c7c6 100644
--- a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
+++ b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -1,7 +1,8 @@
-锘�//using HslCommunication;
+锘縰sing HslCommunication;
 using Mapster;
-using Masuit.Tools;
 using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
+using Microsoft.CodeAnalysis;
+using Microsoft.VisualBasic;
 using Newtonsoft.Json;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
@@ -283,18 +284,8 @@
         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)
-            {
-                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)
@@ -399,7 +390,6 @@
             #endregion
         }
 
-
         /// <summary>
         /// 鎴愬寲鍏ラ潤缃�
         /// </summary>
@@ -417,25 +407,40 @@
             var serialNosError = resultTrayCellsStatus.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
             if (serialNosError.Count > 0)
             {
-                //绌烘閫昏緫
+                //NG娴佺▼
+                var platform = _platFormRepository.QueryFirst(x => x.ProductionLine == resultTrayCellsStatus.ProductionLine);
+                ConveyorLineTaskCommand conveyorLineTaskCommand = new ConveyorLineTaskCommand()
+                {
+                    TaskNum = 1,
+                    TargetAddress=Convert.ToInt32( platform.Capacity),
+                    Barcode= resultTrayCellsStatus.TrayBarcode,
+                };
+                conveyorLine.SendCommand(conveyorLineTaskCommand, childDeviceCode);
+                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+                ConsoleHelper.WriteSuccessLine($"MOM鏁版嵁寮傚父,閫佽嚦浜屽皝銆恵resultTrayCellsStatus.ProductionLine}銆戝紓甯稿彛銆恵Convert.ToInt32(platform.Capacity)}銆�");
+                return;
+            }
+            if (resultTrayCellsStatus.SerialNos.Count == 0)
+            {
                 var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
                 if (Traycontent.Status)
                 {
                     ConsoleHelper.WriteSuccessLine("鍖栨垚绌烘璇锋眰鍥炴祦闈欑疆");
                     ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                    return;
                 }
             }
             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.GetJZStockInfo).FirstOrDefault()?.ConfigValue;
+                var address = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryStockInfoForRealTrayJZAsync).FirstOrDefault()?.ConfigValue;
                 if (wmsbase == null || address == null)
                 {
                     throw new InvalidOperationException("WMS IP 鏈厤缃�");
                 }
                 var wmsIpAddrss = wmsbase + address;
-                var result = await HttpHelper.PostAsync(wmsIpAddrss);
+                var result = await HttpHelper.PostAsync(wmsIpAddrss, new { ProductLine = resultTrayCellsStatus.ProductionLine }.ToJsonString());
                 var StockInfocontent = JsonConvert.DeserializeObject<WebResponseContent>(result);
                 if (StockInfocontent.Status)
                 {
@@ -451,24 +456,34 @@
                             {
                                 ConsoleHelper.WriteSuccessLine("鍖栨垚瀹炴墭璇锋眰鍏ラ潤缃�");
                                 ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                                return;
                             }
                             else
                             {
                                 ConsoleHelper.WriteWarningLine("鍑哄簱浠诲姟鏈畬鎴�");
+                                return;
                             }
                         }
                         else if (task != null && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
                         {
                             ConsoleHelper.WriteWarningLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�");
+                            return;
                         }
                         else
                         {
-                            
-                            ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                            var Task = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+                            if (Task.Status)
+                            {
+                                ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                            }
+                            return;
                         }
                     }
                     else
+                    {
                         WriteInfo(conveyorLine.DeviceName, Taskcontent.Message);
+                        return;
+                    }
                 }
                 else
                 {
@@ -493,7 +508,7 @@
                             RoadWay = isTrue,
                             SourceAddress = childDeviceCode,
                             TargetAddress = isTrue,
-                            TaskState = (int)TaskOutStatusEnum.OutNew,
+                            TaskState = (int)TaskOutStatusEnum.SC_OutFinish,
                             Id = 2,
                             TaskType = (int)TaskOutboundTypeEnum.InToOut,
                             ProductionLine = resultTrayCellsStatus.ProductionLine,
@@ -502,174 +517,83 @@
                         if (Taskcontent.Status)
                         {
                             ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                            return;
                         }
                         else
+                        {
                             WriteInfo(conveyorLine.DeviceName, Taskcontent.Message);
-
+                            return;
+                        }
                     }
                     else
                     {
+                        var Task = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+                        if (Task.Status)
+                        {
+                            ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+                        }
                         ConsoleHelper.WriteWarningLine("浜屽皝缂撳瓨浣嶅凡婊�");
+                        return;
                     }
 
                 }
             }
         }
-
-        /// <summary>
-        /// 鎵ц杈撻�佺嚎浠诲姟
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀵硅薄</param>
-        /// <param name="command">杈撻�佺嚎浠诲姟鍛戒护</param>
-        /// <param name="ProtocalDetailValue">鍗忚鏄庣粏鍊�</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        //public void ExecuteConveyorLineTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, int ProtocalDetailValue, string childDeviceCode)
-        //{
-        //    var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
-        //    if (task != null)
-        //    {
-        //        var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
-        //        var valueList = value.Split(',').ToList();
-        //        if (valueList.Contains(task.SourceAddress))
-        //        {
-        //            conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode);
-
-        //            var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵1000}銆�";
-        //            ConsoleHelper.WriteWarningLine(log);
-
-        //            _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
-        //            WriteInfo(conveyorLine.DeviceName, log);
-
-        //            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-        //        }
-        //        else
-        //        {
-        //            if (task.Roadway.Contains("JZ"))
-        //            {
-        //                var outJZTask = _taskRepository.QueryData(x => x.Roadway== task.Roadway && x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting || x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting || x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish);
-        //                if (outJZTask.IsNullOrEmpty())
-        //                {
-        //                    var next = task.NextAddress;
-        //                    var taskCommand = MapTaskCommand(task, command);
-        //                    task.NextAddress = next;
-
-        //                    var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
-        //                    ConsoleHelper.WriteWarningLine(log);
-
-        //                    _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
-        //                    WriteInfo(conveyorLine.DeviceName, log);
-
-        //                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
-        //                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-        //                    _taskService.UpdateTaskStatusToNext(task);
-        //                }
-        //                else
-        //                {
-        //                    ConsoleHelper.WriteWarningLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�,闈欑疆鍏ュ簱浠诲姟鏃犳硶涓嬪彂绾夸綋");
-        //                }
-        //            }
-        //            else
-        //            {
-        //                var next = task.NextAddress;
-        //                var taskCommand = MapTaskCommand(task, command);
-        //                task.NextAddress = next;
-        //                var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
-        //                ConsoleHelper.WriteWarningLine(log);
-        //                _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
-        //                WriteInfo(conveyorLine.DeviceName, log);
-        //                conveyorLine.SendCommand(taskCommand, childDeviceCode);
-        //                ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-        //                _taskService.UpdateTaskStatusToNext(task);
-        //            }
-        //        }
-        //    }
-        //}
-
-        /// <summary>
-        /// 鎵ц杈撻�佺嚎浠诲姟
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀵硅薄</param>
-        /// <param name="command">杈撻�佺嚎浠诲姟鍛戒护</param>
-        /// <param name="ProtocalDetailValue">鍗忚鏄庣粏鍊�</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        public void ExecuteConveyorLineTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, int ProtocalDetailValue, string childDeviceCode)
+        public void ExecuteConveyorLineTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, int ProtocalDetailValue ,string childDeviceCode)
         {
-            // 鏌ヨ浠诲姟淇℃伅
             var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
-            if (task == null) return;
-
-            // 鑾峰彇閰嶇疆鍊煎苟杞崲涓哄垪琛�
-            var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
-            var valueList = value.Split(',').ToList();
-
-            // 鏃ュ織妯℃澘
-            var logMessage = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵{0}}銆�";
-
-            // 鍒ゆ柇浠诲姟鐨勮捣濮嬪湴鍧�鏄惁鍦ㄩ厤缃垪琛ㄤ腑
-            if (valueList.Contains(task.SourceAddress))
+            if (task != null)
             {
-                // 璁剧疆鐩爣鍦板潃涓� "1000"
-                conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode);
-                // 璁板綍鏃ュ織骞跺彂閫佸畬鎴愪俊鍙�
-                LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, "1000");
-            }
-            else if (task.Roadway.Contains("JZ"))
-            {
-                // 鏌ヨ鏄惁瀛樺湪闈欑疆鍑哄簱浠诲姟
-                var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway &&
-                    (x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting ||
-                     x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting ||
-                     x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish));
-
-                if (outJZTask.IsNullOrEmpty())
+                var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
+                var valueList = value.Split(',').ToList();
+                if (valueList.Contains(task.SourceAddress))
                 {
-                    // 鏄犲皠浠诲姟鍛戒护
+                    conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode);
+
+                    var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏or绌虹洏),涓嬩竴鐩爣鍦板潃銆恵1000}銆�";
+                    ConsoleHelper.WriteWarningLine(log);
+
+                    _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
+                    WriteInfo(conveyorLine.DeviceName, log);
+
+                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+                }
+                else if (task.TargetAddress == "1020-1")
+                {
+                    var next = task.NextAddress;
                     var taskCommand = MapTaskCommand(task, command);
-                    // 璁板綍鏃ュ織骞跺彂閫佸畬鎴愪俊鍙�
-                    LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, taskCommand.TargetAddress.ToString());
-                    // 鍙戦�佷换鍔″懡浠�
+                    task.NextAddress = next;
+
+                    var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
+                    ConsoleHelper.WriteWarningLine(log);
+
+                    _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
+                    WriteInfo(conveyorLine.DeviceName, log);
+
                     conveyorLine.SendCommand(taskCommand, childDeviceCode);
-                    // 鏇存柊浠诲姟鐘舵��
-                    _taskService.UpdateTaskStatusToNext(task);
+                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+
+                    var taskHty = task.Adapt<Dt_Task_Hty>();
+                    _task_HtyRepository.AddData(taskHty);
+                    _taskService.DeleteData(task);
                 }
                 else
                 {
-                    ConsoleHelper.WriteWarningLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�,闈欑疆鍏ュ簱浠诲姟鏃犳硶涓嬪彂鑷崇嚎浣�");
+                    var next = task.NextAddress;
+                    var taskCommand = MapTaskCommand(task, command);
+                    task.NextAddress = next;
+
+                    var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
+                    ConsoleHelper.WriteWarningLine(log);
+
+                    _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
+                    WriteInfo(conveyorLine.DeviceName, log);
+
+                    conveyorLine.SendCommand(taskCommand, childDeviceCode);
+                    ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+                    _taskService.UpdateTaskStatusToNext(task);
                 }
             }
-            else
-            {
-                // 鏄犲皠浠诲姟鍛戒护
-                var taskCommand = MapTaskCommand(task, command);
-                // 璁板綍鏃ュ織骞跺彂閫佸畬鎴愪俊鍙�
-                LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, taskCommand.TargetAddress.ToString());
-                // 鍙戦�佷换鍔″懡浠�
-                conveyorLine.SendCommand(taskCommand, childDeviceCode);
-                // 鏇存柊浠诲姟鐘舵��
-                _taskService.UpdateTaskStatusToNext(task);
-            }
         }
-
-        /// <summary>
-        /// 璁板綍鏃ュ織骞跺彂閫佸畬鎴愪俊鍙�
-        /// </summary>
-        /// <param name="conveyorLine">杈撻�佺嚎瀵硅薄</param>
-        /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
-        /// <param name="ProtocalDetailValue">鍗忚鏄庣粏鍊�</param>
-        /// <param name="logMessage">鏃ュ織娑堟伅妯℃澘</param>
-        /// <param name="targetAddress">鐩爣鍦板潃</param>
-        private void LogAndSendFinish(CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue, string logMessage, string targetAddress)
-        {
-            // 鏍煎紡鍖栨棩蹇楁秷鎭�
-            var log = string.Format(logMessage, targetAddress);
-            // 杈撳嚭璀﹀憡鏃ュ織
-            ConsoleHelper.WriteWarningLine(log);
-            // 璁板綍鏃ュ織
-            _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log, time = DateTime.Now.ToString("G"), color = "red" });
-            WriteInfo(conveyorLine.DeviceName, log);
-            // 鍙戦�佸畬鎴愪俊鍙�
-            ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
-        }
-
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3