From d16b29ed6b65c9f38923b284bcd12336191888d5 Mon Sep 17 00:00:00 2001 From: icewint Date: Wed, 12 Jun 2024 09:23:20 +0800 Subject: [PATCH] =?UTF-8?q?[important]=E6=B7=BB=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=88=86=E6=B5=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HisGetData/LoginGetData.cs | 2 +- .../HisGetData/StackerInSpliter.cs | 119 +++++++++++++++++- WcsMain/Enum/Convey/ConveyRouterEnum.cs | 69 ++++++++++ .../EquipOperation/Convey/ConveyOperation.cs | 37 +++--- .../EquipOperation/Entity/ConveyPLCTask.cs | 6 +- WcsMain/StaticData/StaticInt.cs | 9 ++ 6 files changed, 215 insertions(+), 27 deletions(-) create mode 100644 WcsMain/Enum/Convey/ConveyRouterEnum.cs create mode 100644 WcsMain/StaticData/StaticInt.cs diff --git a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/LoginGetData.cs b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/LoginGetData.cs index 1018c43..ee41547 100644 --- a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/LoginGetData.cs +++ b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/LoginGetData.cs @@ -44,7 +44,7 @@ public class LoginGetData(WmsWebApiPost wmsWebApiPost) : IBaseGetData string[] dirs = routerDirection.Split(','); if(!dirs.Contains(direction)) { - ConsoleLog.Warning($"【警告】注册口:{area} 箱码:{code} 方向:{direction} 方向不正确,允许的方向为:{routerDirection}"); + ConsoleLog.Warning($"【警告】注册口:{area} 箱码:{msg} 方向:{direction} 方向不正确,允许的方向为:{routerDirection}"); return; } } diff --git a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/StackerInSpliter.cs b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/StackerInSpliter.cs index b162bbb..198ef1d 100644 --- a/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/StackerInSpliter.cs +++ b/WcsMain/Business/Convey/HistoryDataHandler/HisGetData/StackerInSpliter.cs @@ -1,5 +1,13 @@ using WcsMain.Business.Convey.HistoryDataHandler.HisGetData.I; +using WcsMain.Common; +using WcsMain.DataBase.Dao; using WcsMain.DataBase.TableEntity; +using WcsMain.DataService; +using WcsMain.Enum.Convey; +using WcsMain.Enum.Stacker; +using WcsMain.EquipOperation.Convey; +using WcsMain.EquipOperation.Entity; +using WcsMain.ExtendMethod; namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData; @@ -9,15 +17,120 @@ namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData; /// /// R2 /// -public class StackerInSpliter : IBaseGetData +public class StackerInSpliter(ConveyOperation conveyOperation, DataBaseData dataBaseData, AppWcsTaskDao wcsTaskDao) : IBaseGetData { + private readonly ConveyOperation _conveyOperation = conveyOperation; + private readonly DataBaseData _dataBaseData = dataBaseData; + private readonly AppWcsTaskDao _wcsTaskDao = wcsTaskDao; + + /// + /// 读码失败 + /// + /// + /// + /// + /// public void ReadFail(string? disPlayName, string msg, string? area, AppRouterMethod routerMethodData) { - + int plcId = _dataBaseData.GetNewPlcTaskId() ?? StaticData.StaticInt.ErrPlcId; + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.NoRead); + string errText = _conveyOperation.WriteTask(area, plcTask); + if(string.IsNullOrEmpty(errText) ) + { + ConsoleLog.Success($"入库分流:{area} 读码失败,写入PLC成功,{plcTask}"); + return; + } + ConsoleLog.Warning($"【警告】入库分流:{area} 读码失败,写入PLC失败,{plcTask},信息:{errText}"); + return; } + /// + /// 读码成功 + /// + /// + /// + /// + /// public void ReadSuccess(string? disPlayName, string msg, string? area, AppRouterMethod routerMethodData) { - + int plcId = _dataBaseData.GetNewPlcTaskId() ?? StaticData.StaticInt.ErrPlcId; // 获取一个 plcId + (string code, string direction) = msg.FormatDir(); + /* 判断方向是否正确 */ + string? routerDirection = routerMethodData.AllowDirection; + if (!string.IsNullOrEmpty(routerDirection)) + { + string[] dirs = routerDirection.Split(','); + if (!dirs.Contains(direction)) + { + ConsoleLog.Warning($"【警告】入库分流:{area} 箱码:{msg} 方向:{direction} 方向不正确,允许的方向为:{routerDirection}"); + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.WcsErr); + 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; + } + } + /* 查询任务 */ + List? wcsTasks = _wcsTaskDao.Select(new AppWcsTask { VehicleNo = code, TaskStatus = (int)WcsTaskStatusEnum.create }); + if(wcsTasks == default) + { + // 数据库服务器连接失败 + ConsoleLog.Exception($"【异常】入库分流:{area} 箱码:{msg} 查询任务失败,请检查服务器网络"); + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.WmsErr); + 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; + } + if(wcsTasks.Count < 1) + { + // 不存在任务 + ConsoleLog.Exception($"【异常】入库分流:{area} 箱码:{msg} 不存在入库任务,请重试"); + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.WcsErr); + 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; + } + AppWcsTask wcsTask = wcsTasks[0]; // 取得任务 + var locationDetail = CommonData.AppLocations.DetailWithWcsLocation(wcsTask.Destination); + if(locationDetail == default) + { + // 点位不存在 + ConsoleLog.Exception($"【异常】入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 不存在,请重试"); + ConveyPLCTask plcTask = new(plcId, (short)ConveyRouterEnum.WcsErr); + 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; + } + ConveyRouterEnum router = (ConveyRouterEnum)(locationDetail.TunnelNo ?? 0); + // 点位不存在 + ConsoleLog.Success($"入库分流:{area} 箱码:{msg} 终点:{wcsTask.Destination} 巷道:{locationDetail.TunnelNo}"); + ConveyPLCTask plcTaskOk = new(plcId, (short)router); + string errTextOk = _conveyOperation.WriteTask(area, plcTaskOk); + if (string.IsNullOrEmpty(errTextOk)) + { + ConsoleLog.Success($"入库分流:{area} 箱码:{msg},写入PLC成功,{plcTaskOk}"); + return; + } + ConsoleLog.Warning($"【警告】入库分流:{area} 箱码:{msg},写入PLC失败,{plcTaskOk},信息:{errTextOk}"); + return; } } diff --git a/WcsMain/Enum/Convey/ConveyRouterEnum.cs b/WcsMain/Enum/Convey/ConveyRouterEnum.cs new file mode 100644 index 0000000..50abed2 --- /dev/null +++ b/WcsMain/Enum/Convey/ConveyRouterEnum.cs @@ -0,0 +1,69 @@ +namespace WcsMain.Enum.Convey; + +/// +/// 输送线写路向的枚举 +/// +public enum ConveyRouterEnum : short +{ + LeftMove = 2001, // 左移栽 + RightMove = 2002, // 右移栽 + Go = 2003, // 直行,放行 + Move = 2004, // 移栽 + + WmsErr = 9600, // Wms 异常 + NoRead = 9700, // 读码失败 + WcsErr = 9800, // Wcs 异常 + Stop = 9900, // 停止 + + // 下面是固定路向 + Router_1 = 1, + Router_2 = 2, + Router_3 = 3, + Router_4 = 4, + Router_5 = 5, + Router_6 = 6, + Router_7 = 7, + Router_8 = 8, + Router_9 = 9, + Router_10 = 10, + Router_11 = 11, + Router_12 = 12, + Router_13 = 13, + Router_14 = 14, + Router_15 = 15, + Router_16 = 16, + Router_17 = 17, + Router_18 = 18, + Router_19 = 19, + Router_20 = 20, + Router_21 = 21, + Router_22 = 22, + Router_23 = 23, + Router_24 = 24, + Router_25 = 25, + Router_26 = 26, + Router_27 = 27, + Router_28 = 28, + Router_29 = 29, + Router_30 = 30, + Router_31 = 31, + Router_32 = 32, + Router_33 = 33, + Router_34 = 34, + Router_35 = 35, + Router_36 = 36, + Router_37 = 37, + Router_38 = 38, + Router_39 = 39, + Router_40 = 40, + Router_41 = 41, + Router_42 = 42, + Router_43 = 43, + Router_44 = 44, + Router_45 = 45, + Router_46 = 46, + Router_47 = 47, + Router_48 = 48, + Router_49 = 49, + Router_50 = 50, +} diff --git a/WcsMain/EquipOperation/Convey/ConveyOperation.cs b/WcsMain/EquipOperation/Convey/ConveyOperation.cs index 23a85da..24d1bca 100644 --- a/WcsMain/EquipOperation/Convey/ConveyOperation.cs +++ b/WcsMain/EquipOperation/Convey/ConveyOperation.cs @@ -99,16 +99,6 @@ public class ConveyOperation return string.Empty; } - - - - - - - - - - /// /// 写入箱式线任务 /// @@ -117,21 +107,28 @@ public class ConveyOperation /// public string WriteTask(string? equipmentId, ConveyPLCTask task) { - if (!CommonData.IsConnectPlc || CommonTool.Siemens == default) - { - // 未连接PLC - return "PLC尚未连接。"; - } + if (!CommonData.IsConnectPlc || CommonTool.Siemens == default) return "PLC尚未连接。"; var (writeResult, _) = CommonTool.Siemens.WritePlcWhithName($"箱式线写任务{equipmentId}", task.PlcId, task.Router); - if (writeResult.Success) - { - return string.Empty; - } - return writeResult.Message ?? "写入失败,未知原因"; + return writeResult.Success ? string.Empty : writeResult.Message ?? "写入失败,未知原因"; } + /// + /// 箱式线写任务 + /// + /// + /// + /// + /// + public string WriteTask(string? equipmentId, int plcId, short router) => WriteTask(equipmentId, new ConveyPLCTask(plcId, router)); + + + + + + + diff --git a/WcsMain/EquipOperation/Entity/ConveyPLCTask.cs b/WcsMain/EquipOperation/Entity/ConveyPLCTask.cs index dae6174..a3679ab 100644 --- a/WcsMain/EquipOperation/Entity/ConveyPLCTask.cs +++ b/WcsMain/EquipOperation/Entity/ConveyPLCTask.cs @@ -3,17 +3,17 @@ /// /// 给输送机任务 /// -public class ConveyPLCTask +public class ConveyPLCTask(int plcId, short router) { /// /// Plc任务号 /// - public int PlcId { get; set; } + public int PlcId { get; set; } = plcId; /// /// 路向 /// - public short Router { get; set; } + public short Router { get; set; } = router; public override string ToString() diff --git a/WcsMain/StaticData/StaticInt.cs b/WcsMain/StaticData/StaticInt.cs new file mode 100644 index 0000000..b804394 --- /dev/null +++ b/WcsMain/StaticData/StaticInt.cs @@ -0,0 +1,9 @@ +namespace WcsMain.StaticData; + +public static class StaticInt +{ + public const int ErrPlcId = 999999999; + + + +}