From a3dcfff0c2d4928db6db4ae98a80532ce52b9203 Mon Sep 17 00:00:00 2001 From: icewint Date: Fri, 6 Sep 2024 11:47:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8B=A3=E9=80=89=E5=88=86?= =?UTF-8?q?=E9=85=8D=E4=B8=A4=E4=B8=AA=E5=8C=BA=E5=9F=9F=E6=8C=89=E6=AF=94?= =?UTF-8?q?=E7=8E=87=E5=B9=B3=E8=A1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppEntity/SystemData/AppConfigEntity.cs | 6 +++ .../HisGetData/StackerOutC1.cs | 38 ++++++++++++++++--- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/WcsMain/AppEntity/SystemData/AppConfigEntity.cs b/WcsMain/AppEntity/SystemData/AppConfigEntity.cs index 397ea2b..1bdffb3 100644 --- a/WcsMain/AppEntity/SystemData/AppConfigEntity.cs +++ b/WcsMain/AppEntity/SystemData/AppConfigEntity.cs @@ -86,4 +86,10 @@ public class AppConfigEntity /// [ConfigKey("ExcuteStackerInTaskWithScan")] public string? ExcuteStackerInTaskWithScan { get; set; } + + /// + /// 去往 pick2 箱子的比率 + /// + [ConfigKey("Pick2Lv")] + public int Pick2Lv { get; set; } } diff --git a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/StackerOutC1.cs b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/StackerOutC1.cs index 38f2c55..64b26c6 100644 --- a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/StackerOutC1.cs +++ b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/StackerOutC1.cs @@ -77,19 +77,31 @@ public class StackerOutC1(ConveyOperation conveyOperation, DataBaseData dataBase ConsoleLog.Warning($"【警告】出库分流:{area} 箱码:{msg},写入PLC失败,{plcTask},信息:{errText}"); return; } - /* 检查是不是有 1~5 站台(pick1 区域)的拣选任务,若有则不移栽,走下层 */ + + (bool isHavePick1, bool isHavePick2) = (false, false); // 默认都不含有任务 + // 检验是否存在 pick1 区域的任务 List pick1Stand = CommonData.AppConveyStands.FindAll(f => f.StandType == (int)ConveyStandTypeEnum.pick && f.Area == "pick1"); List pick1Stands = pick1Stand.Select(f => f.StandId).ToList(); - bool exists = false; // 默认不存在 1~5 站台(pick1 区域) 任务 foreach (var conveyTask in conveyTasks) { if (pick1Stands.Contains(conveyTask.Location)) { - exists = true; + isHavePick1 = true; break; } } - if(exists) // 存在该区域任务 1~5 站台(pick1 区域) + // 校验是否含有 pick2区域的任务 + List pick2Stand = CommonData.AppConveyStands.FindAll(f => f.StandType == (int)ConveyStandTypeEnum.pick && f.Area == "pick2"); + List pick2Stands = pick2Stand.Select(f => f.StandId).ToList(); + foreach (var conveyTask in conveyTasks) + { + if (pick2Stands.Contains(conveyTask.Location)) + { + isHavePick2 = true; + break; + } + } + if (isHavePick1 && !isHavePick2) // 存在该区域任务 1~5 站台(pick1 区域),不存在 pick2 区域任务 { ConsoleLog.Info($"出库分流:{area} 箱码:{msg} 存在 1~5 站台任务"); ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.Go); @@ -102,7 +114,7 @@ public class StackerOutC1(ConveyOperation conveyOperation, DataBaseData dataBase ConsoleLog.Warning($"【警告】出库分流:{area} 箱码:{msg},写入PLC失败,{plcTask},信息:{errText}"); return; } - else // 6~9 站台(pick2 区域) + else if (!isHavePick1 && isHavePick2) // 不存在该区域pick1任务,存在 pick2 区域任务 { ConsoleLog.Info($"出库分流:{area} 箱码:{msg} 不存在 1~5 站台任务"); ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.Move); @@ -115,5 +127,21 @@ public class StackerOutC1(ConveyOperation conveyOperation, DataBaseData dataBase ConsoleLog.Warning($"【警告】出库分流:{area} 箱码:{msg},写入PLC失败,{plcTask},信息:{errText}"); return; } + else // 两个地区都存在任务 + { + ConsoleLog.Info($"出库分流:{area} 箱码:{msg} 存在 1~5 站台任务且存在 6~9 区域任务"); + Random random = new(); + var id = random.Next(0, 100); + ConveyPLCTask plcTask = new(plcId, id < CommonData.AppConfig.Pick2Lv ? (short)ConveyRouterEnum.Move : (short)ConveyRouterEnum.Go); + string errText = conveyOperation.WriteTask(area, plcTask); + if (string.IsNullOrEmpty(errText)) + { + ConsoleLog.Success($"出库分流:{area} 箱码:{msg},写入PLC成功,{plcTask}"); + return; + } + ConsoleLog.Warning($"【警告】出库分流:{area} 箱码:{msg},写入PLC失败,{plcTask},信息:{errText}"); + return; + + } } }