From 29f20b28392d212c04c0c40a512894f8622cfa53 Mon Sep 17 00:00:00 2001 From: wanshenmean <cathay_xy@163.com> Date: 星期三, 16 四月 2025 09:32:01 +0800 Subject: [PATCH] 合并 --- CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 160 ++++++++++++++++++++++++++++++++++------------------- 1 files changed, 102 insertions(+), 58 deletions(-) diff --git a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs index f8e5d93..268b344 100644 --- a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs +++ b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs @@ -1,14 +1,9 @@ 锘縰sing AutoMapper; using HslCommunication; -using Microsoft.AspNetCore.Components.Routing; -using NetTaste; using Newtonsoft.Json; using Quartz; using SqlSugar; -using System.Drawing; using System.Reflection; -using System.Security.Policy; -using System.Threading.Tasks; using WIDESEAWCS_BasicInfoRepository; using WIDESEAWCS_BasicInfoService; using WIDESEAWCS_Common; @@ -31,7 +26,6 @@ using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_SignalR; using WIDESEAWCS_Tasks.ConveyorLineJob; -using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; namespace WIDESEAWCS_Tasks @@ -262,28 +256,63 @@ } // 鏌ヨ骞冲彴淇℃伅 - Platform platform = _platFormRepository.QueryFirst(x => x.PLCCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active"); + Platform platform = _platFormRepository.QueryFirst(x => x.DeviceCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active"); if (platform != null && !string.IsNullOrEmpty(platform.Location)) { - var strings = platform.Location.Split(',').ToList(); - foreach (var ite in strings) + if (platform.PlatCode == "1299" || platform.PlatCode == "1295" || platform.PlatCode == "1291" || platform.PlatCode == "1287" || platform.PlatCode == "1283") { - // 璇诲彇浠诲姟鍛戒护 - ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); - if (command1.InteractiveSignal != 2) + Platform platformJZ = _platFormRepository.QueryFirst(x => x.PlatCode == "10086" && x.Status == "Active"); + if (platformJZ != null) { - command.InteractiveSignal = writeInteractiveSignal; - int count = strings.Count; - // 鑾峰彇澶勭悊鏂规硶 - MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); - if (method != null) + var strings = platform.Location.Split(',').ToList(); + foreach (var ite in strings) { - command.InteractiveSignal = commandWrite.WriteInteractiveSignal; - // 璋冪敤澶勭悊鏂规硶 - method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); - }; + // 璇诲彇浠诲姟鍛戒护 + ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); + if (command1.InteractiveSignal != 2) + { + command.InteractiveSignal = writeInteractiveSignal; + int count = strings.Count; + // 鑾峰彇澶勭悊鏂规硶 + MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); + if (method != null) + { + command.InteractiveSignal = commandWrite.WriteInteractiveSignal; + // 璋冪敤澶勭悊鏂规硶 + method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); + } + + } + } } + //else + //{ + // //ConsoleHelper.WriteErrorLine("闈欑疆绌烘墭涓嶅厑璁稿嚭鏂�"); + //} } + else + { + var strings = platform.Location.Split(',').ToList(); + foreach (var ite in strings) + { + // 璇诲彇浠诲姟鍛戒护 + ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); + if (command1.InteractiveSignal != 2) + { + command.InteractiveSignal = writeInteractiveSignal; + int count = strings.Count; + // 鑾峰彇澶勭悊鏂规硶 + MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); + if (method != null) + { + command.InteractiveSignal = commandWrite.WriteInteractiveSignal; + // 璋冪敤澶勭悊鏂规硶 + method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform }); + } + + } + } + } } //if (conveyorLine.DeviceCode == "1001") //{ @@ -296,6 +325,7 @@ } return Task.CompletedTask; } + #region 鍏ュ簱 /// <summary> @@ -327,8 +357,18 @@ } else { - // 鑾峰彇浠诲姟鐨勪笅涓�鐩爣鍦板潃 - var next = task.NextAddress; + if (task.Roadway.Contains("JZ")) + { + if (StaticVariable.isStackerRun) + { + StaticVariable.isLineRun = false; + ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode); + } + } + else + { + // 鑾峰彇浠诲姟鐨勪笅涓�鐩爣鍦板潃 + var next = task.NextAddress; // 灏嗕换鍔℃槧灏勪负鍛戒护 var taskCommand = MapTaskCommand(task, command); // 鎭㈠浠诲姟鐨勪笅涓�鐩爣鍦板潃 @@ -347,19 +387,28 @@ ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // 鏇存柊浠诲姟鐘舵�佷负涓嬩竴鐘舵�� _taskService.UpdateTaskStatusToNext(task); + } } } else { - // 濡傛灉浠诲姟涓虹┖涓旀潯鐮佷笉涓�"NoRead"涓旀潯鐮佷笉涓虹┖锛屽垯澶勭悊鏂颁换鍔� - if (task == null && command.Barcode != "NoRead" && command.Barcode.IsNotEmptyOrNull()) + var taskInTray = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); + if (taskInTray != null && taskInTray.TaskType == (int)TaskInboundTypeEnum.InTray) { - // 鏌ヨ鏉$爜瀵瑰簲鐨勪换鍔� - task = _taskService.QueryBarcodeTask(command.Barcode, childDeviceCode); - if (task == null) + RequestInNextAddress(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + } + else + { + // 濡傛灉浠诲姟涓虹┖涓旀潯鐮佷笉涓�"NoRead"涓旀潯鐮佷笉涓虹┖锛屽垯澶勭悊鏂颁换鍔� + if (task == null && command.Barcode != "NoRead" && command.Barcode.IsNotEmptyOrNull()) { - // 寮傛澶勭悊鏂颁换鍔� - await HandleNewTaskAsync(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + // 鏌ヨ鏉$爜瀵瑰簲鐨勪换鍔� + task = _taskService.QueryBarcodeTask(command.Barcode, childDeviceCode); + if (task == null) + { + // 寮傛澶勭悊鏂颁换鍔� + await HandleNewTaskAsync(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + } } } } @@ -369,9 +418,13 @@ // 鎹曡幏骞惰緭鍑哄紓甯镐俊鎭� Console.Out.WriteLine(ex.ToString()); } + finally + { + StaticVariable.isLineRun = true; + } } - public string RequestInboundPlatform(string childDeviceCode,string productLine,bool IsTrayBarcode) + public string RequestInboundPlatform(string childDeviceCode, string productLine, bool IsTrayBarcode) { try { @@ -380,7 +433,7 @@ if (platform != null && !string.IsNullOrEmpty(platform.Location)) { var Location = platform.Location.Split(',').ToList(); - IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == platform.PLCCode); + IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == platform.DeviceCode); if (device != null) { CommonConveyorLine conveyorLine = (CommonConveyorLine)device; @@ -389,7 +442,7 @@ ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(item); if (command1.InteractiveSignal != 2) { - var tasks = _taskRepository.QueryData(x => (x.TaskType == (int)TaskInboundTypeEnum.InTray || x.TaskType == (int)TaskOutboundTypeEnum.OutTray) && x.TargetAddress == childDeviceCode); + var tasks = _taskRepository.QueryData(x => x.TargetAddress == childDeviceCode); // 濡傛灉宸叉湁浠诲姟鏁伴噺灏忎簬鎸囧畾绱㈠紩 if (tasks.Count < Location.Count) @@ -398,11 +451,11 @@ } else { - var Hastask = _taskRepository.QueryData(x => x.TaskType == (int)TaskOutboundTypeEnum.OutTray && x.TargetAddress == childDeviceCode && x.Roadway.Contains("CH") && x.TaskState == (int)TaskOutStatusEnum.OutNew); - if (Hastask != null && Hastask.Count > 0) - { - //doto澶勭悊闄堝寲鏈墽琛岀殑绌烘墭鍑哄簱浠诲姟 - } + //var Hastask = _taskRepository.QueryData(x => x.TaskType == (int)TaskOutboundTypeEnum.OutTray && x.TargetAddress == childDeviceCode && x.Roadway.Contains("CH") && x.TaskState == (int)TaskOutStatusEnum.OutNew); + //if (Hastask != null && Hastask.Count > 0) + //{ + // //doto澶勭悊闄堝寲鏈墽琛岀殑绌烘墭鍑哄簱浠诲姟 + //} return null; } } @@ -420,7 +473,7 @@ { ConsoleHelper.WriteErrorLine($"鏂规硶RequestInboundPlatform锛歿ex.Message}"); } - + return null; } @@ -432,20 +485,14 @@ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - public void RequestInNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode,int ProtocalDetailValue) + public void RequestInNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傚叆搴撲笅涓�鍦板潃"; ConsoleHelper.WriteWarningLine(log); _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); WriteInfo(conveyorLine.DeviceName, log); - if (childDeviceCode == "1279") - { - var stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == childDeviceCode && x.stationPLC == conveyorLine.DeviceCode); - CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue, stationManager); - } - Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); if (task != null) { @@ -467,6 +514,8 @@ WriteInfo(conveyorLine.DeviceName, logs); conveyorLine.SendCommand(taskCommand, childDeviceCode); + + ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); } } } @@ -744,8 +793,8 @@ #endregion 鍑哄簱 - #region 杈撻�佺嚎浜や簰瀹屾垚 + /// <summary> /// 杈撻�佺嚎浜や簰瀹屾垚 /// </summary> @@ -776,8 +825,8 @@ conveyorLine.Communicator.Write(DeviceProAddress, value); } } - #endregion + #endregion #region 妫�娴嬬┖鐩樺疄鐩樹换鍔� @@ -851,7 +900,6 @@ // 瑙f瀽浠诲姟鏁版嵁 taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); - WriteInfo("鍑哄簱", $"銆恵JsonConvert.SerializeObject(taskDTO)}銆�"); #endregion 璋冪敤WMS鑾峰彇鍑哄簱浠诲姟 @@ -866,7 +914,6 @@ public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO) { var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); - WriteInfo("鍑哄簱", $"銆恵JsonConvert.SerializeObject(content)}銆�"); if (content.Status) { Console.WriteLine($"{taskDTO.TargetAddress}鍛煎彨鎴愬姛"); @@ -908,7 +955,6 @@ if (result1.Success) { - ConsoleHelper.WriteWarningLine("1"); var serialNosError = result1.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList(); if (serialNosError.Count > 0) { @@ -919,7 +965,7 @@ //璁惧NG澶勭悊 if (stationManager.remark == "DeviceNG") { - ConsoleHelper.WriteWarningLine($"銆恵stationManager.stationChildCode}NG绔欏彴鍏ュ簱銆�"); + ConsoleHelper.WriteWarningLine($"銆恵stationManager.stationChildCode}NG绔欏彴瀹炴墭鍏ュ簱銆�"); if (result1.SerialNos.Count <= 0) { ConsoleHelper.WriteWarningLine("1000"); @@ -928,7 +974,7 @@ } else { - ConsoleHelper.WriteWarningLine("2"); + ConsoleHelper.WriteWarningLine($"銆恵stationManager.stationChildCode}NG绔欏彴绌烘墭鍏ヨ澶囥��"); ConsoleHelper.WriteWarningLine(stationManager.stationLocation); conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, 5, stationManager.stationChildCode); conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, stationManager.stationLocation, stationManager.stationChildCode); @@ -939,14 +985,14 @@ { if (result1.SerialNos.Count <= 0) { - ConsoleHelper.WriteWarningLine("2"); + ConsoleHelper.WriteWarningLine($"銆恵stationManager.stationChildCode}NG绔欏彴绌烘墭鍏ュ簱銆�"); ConsoleHelper.WriteWarningLine(stationManager.stationLocation); conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, 5, stationManager.stationChildCode); conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, stationManager.stationLocation, stationManager.stationChildCode); } else { - ConsoleHelper.WriteWarningLine("1000"); + ConsoleHelper.WriteWarningLine($"銆恵stationManager.stationChildCode}NG绔欏彴瀹炴墭鍏ヨ澶囥��"); conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, 5, stationManager.stationChildCode); conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, 1000, stationManager.stationChildCode); } @@ -961,8 +1007,8 @@ #endregion 璁惧NG鍙e叆搴� - #region 杈撳嚭鏃ュ織 + public async Task LogAndWarn(string deviceName, string log, string color = "red") { ConsoleHelper.WriteWarningLine(log); @@ -972,13 +1018,11 @@ #endregion - private (ConveyorLineTaskCommand, ConveyorLineTaskCommandWrite) ReadCommands(Dt_StationManager station, CommonConveyorLine conveyorLine) { ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(station.stationChildCode, "DeviceCommand"); return (command, commandWrite); } - } } \ No newline at end of file -- Gitblit v1.9.3