From 85a35ac34ff987653522df2fee082d371de5a1c6 Mon Sep 17 00:00:00 2001 From: hehaibing-1996 Date: Tue, 10 Dec 2024 19:09:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=B2=E6=99=B6=E6=A0=87=E7=AD=BE=E5=89=A9?= =?UTF-8?q?=E4=BD=99=E5=8D=8F=E8=AE=AE=E5=AF=B9=E6=8E=A5=20=20=E7=BC=96?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WCS.BLL/DbModels/ModuleInfo.cs | 4 +- WCS.BLL/DbModels/ShelfInfo.cs | 2 +- WCS.BLL/HardWare/IModuleBase.cs | 2 +- WCS.BLL/HardWare/IShelfBase.cs | 13 +- WCS.BLL/HardWare/MXL4Shelf.cs | 225 ++++++++++++++++-- WCS.BLL/HardWare/MXL4ShelfModule.cs | 85 +++++-- WCS.BLL/HardWare/SingleLightShelf.cs | 7 +- WCS.BLL/HardWare/SmartShelf.cs | 139 +++++------ WCS.BLL/HardWare/SmartShelfModule.cs | 9 +- WCS.BLL/Manager/MXBackgroundThread.cs | 11 +- WCS.BLL/Manager/WarningManager.cs | 7 +- WCS.BLL/Services/Service/InstoreService.cs | 8 +- WCS.BLL/Services/Service/OutstoreService.cs | 7 +- WCS.BLL/Services/Service/SelfCheckService.cs | 3 +- .../Services/Service/StockTakingService.cs | 11 +- WCS.Model/ApiModel/MXL4/TaskEnum.cs | 3 +- WCS.WebApi/Controllers/HomeController.cs | 6 +- 17 files changed, 393 insertions(+), 149 deletions(-) diff --git a/WCS.BLL/DbModels/ModuleInfo.cs b/WCS.BLL/DbModels/ModuleInfo.cs index 77d31c6..82c9cb7 100644 --- a/WCS.BLL/DbModels/ModuleInfo.cs +++ b/WCS.BLL/DbModels/ModuleInfo.cs @@ -4,7 +4,9 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WCS.BLL.DbModels.Task; using WCS.BLL.HardWare; +using TaskModeEnum = WCS.BLL.DbModels.Task.TaskModeEnum; namespace WCS.DAL.DbModels { @@ -89,7 +91,7 @@ namespace WCS.DAL.DbModels public bool IsEnable { get; set; } = true; [SugarColumn(ColumnName = "current_mode", IsNullable = true, ColumnDescription = "串联后大货架编码;大货架编码:未串联时是与货架编码是一对一的关系;串联后与货架编码是一对多的关系")] - public Mode CurrentMode { get; set; } = Mode.待机模式; + public TaskModeEnum CurrentMode { get; set; } = TaskModeEnum.待机模式; /// /// 序号 diff --git a/WCS.BLL/DbModels/ShelfInfo.cs b/WCS.BLL/DbModels/ShelfInfo.cs index 28e4dee..e084e94 100644 --- a/WCS.BLL/DbModels/ShelfInfo.cs +++ b/WCS.BLL/DbModels/ShelfInfo.cs @@ -40,7 +40,7 @@ namespace WCS.DAL.DbModels /// 货架当前状态 /// [SugarColumn(ColumnName = "current_mode", IsNullable = false, ColumnDescription = "货架当前状态")] - public Mode CurrentMode { get; set; } + public WCS.BLL.DbModels.Task.TaskModeEnum CurrentMode { get; set; } /// /// 货架设置当前模式的时间 diff --git a/WCS.BLL/HardWare/IModuleBase.cs b/WCS.BLL/HardWare/IModuleBase.cs index 9b04c1a..000b8f5 100644 --- a/WCS.BLL/HardWare/IModuleBase.cs +++ b/WCS.BLL/HardWare/IModuleBase.cs @@ -21,7 +21,7 @@ namespace WCS.BLL.HardWare /// /// 当前模式 /// - Mode CurrentMode { get; set; } + WCS.BLL.DbModels.Task.TaskModeEnum CurrentMode { get; set; } /// /// 设置当前模式 diff --git a/WCS.BLL/HardWare/IShelfBase.cs b/WCS.BLL/HardWare/IShelfBase.cs index a1dc1d2..2a5681d 100644 --- a/WCS.BLL/HardWare/IShelfBase.cs +++ b/WCS.BLL/HardWare/IShelfBase.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.Model; using static WCS.BLL.HardWare.WarningLight; @@ -52,7 +53,7 @@ namespace WCS.BLL.HardWare /// /// 货架当前模式 /// - public Mode CurrentMode { get; set; } + public WCS.BLL.DbModels.Task.TaskModeEnum CurrentMode { get; set; } /// /// 设置到当前模式的时间 /// @@ -82,7 +83,7 @@ namespace WCS.BLL.HardWare /// /// 设置货架模式 /// - public void SetCurrentMode(Mode mode); + public void SetCurrentMode(TaskModeEnum mode); /// /// 货架进入入库模式 @@ -135,12 +136,4 @@ namespace WCS.BLL.HardWare /// public void ShelfCheck(); } - - public enum Mode - { - 待机模式 = 0, - 入库模式 = 1, - 出库模式 = 2, - 盘点模式 = 3 - } } diff --git a/WCS.BLL/HardWare/MXL4Shelf.cs b/WCS.BLL/HardWare/MXL4Shelf.cs index c526cba..3b6c6f3 100644 --- a/WCS.BLL/HardWare/MXL4Shelf.cs +++ b/WCS.BLL/HardWare/MXL4Shelf.cs @@ -4,6 +4,7 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using WCS.BLL.Config; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.BLL.Manager; using WCS.DAL.Db; using WCS.DAL.DbModels; @@ -27,7 +28,7 @@ namespace WCS.BLL.HardWare ShelfCode = shelfInfo.ShelfCode; RowCounts = shelfInfo.Rowcounts; ColumnCounts = shelfInfo.Columncounts; - SetCurrentMode(Mode.待机模式); + SetCurrentMode(TaskModeEnum.待机模式); ClientIp = shelfInfo.ClientIp; LightId = shelfInfo.LightId; WarningLight = new WarningLight() { LightId = shelfInfo.LightId }; @@ -60,16 +61,15 @@ namespace WCS.BLL.HardWare while (true) { - //未完成首次连接时 暂不发送 - if (TcpCleint.IsFirstConnected == false) - { - await Task.Delay(2000); - continue; - } - - Logs.Write($"[test]"); + Logs.Write($"[test]{ShelfCode}"); try { + //未完成首次连接时 暂不发送 + if (TcpCleint.IsFirstConnected == false) + { + await Task.Delay(2000); + continue; + } //查询是否有需要刷新的 var needRefreshModules = MXL4Modules.Where(t => t.IsNeedRefresh) .ToList(); @@ -78,16 +78,121 @@ namespace WCS.BLL.HardWare //查询当前是否有任务 var currentTasks = DbHelp.db.Queryable() .Where(t => t.ModuleId == module.ModuleId) + .Where(t => t.IsSended == false) + .OrderBy(t => t.CreateTime) .ToList(); - //存在入库、出库、盘点等任务 + //入库、出库、盘点等任务 if (currentTasks != null && currentTasks.Count > 0) { + var firstTask = currentTasks.First(); + var taskMode = currentTasks.First().TaskMode; + #region 处理模组的模式 没有Continue + if (module.CurrentMode == TaskModeEnum.待机模式) + { + //进入对应模式 + switch (taskMode) + { + case (TaskModeEnum.入库模式): + module.GoInInstoreMode(TcpCleint); + break; + case (TaskModeEnum.出库模式): + module.GoInOutstoreMode(TcpCleint); + break; + case (TaskModeEnum.盘点模式): + module.GoInStocktakingMode(TcpCleint); + break; + default: + break; + } + //等待10ms这边将状态成功更新了来 + await Task.Delay(10); + } + else + { + taskMode = module.CurrentMode; + } + #endregion + //只显示当前模式的任务 + currentTasks = currentTasks.Where(t => t.TaskMode == taskMode).ToList(); + //这个分支应该很少跑到 有刷新必然有新任务 + if (currentTasks == null || currentTasks.Count == 0) + { + Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!"); + var tasks = DbHelp.db.Queryable() + .Where(t => t.ModuleId == module.ModuleId) + .Where(t => t.IsSended == true) + .Where(t => t.TaskMode == taskMode) + .OrderBy(t => t.CreateTime) + .ToList(); + if (tasks != null && tasks.Count > 0) + { + Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!有已发送的任务未完成故不处理!"); + module.IsNeedRefresh = false; + continue; + } + //退出对应模式到待机模式! 后续持续刷新数据! + else + { + Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!没有已发送未完成的任务!退出当前模式!"); + // 退出对应模式 + switch (taskMode) + { + case (TaskModeEnum.入库模式): + module.GoOutInstoreMode(TcpCleint); + break; + case (TaskModeEnum.出库模式): + module.GoOutOutstoreMode(TcpCleint); + break; + case (TaskModeEnum.盘点模式): + module.GoOutStocktakingMode(TcpCleint); + break; + default: + break; + } + continue; + } + } + //按照任务顺序给其发送数据 + foreach (var currentTask in currentTasks) + { + module.SendTaskId(currentTask.TaskID, TcpCleint); + module.SendMatCode(currentTask.MatCode, TcpCleint); + module.SendMatName(currentTask.MatName, TcpCleint); + module.SendMatSpec(currentTask.MatSpec, TcpCleint); + module.SendMatBatch(currentTask.MatBatch, TcpCleint); + module.SendMatQty(currentTask.Qty, TcpCleint); + + currentTask.IsSended = true; + DbHelp.db.Updateable(currentTask).ExecuteCommand(); + } + //发送完毕后就不刷新了 + module.IsNeedRefresh = false; + continue; } - //不存在入库、出库、盘点等任务 + //不存在入库、出库、盘点等任务 应该变成待机 else { - module.SetCurrentMode(Mode.待机模式); + //退出对应模式到待机模式! 后续持续刷新数据! + if (module.CurrentMode != TaskModeEnum.待机模式) + { + // 退出对应模式 + switch (module.CurrentMode) + { + case (TaskModeEnum.入库模式): + module.GoOutInstoreMode(TcpCleint); + break; + case (TaskModeEnum.出库模式): + module.GoOutOutstoreMode(TcpCleint); + break; + case (TaskModeEnum.盘点模式): + module.GoOutStocktakingMode(TcpCleint); + break; + default: + break; + } + continue; + } //向上层系统获取数据 @@ -96,7 +201,6 @@ namespace WCS.BLL.HardWare //获取成功 无数据 module.StandbyNoInfoDisplay(TcpCleint); module.IsNeedRefresh = false;//未获取到库存数据 回没有库位显示信息给硬件 - //获取失败 跳过此次循环后继续获取 } } @@ -115,7 +219,7 @@ namespace WCS.BLL.HardWare public string ShelfCode { get; set; } public int RowCounts { get; set; } public int ColumnCounts { get; set; } - public Mode CurrentMode { get; set; } + public TaskModeEnum CurrentMode { get; set; } public DateTime SetCurrentModeTime { get; set; } public string ModulesStr { get; set; }//当前货架所有模组的Str public string GroupName { get; set; } @@ -128,15 +232,15 @@ namespace WCS.BLL.HardWare public WarningLight WarningLight { get; set; } public void ClearWarning() { - if (this.CurrentMode == Mode.入库模式) + if (this.CurrentMode == TaskModeEnum.入库模式) { WarningLight.BlueLight(TcpCleint); } - else if (this.CurrentMode == Mode.出库模式) + else if (this.CurrentMode == TaskModeEnum.出库模式) { WarningLight.GreenLight(TcpCleint); } - else if (this.CurrentMode == Mode.盘点模式) + else if (this.CurrentMode == TaskModeEnum.盘点模式) { WarningLight.GreenLight(TcpCleint); } @@ -215,7 +319,7 @@ namespace WCS.BLL.HardWare } #endregion - public void SetCurrentMode(Mode mode) + public void SetCurrentMode(TaskModeEnum mode) { this.CurrentMode = mode; this.SetCurrentModeTime = DateTime.Now; @@ -275,17 +379,38 @@ namespace WCS.BLL.HardWare if (data[TcpCleint.PreFixLength + 3] == 0x02) GoBackStandbyModeReturnProcess(data, boardId); break; - case 0xA1://标签返回入库成功信号 + case 0xA1: + //标签返回入库成功信号 if (data[TcpCleint.PreFixLength + 3] == 0x05) InStoreSuccessProcess(data, boardId); + //进入入库模式成功 + else if (data[TcpCleint.PreFixLength + 3] == 0x01) + GoInInStoreReturnProcess(data, boardId); + //退出入库模式 + else if (data[TcpCleint.PreFixLength + 3] == 0x03) + GoBackStandbyModeReturnProcess(data, boardId); break; - case 0xA2://标签返回出库成功信号 + case 0xA2: + //标签返回出库成功信号 if (data[TcpCleint.PreFixLength + 3] == 0x04) OutStoreSuccessProcess(data, boardId); + //进入出库模式成功 + else if (data[TcpCleint.PreFixLength + 3] == 0x01) + GoInOutStoreReturnProcess(data, boardId); + //退出出库模式 + else if (data[TcpCleint.PreFixLength + 3] == 0x03) + GoBackStandbyModeReturnProcess(data, boardId); break; - case 0xA3://标签返回盘点成功信号 + case 0xA3: + //标签返回盘点成功信号 if (data[TcpCleint.PreFixLength + 3] == 0x03) StocktakingSuccessProcess(data, boardId); + //进入盘点模式 + else if (data[TcpCleint.PreFixLength + 3] == 0x01) + GoInStocktakingReturnProcess(data, boardId); + //退出盘点模式 + else if (data[TcpCleint.PreFixLength + 3] == 0x02) + GoBackStandbyModeReturnProcess(data, boardId); break; default: ; @@ -311,8 +436,64 @@ namespace WCS.BLL.HardWare Logs.Write($"【回到待机模式】货架【{ShelfCode}】通过板子ID【{boardId}】未找到对应模组!"); } - SetCurrentMode(Mode.待机模式); + SetCurrentMode(TaskModeEnum.待机模式); } + /// + /// 标签返回进入入库模式信号 + /// + /// + public void GoInInStoreReturnProcess(byte[] data, int boardId) + { + //获取对应的模组 + var module = MXL4Modules.Where(t => t.BoardId == boardId) + .FirstOrDefault(); + if (module != null) + { + module.SetCurrentMode(TaskModeEnum.入库模式); + } + else + { + Logs.Write($"【进入入库模式成功】货架【{ShelfCode}】通过板子ID【{boardId}】未找到对应模组!"); + } + } + /// + /// 标签返回进入出库模式信号 + /// + /// + public void GoInOutStoreReturnProcess(byte[] data, int boardId) + { + //获取对应的模组 + var module = MXL4Modules.Where(t => t.BoardId == boardId) + .FirstOrDefault(); + if (module != null) + { + module.SetCurrentMode(TaskModeEnum.出库模式); + } + else + { + Logs.Write($"【进入出库模式成功】货架【{ShelfCode}】通过板子ID【{boardId}】未找到对应模组!"); + } + } + + /// + /// 标签返回进入盘点模式信号 + /// + /// + public void GoInStocktakingReturnProcess(byte[] data, int boardId) + { + //获取对应的模组 + var module = MXL4Modules.Where(t => t.BoardId == boardId) + .FirstOrDefault(); + if (module != null) + { + module.SetCurrentMode(TaskModeEnum.盘点模式); + } + else + { + Logs.Write($"【进入盘点模式成功】货架【{ShelfCode}】通过板子ID【{boardId}】未找到对应模组!"); + } + } + /// /// 标签返回入库成功信号 diff --git a/WCS.BLL/HardWare/MXL4ShelfModule.cs b/WCS.BLL/HardWare/MXL4ShelfModule.cs index f478a41..59d49bd 100644 --- a/WCS.BLL/HardWare/MXL4ShelfModule.cs +++ b/WCS.BLL/HardWare/MXL4ShelfModule.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using TouchSocket.Core; using WCS.BLL.Config; +using WCS.BLL.DbModels.Task; using WCS.DAL.Db; using WCS.DAL.DbModels; @@ -50,38 +51,47 @@ namespace WCS.BLL.HardWare /// public byte[] SendMatQtyData = { 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - - + /// + /// 进入入库模式 + /// + public byte[] GoInInstoreModeData = { 0xA1, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }; + /// + /// 退出入库模式 + /// + public byte[] GoOutInstoreModeData = { 0xA1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /// /// 进入出库模式 /// public byte[] GoInOutstoreModeData = { 0xA2, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }; + /// + /// 退出出库模式 + /// + public byte[] GoOutOutstoreModeData = { 0xA2, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + /// + /// 进入盘点模式 + /// + public byte[] GoInStocktakingModeData = { 0xA3, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 }; + /// + /// 进入盘点模式 + /// + public byte[] GoOutStocktakingModeData = { 0xA3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /// /// 待机模式 无库存显示信息 /// public byte[] StandbyNoInfoDisplayData = { 0xA4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - - - #endregion public int ModuleId { get; set; } public string ModuleCode { get; set; } public int BoardId { get; set; } public bool IsEnable { get; set; } - public Mode CurrentMode { get; set; } + public TaskModeEnum CurrentMode { get; set; } public bool IsNeedRefresh { get; set; } = true; - /// - /// 是否已发送自检命令 - /// - public bool IsSelfCheck { get; set; } = false; - public List CurrentOutSns { get; set; } - public List CurrentStockTakingSns { get; set; } - public void SetCurrentMode(Mode currentMode) + public void SetCurrentMode(TaskModeEnum currentMode) { CurrentMode = currentMode; } @@ -102,6 +112,25 @@ namespace WCS.BLL.HardWare tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, StandbyNoInfoDisplayData)); } + /// + /// 进入入库模式 + /// + /// + public void GoInInstoreMode(TCPClient tcpClient) + { + tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, GoInInstoreModeData)); + //SetCurrentMode(TaskModeEnum.入库模式); + } + /// + /// 退出入库模式 + /// + /// + public void GoOutInstoreMode(TCPClient tcpClient) + { + tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, GoOutInstoreModeData)); + //SetCurrentMode(TaskModeEnum.入库模式); + } + /// /// 进入出库模式 /// @@ -109,6 +138,35 @@ namespace WCS.BLL.HardWare public void GoInOutstoreMode(TCPClient tcpClient) { tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, GoInOutstoreModeData)); + //SetCurrentMode(TaskModeEnum.出库模式); + } + /// + /// 退出出库模式 + /// + /// + public void GoOutOutstoreMode(TCPClient tcpClient) + { + tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, GoOutInstoreModeData)); + //SetCurrentMode(TaskModeEnum.出库模式); + } + + /// + /// 进入盘点模式 + /// + /// + public void GoInStocktakingMode(TCPClient tcpClient) + { + tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, GoInStocktakingModeData)); + //SetCurrentMode(TaskModeEnum.盘点模式); + } + /// + /// 退出盘点模式 + /// + /// + public void GoOutStocktakingMode(TCPClient tcpClient) + { + tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, GoOutStocktakingModeData)); + //SetCurrentMode(TaskModeEnum.盘点模式); } //发送任务ID @@ -116,7 +174,6 @@ namespace WCS.BLL.HardWare { var taskIDData = Convert.ToByte(taskID); SendTaskIdData[1] = taskIDData; - tcpClient.SendThenReturn(tcpClient.GenerateMessage(BoardId, SendTaskIdData)); } //发送料号 diff --git a/WCS.BLL/HardWare/SingleLightShelf.cs b/WCS.BLL/HardWare/SingleLightShelf.cs index 8e52e27..b9d0abf 100644 --- a/WCS.BLL/HardWare/SingleLightShelf.cs +++ b/WCS.BLL/HardWare/SingleLightShelf.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.BLL.Manager; using WCS.DAL.Db; using WCS.DAL.DbModels; @@ -20,7 +21,7 @@ namespace WCS.BLL.HardWare ShelfCode = shelfInfo.ShelfCode; RowCounts = shelfInfo.Rowcounts; ColumnCounts = shelfInfo.Columncounts; - SetCurrentMode(Mode.待机模式); + SetCurrentMode(TaskModeEnum.待机模式); ClientIp = shelfInfo.ClientIp; LightId = shelfInfo.LightId; @@ -31,7 +32,7 @@ namespace WCS.BLL.HardWare public string ShelfCode { get; set; } public int RowCounts { get; set; } public int ColumnCounts { get; set; } - public Mode CurrentMode { get; set; } + public TaskModeEnum CurrentMode { get; set; } public string ModulesStr { get; set; } public string GroupName { get; set; } public MatInfoResponse InStoreData { get; set; } @@ -100,7 +101,7 @@ namespace WCS.BLL.HardWare return; } - public void SetCurrentMode(Mode mode) + public void SetCurrentMode(TaskModeEnum mode) { } diff --git a/WCS.BLL/HardWare/SmartShelf.cs b/WCS.BLL/HardWare/SmartShelf.cs index 033f7de..ba2251e 100644 --- a/WCS.BLL/HardWare/SmartShelf.cs +++ b/WCS.BLL/HardWare/SmartShelf.cs @@ -1,6 +1,7 @@ using System; using WCS.BLL.Config; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.BLL.Manager; using WCS.DAL.Db; using WCS.DAL.DbModels; @@ -23,7 +24,7 @@ namespace WCS.BLL.HardWare ShelfCode = shelfInfo.ShelfCode; RowCounts = shelfInfo.Rowcounts; ColumnCounts = shelfInfo.Columncounts; - SetCurrentMode(Mode.待机模式); + SetCurrentMode(TaskModeEnum.待机模式); ClientIp = shelfInfo.ClientIp; LightId = shelfInfo.LightId; WarningLight = new WarningLight() { LightId = shelfInfo.LightId }; @@ -55,7 +56,7 @@ namespace WCS.BLL.HardWare public string ShelfCode { get; set; } public int RowCounts { get; set; } public int ColumnCounts { get; set; } - public Mode CurrentMode { get; set; } + public TaskModeEnum CurrentMode { get; set; } public DateTime SetCurrentModeTime { get; set; } public string ModulesStr { get; set; }//当前货架所有模组的Str @@ -70,15 +71,15 @@ namespace WCS.BLL.HardWare public WarningLight WarningLight { get; set; } public void ClearWarning() { - if (this.CurrentMode == Mode.入库模式) + if (this.CurrentMode == TaskModeEnum.入库模式) { WarningLight.BlueLight(TcpCleint); } - else if (this.CurrentMode == Mode.出库模式) + else if (this.CurrentMode == TaskModeEnum.出库模式) { WarningLight.GreenLight(TcpCleint); } - else if (this.CurrentMode == Mode.盘点模式) + else if (this.CurrentMode == TaskModeEnum.盘点模式) { WarningLight.GreenLight(TcpCleint); } @@ -123,20 +124,20 @@ namespace WCS.BLL.HardWare try { Logs.Write($"[GoInInstore IPAddress]{IPAddress}", LogsType.Instore); - if (this.CurrentMode == Mode.入库模式) + if (this.CurrentMode == TaskModeEnum.入库模式) { CurrentCom = IPAddress; return; } //判断当前模式是否为待机模式 - else if (this.CurrentMode != Mode.待机模式) + else if (this.CurrentMode != TaskModeEnum.待机模式) { return; } else { - //this.CurrentMode = Mode.入库模式; - SetCurrentMode(Mode.入库模式); + //this.CurrentMode = TaskModeEnum.入库模式; + SetCurrentMode(TaskModeEnum.入库模式); } //清空错误 ExceptionMessages.Clear(); @@ -161,7 +162,7 @@ namespace WCS.BLL.HardWare timeSpan = DateTime.Now - beginTime; //所有板子成功进入入库模式 表示进入入库模式成功,跳出循环 - var isExistsNotInstore = Modules.Where(t => t.CurrentMode != Mode.入库模式) + var isExistsNotInstore = Modules.Where(t => t.CurrentMode != TaskModeEnum.入库模式) .Where(t => t.IsEnable) .Any(); if (!isExistsNotInstore) @@ -184,7 +185,7 @@ namespace WCS.BLL.HardWare } //循环结束后判断当前板子状态 - var notInstoreList = Modules.Where(t => t.CurrentMode != Mode.入库模式) + var notInstoreList = Modules.Where(t => t.CurrentMode != TaskModeEnum.入库模式) .Where(t => t.IsEnable).ToList(); if (notInstoreList.Count > 0) @@ -235,14 +236,14 @@ namespace WCS.BLL.HardWare public void GoOutInstore() { //当前货架是否为入库模式 - if (CurrentMode != Mode.入库模式) + if (CurrentMode != TaskModeEnum.入库模式) { return; } else { - //this.CurrentMode = Mode.待机模式; - SetCurrentMode(Mode.待机模式); + //this.CurrentMode = TaskModeEnum.待机模式; + SetCurrentMode(TaskModeEnum.待机模式); } //清空错误 @@ -251,7 +252,7 @@ namespace WCS.BLL.HardWare foreach (var module in Modules.Where(t => t.IsEnable) .ToList()) { - if (module.CurrentMode == Mode.入库模式) + if (module.CurrentMode == TaskModeEnum.入库模式) module.GoOutInstoreMode(TcpCleint); } @@ -262,7 +263,7 @@ namespace WCS.BLL.HardWare { timeSpan = DateTime.Now - beginTime; //所有板子是否成功退出入库模式 - var isExistsInstore = Modules.Where(t => t.CurrentMode != Mode.待机模式) + var isExistsInstore = Modules.Where(t => t.CurrentMode != TaskModeEnum.待机模式) .Where(t => t.IsEnable) .Any(); if (!isExistsInstore) @@ -274,13 +275,13 @@ namespace WCS.BLL.HardWare } //循环结束后判断当前板子状态 - var list = Modules.Where(t => t.CurrentMode != Mode.待机模式) + var list = Modules.Where(t => t.CurrentMode != TaskModeEnum.待机模式) .Where(t => t.IsEnable) .ToList(); if (list.Count > 0) { - //CurrentMode = Mode.待机模式; - SetCurrentMode(Mode.待机模式); + //CurrentMode = TaskModeEnum.待机模式; + SetCurrentMode(TaskModeEnum.待机模式); foreach (var item in list) { ExceptionMessages.Add($"模组{item.ModuleCode}未成功退出入库模式!"); @@ -372,7 +373,7 @@ namespace WCS.BLL.HardWare //查一下是否是当前发料单最后一个货架(在出库模式 同一个发料单下) var isLastShelf = ShelfManager.Shelves .Where(t => t.OrderNumber == OrderNumber) - .Where(t => t.CurrentMode == Mode.出库模式) + .Where(t => t.CurrentMode == TaskModeEnum.出库模式) .Any(); if (!isLastShelf) { @@ -421,7 +422,7 @@ namespace WCS.BLL.HardWare .ToList(); var shelfs = ShelfManager.Shelves.Where(t => shelfIds.Contains(t.ShelfId)).ToList(); - var otherModeShelfs = shelfs.Where(t => t.CurrentMode != HardWare.Mode.待机模式).ToList(); + var otherModeShelfs = shelfs.Where(t => t.CurrentMode != TaskModeEnum.待机模式).ToList(); if (otherModeShelfs != null && otherModeShelfs.Count > 0) { otherModeShelfs.ForEach(t => @@ -454,7 +455,7 @@ namespace WCS.BLL.HardWare Task.Run(() => { //判断是否是当前订单最后一个出库货架 - var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber) + var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.OrderNumber == OrderNumber) .Any(); //WebSocket通知前台以更新左侧出库单列表的状态 if (!isOuting) @@ -483,7 +484,7 @@ namespace WCS.BLL.HardWare Logs.Write($"发料单{OrderNumber},非最后一个出库货架!", LogsType.Outstore); var otherShelfs = ShelfManager.Shelves .Where(t => t.OrderNumber == OrderNumber) - .Where(t => t.CurrentMode == Mode.出库模式) + .Where(t => t.CurrentMode == TaskModeEnum.出库模式) .ToList(); otherShelfs.ForEach(shelf => @@ -516,7 +517,7 @@ namespace WCS.BLL.HardWare Task.Run(() => { //判断是否是当前订单最后一个出库货架 - var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber) + var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.OrderNumber == OrderNumber) .Any(); //WebSocket通知前台以更新左侧出库单列表的状态 if (!isOuting) @@ -560,14 +561,14 @@ namespace WCS.BLL.HardWare try { //第一步:设置货架当前模式 - if (CurrentMode != Mode.待机模式) + if (CurrentMode != TaskModeEnum.待机模式) { Modules.ForEach(t => { t.Reset(TcpCleint); }); //复位需要点时间间隔才能响应指令 Thread.Sleep(1500); } - //CurrentMode = Mode.出库模式; - SetCurrentMode(Mode.出库模式); + //CurrentMode = TaskModeEnum.出库模式; + SetCurrentMode(TaskModeEnum.出库模式); //设置当前操作人 OutOperateUser = OperateUser; @@ -609,7 +610,7 @@ namespace WCS.BLL.HardWare timeSpan = DateTime.Now - beginTime; //所有板子成功进入出库模式 表示进入出库模式成功,跳出循环 - var isExistsNotInstore = outModules.Where(t => t.CurrentMode != Mode.出库模式) + var isExistsNotInstore = outModules.Where(t => t.CurrentMode != TaskModeEnum.出库模式) .Where(t => t.IsEnable) .Any(); if (!isExistsNotInstore) @@ -619,7 +620,7 @@ namespace WCS.BLL.HardWare //循环延时处理 Thread.Sleep(50); } - var list = outModules.Where(t => t.IsEnable && t.CurrentMode != Mode.出库模式).ToList(); + var list = outModules.Where(t => t.IsEnable && t.CurrentMode != TaskModeEnum.出库模式).ToList(); if (list != null && list.Count > 0) { var messages = list.Select(t => $"模组{t.ModuleCode}未进入出库模式!").ToList(); @@ -653,7 +654,7 @@ namespace WCS.BLL.HardWare { Logs.Write($"货架【{ShelfCode}】,开始退出出库", LogsType.Outstore); //找到在出库中的模组 - var outingModules = Modules.Where(t => t.CurrentMode == Mode.出库模式) + var outingModules = Modules.Where(t => t.CurrentMode == TaskModeEnum.出库模式) .ToList(); foreach (var module in outingModules) { @@ -668,7 +669,7 @@ namespace WCS.BLL.HardWare timeSpan = DateTime.Now - beginTime; //所有板子成功退出出库模式 表示退出出库模式成功,跳出循环 - var isExistsOutstore = outingModules.Where(t => t.CurrentMode == Mode.出库模式) + var isExistsOutstore = outingModules.Where(t => t.CurrentMode == TaskModeEnum.出库模式) .Where(t => t.IsEnable) .Any(); if (!isExistsOutstore) @@ -678,7 +679,7 @@ namespace WCS.BLL.HardWare //循环延时处理 Thread.Sleep(50); } - var list = outingModules.Where(t => t.IsEnable && t.CurrentMode == Mode.出库模式).ToList(); + var list = outingModules.Where(t => t.IsEnable && t.CurrentMode == TaskModeEnum.出库模式).ToList(); if (list != null && list.Count > 0) { var messages = list.Select(t => $"模组{t.ModuleCode}未退出出库模式!").ToList(); @@ -700,13 +701,13 @@ namespace WCS.BLL.HardWare CurrentOutStoreMatSNs.Clear(); WarningLight.CloseLight(TcpCleint); - SetCurrentMode(Mode.待机模式); + SetCurrentMode(TaskModeEnum.待机模式); Logs.Write($"货架【{ShelfCode}】,结束退出出库", LogsType.Outstore); //Task.Run(() => //{ // //判断是否是当前订单最后一个出库货架 - // var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber) + // var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.OrderNumber == OrderNumber) // .Any(); // //WebSocket通知前台以更新左侧出库单列表的状态 // if (!isOuting) @@ -734,19 +735,19 @@ namespace WCS.BLL.HardWare try { //第一步:设置货架当前模式 - if (CurrentMode != Mode.待机模式) + if (CurrentMode != TaskModeEnum.待机模式) { Modules.ForEach(t => { - if (CurrentMode != Mode.待机模式) + if (CurrentMode != TaskModeEnum.待机模式) t.Reset(TcpCleint); }); //复位需要点时间间隔才能响应指令 Thread.Sleep(1500); } - //CurrentMode = Mode.盘点模式; - SetCurrentMode(Mode.盘点模式); + //CurrentMode = TaskModeEnum.盘点模式; + SetCurrentMode(TaskModeEnum.盘点模式); //第二步:货架添加 盘点单号 记录当前盘点的发料单 CurrentStockTakingOrder = stockTakingOrder; @@ -787,7 +788,7 @@ namespace WCS.BLL.HardWare timeSpan = DateTime.Now - beginTime; //所有板子成功进入盘点模式 表示进入盘点模式成功,跳出循环 - var isExistsNotInstore = outModules.Where(t => t.CurrentMode != Mode.盘点模式) + var isExistsNotInstore = outModules.Where(t => t.CurrentMode != TaskModeEnum.盘点模式) .Where(t => t.IsEnable) .Any(); if (!isExistsNotInstore) @@ -797,7 +798,7 @@ namespace WCS.BLL.HardWare //循环延时处理 Thread.Sleep(50); } - var list = outModules.Where(t => t.IsEnable && t.CurrentMode != Mode.盘点模式).ToList(); + var list = outModules.Where(t => t.IsEnable && t.CurrentMode != TaskModeEnum.盘点模式).ToList(); if (list != null && list.Count > 0) { var messages = list.Select(t => $"模组{t.ModuleCode}未进入盘点模式!").ToList(); @@ -847,7 +848,7 @@ namespace WCS.BLL.HardWare public void GoOutStocktaking() { //找到在盘点中的模组 - var stockTakingModules = Modules.Where(t => t.CurrentMode == Mode.盘点模式) + var stockTakingModules = Modules.Where(t => t.CurrentMode == TaskModeEnum.盘点模式) .ToList(); foreach (var module in stockTakingModules) { @@ -864,7 +865,7 @@ namespace WCS.BLL.HardWare timeSpan = DateTime.Now - beginTime; //所有板子成功退出盘点模式 表示退出盘点模式成功,跳出循环 - var isExistsNotInstore = stockTakingModules.Where(t => t.CurrentMode == Mode.盘点模式) + var isExistsNotInstore = stockTakingModules.Where(t => t.CurrentMode == TaskModeEnum.盘点模式) .Where(t => t.IsEnable) .Any(); if (!isExistsNotInstore) @@ -874,7 +875,7 @@ namespace WCS.BLL.HardWare //循环延时处理 Thread.Sleep(50); } - var list = stockTakingModules.Where(t => t.IsEnable && t.CurrentMode == Mode.盘点模式).ToList(); + var list = stockTakingModules.Where(t => t.IsEnable && t.CurrentMode == TaskModeEnum.盘点模式).ToList(); if (list != null && list.Count > 0) { var messages = list.Select(t => $"模组{t.ModuleCode}未退出盘点模式!").ToList(); @@ -896,8 +897,8 @@ namespace WCS.BLL.HardWare }); CurrentOutStoreMatSNs.Clear(); WarningLight.CloseLight(TcpCleint); - //this.CurrentMode = Mode.待机模式; - SetCurrentMode(Mode.待机模式); + //this.CurrentMode = TaskModeEnum.待机模式; + SetCurrentMode(TaskModeEnum.待机模式); } public void Reset() @@ -911,8 +912,8 @@ namespace WCS.BLL.HardWare }); } WarningLight.CloseLight(TcpCleint); - //this.CurrentMode = Mode.待机模式; - SetCurrentMode(Mode.待机模式); + //this.CurrentMode = TaskModeEnum.待机模式; + SetCurrentMode(TaskModeEnum.待机模式); } public void QueryVoltage(int moduleId) @@ -933,7 +934,7 @@ namespace WCS.BLL.HardWare } } - public void SetCurrentMode(Mode mode) + public void SetCurrentMode(TaskModeEnum mode) { this.CurrentMode = mode; this.SetCurrentModeTime = DateTime.Now; @@ -958,7 +959,7 @@ namespace WCS.BLL.HardWare { try { - if (CurrentMode == Mode.待机模式) + if (CurrentMode == TaskModeEnum.待机模式) OrderNumber = "自检中..."; foreach (var module in Modules.Where(t => t.IsEnable).ToList()) { @@ -1021,7 +1022,7 @@ namespace WCS.BLL.HardWare } finally { - if (CurrentMode == Mode.待机模式) + if (CurrentMode == TaskModeEnum.待机模式) OrderNumber = string.Empty; } } @@ -1134,7 +1135,7 @@ namespace WCS.BLL.HardWare } else { - module.CurrentMode = Mode.入库模式; + module.CurrentMode = TaskModeEnum.入库模式; } } //库存物料与实际情况不匹配 @@ -1147,7 +1148,7 @@ namespace WCS.BLL.HardWare } else { - module.CurrentMode = Mode.入库模式; + module.CurrentMode = TaskModeEnum.入库模式; } //获取当前板所有库位 var storeInfos = DbHelp.db.Queryable() @@ -1262,14 +1263,14 @@ namespace WCS.BLL.HardWare /// public void GoOutInstoreProcess(byte[] data, int boardId, int lightNumber) { - var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == Mode.入库模式).FirstOrDefault(); + var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == TaskModeEnum.入库模式).FirstOrDefault(); if (module == null) { return; } else { - module.CurrentMode = Mode.待机模式; + module.CurrentMode = TaskModeEnum.待机模式; } } @@ -1555,7 +1556,7 @@ namespace WCS.BLL.HardWare } else { - module.CurrentMode = Mode.出库模式; + module.CurrentMode = TaskModeEnum.出库模式; } } //库存物料与实际情况不匹配 @@ -1569,7 +1570,7 @@ namespace WCS.BLL.HardWare } else { - module.CurrentMode = Mode.出库模式; + module.CurrentMode = TaskModeEnum.出库模式; } //获取当前板所有库位 var storeInfos = DbHelp.db.Queryable() @@ -1675,7 +1676,7 @@ namespace WCS.BLL.HardWare public void OutstoreReturnProcess(byte[] data, int boardId, int lightNumber) { - if (CurrentMode != Mode.出库模式) + if (CurrentMode != TaskModeEnum.出库模式) { Logs.Write($"出库错误:{ShelfCode}该货架模式不是出库模式或盘点模式!", LogsType.Outstore); return; @@ -1807,7 +1808,7 @@ namespace WCS.BLL.HardWare //更新时间 避免超时被自动退出 Task.Run(() => { - var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber).ToList(); + var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.OrderNumber == OrderNumber).ToList(); foreach (var shelf in shelves) { shelf.SetCurrentModeTime = DateTime.Now; @@ -1862,7 +1863,7 @@ namespace WCS.BLL.HardWare //查一下是否是当前发料单最后一个货架(在出库模式 同一个发料单下) var isLastShelf = ShelfManager.Shelves .Where(t => t.OrderNumber == OrderNumber) - .Where(t => t.CurrentMode == Mode.出库模式) + .Where(t => t.CurrentMode == TaskModeEnum.出库模式) .Any(); if (!isLastShelf) { @@ -1911,7 +1912,7 @@ namespace WCS.BLL.HardWare .ToList(); var shelfs = ShelfManager.Shelves.Where(t => shelfIds.Contains(t.ShelfId)).ToList(); - var otherModeShelfs = shelfs.Where(t => t.CurrentMode != HardWare.Mode.待机模式).ToList(); + var otherModeShelfs = shelfs.Where(t => t.CurrentMode != TaskModeEnum.待机模式).ToList(); if (otherModeShelfs != null && otherModeShelfs.Count > 0) { otherModeShelfs.ForEach(t => @@ -1943,7 +1944,7 @@ namespace WCS.BLL.HardWare Task.Run(() => { //判断是否是当前订单最后一个出库货架 - var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber) + var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.OrderNumber == OrderNumber) .Any(); //WebSocket通知前台以更新左侧出库单列表的状态 if (!isOuting) @@ -1971,7 +1972,7 @@ namespace WCS.BLL.HardWare Logs.Write($"发料单{OrderNumber},非最后一个出库货架!", LogsType.Outstore); var otherShelfs = ShelfManager.Shelves .Where(t => t.OrderNumber == OrderNumber) - .Where(t => t.CurrentMode == Mode.出库模式) + .Where(t => t.CurrentMode == TaskModeEnum.出库模式) .ToList(); otherShelfs.ForEach(shelf => @@ -2002,7 +2003,7 @@ namespace WCS.BLL.HardWare Task.Run(() => { //判断是否是当前订单最后一个出库货架 - var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber) + var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.OrderNumber == OrderNumber) .Any(); //WebSocket通知前台以更新左侧出库单列表的状态 if (!isOuting) @@ -2087,14 +2088,14 @@ namespace WCS.BLL.HardWare /// public void GoOutOutstoreProcess(byte[] data, int boardId, int lightNumber) { - var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == Mode.出库模式).FirstOrDefault(); + var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == TaskModeEnum.出库模式).FirstOrDefault(); if (module == null) { return; } else { - module.CurrentMode = Mode.待机模式; + module.CurrentMode = TaskModeEnum.待机模式; } } @@ -2215,20 +2216,20 @@ namespace WCS.BLL.HardWare } else { - module.CurrentMode = Mode.盘点模式; + module.CurrentMode = TaskModeEnum.盘点模式; } } public void GoOutStockTakingReturnProcess(byte[] data, int boardId, int lightNumber) { - var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == Mode.盘点模式).FirstOrDefault(); + var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == TaskModeEnum.盘点模式).FirstOrDefault(); if (module == null) { return; } else { - module.CurrentMode = Mode.待机模式; + module.CurrentMode = TaskModeEnum.待机模式; } } @@ -2243,7 +2244,7 @@ namespace WCS.BLL.HardWare } else { - module.CurrentMode = Mode.待机模式; + module.CurrentMode = TaskModeEnum.待机模式; } } diff --git a/WCS.BLL/HardWare/SmartShelfModule.cs b/WCS.BLL/HardWare/SmartShelfModule.cs index e8a4810..6b2f925 100644 --- a/WCS.BLL/HardWare/SmartShelfModule.cs +++ b/WCS.BLL/HardWare/SmartShelfModule.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using TouchSocket.Core; using WCS.BLL.Config; +using WCS.BLL.DbModels.Task; using WCS.DAL.Db; using WCS.DAL.DbModels; @@ -97,7 +98,7 @@ namespace WCS.BLL.HardWare public string ModuleCode { get; set; } public int BoardId { get; set; } public bool IsEnable { get; set; } - public Mode CurrentMode { get; set; } + public TaskModeEnum CurrentMode { get; set; } /// /// 是否已发送自检命令 /// @@ -112,7 +113,7 @@ namespace WCS.BLL.HardWare public void GoInInstoreMode(TCPClient tcpClient) { - if (CurrentMode != Mode.待机模式) + if (CurrentMode != TaskModeEnum.待机模式) { //TO DO 退出对应的模式 然后再发送进入入库模式 } @@ -168,7 +169,7 @@ namespace WCS.BLL.HardWare public void GoOutInstoreMode(TCPClient tcpClient) { - if (CurrentMode == Mode.入库模式) + if (CurrentMode == TaskModeEnum.入库模式) { tcpClient.Send(tcpClient.GenerateMessage(BoardId, GoOutInstoreData)); } @@ -194,7 +195,7 @@ namespace WCS.BLL.HardWare /// public void ShelfCheck(TCPClient tcpClient) { - if (CurrentMode != Mode.待机模式) + if (CurrentMode != TaskModeEnum.待机模式) { return; } diff --git a/WCS.BLL/Manager/MXBackgroundThread.cs b/WCS.BLL/Manager/MXBackgroundThread.cs index e7877e3..bb25cd4 100644 --- a/WCS.BLL/Manager/MXBackgroundThread.cs +++ b/WCS.BLL/Manager/MXBackgroundThread.cs @@ -1,6 +1,7 @@ using SqlSugar; using WCS.BLL.Config; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.BLL.HardWare; using WCS.BLL.Tool; using WCS.DAL; @@ -128,7 +129,7 @@ namespace WCS.BLL.Manager try { #region 入库模式 - var inStoreShelf = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.入库模式) + var inStoreShelf = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.入库模式) .Where(t => DateTime.Now - t.SetCurrentModeTime >= TimeSpan.FromMinutes(3)) .ToList(); foreach (var shelf in inStoreShelf) @@ -140,7 +141,7 @@ namespace WCS.BLL.Manager #region 出库模式 //出库超过n分钟自动进入待机模式 - var outStoreShelf = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式) + var outStoreShelf = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式) .Where(t => DateTime.Now - t.SetCurrentModeTime >= TimeSpan.FromMinutes(5)) .ToList(); foreach (var shelf in outStoreShelf) @@ -151,7 +152,7 @@ namespace WCS.BLL.Manager #endregion #region 盘点模式 - var stockTakingShelf = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.盘点模式) + var stockTakingShelf = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.盘点模式) .Where(t => DateTime.Now - t.SetCurrentModeTime >= TimeSpan.FromMinutes(5)) .ToList(); foreach (var shelf in stockTakingShelf) @@ -272,7 +273,7 @@ namespace WCS.BLL.Manager try { //待机模式未关灯 - var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.待机模式 && t.LightColor != WarningLight.LightColorEnum.关闭) + var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.待机模式 && t.LightColor != WarningLight.LightColorEnum.关闭) .Where(t => t.SetCurrentModeTime < DateTime.Now.AddSeconds(-5)) .ToList(); foreach (var shelf in shelves) @@ -296,7 +297,7 @@ namespace WCS.BLL.Manager } //出库模式未亮灯 - var outShelves = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.LightColor == WarningLight.LightColorEnum.关闭) + var outShelves = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.LightColor == WarningLight.LightColorEnum.关闭) .Where(t => t.SetCurrentModeTime < DateTime.Now.AddSeconds(-5)) .ToList(); foreach (var shelf in outShelves) diff --git a/WCS.BLL/Manager/WarningManager.cs b/WCS.BLL/Manager/WarningManager.cs index 50f8ccf..b7436e3 100644 --- a/WCS.BLL/Manager/WarningManager.cs +++ b/WCS.BLL/Manager/WarningManager.cs @@ -7,6 +7,7 @@ using System.Text; using System.Threading.Tasks; using WCS.BLL.Config; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.BLL.HardWare; using WCS.DAL.Db; using WCS.DAL.DbModels; @@ -363,15 +364,15 @@ namespace WCS.BLL.Manager { switch (smartShelf.CurrentMode) { - case Mode.入库模式: + case TaskModeEnum.入库模式: module.GoInInstoreMode(smartShelf.TcpCleint); smartShelf.WarningLight.BlueLight(smartShelf.TcpCleint); break; - case Mode.出库模式: + case TaskModeEnum.出库模式: Logs.Write("smartShelf.GoInOutstoreByWebSocket", LogsType.WebSocket); smartShelf.GoInOutstoreByWebSocket(module.ModuleId); break; - case Mode.待机模式: + case TaskModeEnum.待机模式: module.Reset(smartShelf.TcpCleint); smartShelf.WarningLight.CloseLight(smartShelf.TcpCleint); break; diff --git a/WCS.BLL/Services/Service/InstoreService.cs b/WCS.BLL/Services/Service/InstoreService.cs index 1c0c630..eb33079 100644 --- a/WCS.BLL/Services/Service/InstoreService.cs +++ b/WCS.BLL/Services/Service/InstoreService.cs @@ -5,6 +5,7 @@ using System.Runtime.InteropServices; using System.Text.RegularExpressions; using WCS.BLL.Config; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.BLL.HardWare; using WCS.BLL.Manager; using WCS.BLL.Services.IService; @@ -16,6 +17,7 @@ using WCS.Model; using WCS.Model.ApiModel.InOutRecord; using WCS.Model.ApiModel.InStore; using WCS.Model.ApiModel.MXBackgroundThread; +using static Dm.net.buffer.ByteArrayBuffer; namespace WCS.BLL.Services.Service { @@ -68,7 +70,7 @@ namespace WCS.BLL.Services.Service //已找到模组对应货架 shelf.GoInInstore(request.IpAdress); - if (shelf.CurrentMode == Mode.入库模式) + if (shelf.CurrentMode == TaskModeEnum.入库模式) //成功进入入库模式 return new ShelfGoInInstoreResponse() { @@ -157,7 +159,7 @@ namespace WCS.BLL.Services.Service }; } //判断当前是否是入库模式 - if (shelf.CurrentMode != Mode.入库模式) + if (shelf.CurrentMode != TaskModeEnum.入库模式) { return new ResponseCommon() { @@ -381,7 +383,7 @@ namespace WCS.BLL.Services.Service } //判断当前是否是入库模式 - if (shelf.CurrentMode != Mode.入库模式) + if (shelf.CurrentMode != TaskModeEnum.入库模式) { return new ResponseCommon() { diff --git a/WCS.BLL/Services/Service/OutstoreService.cs b/WCS.BLL/Services/Service/OutstoreService.cs index 54682d6..b443bde 100644 --- a/WCS.BLL/Services/Service/OutstoreService.cs +++ b/WCS.BLL/Services/Service/OutstoreService.cs @@ -2,6 +2,7 @@ using SqlSugar; using WCS.BLL.Config; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.BLL.Manager; using WCS.BLL.Services.IService; using WCS.BLL.Tool; @@ -487,7 +488,7 @@ namespace WCS.BLL.Services.Service //获取后台当前正在进行出库的订单 将出库状态反馈给前端 var outingOrderNumbers = ShelfManager.Shelves - .Where(t => t.CurrentMode == HardWare.Mode.出库模式) + .Where(t => t.CurrentMode == TaskModeEnum.出库模式) .Select(t => t.OrderNumber) .ToList(); foreach (var record in records) @@ -753,7 +754,7 @@ namespace WCS.BLL.Services.Service .ToList(); var shelfs = ShelfManager.Shelves.Where(t => shelfIds.Contains(t.ShelfId)).ToList(); ; - var outherModeShelfs = shelfs.Where(t => t.CurrentMode != HardWare.Mode.待机模式).Select(t => t.ShelfCode).ToList(); + var outherModeShelfs = shelfs.Where(t => t.CurrentMode != TaskModeEnum.待机模式).Select(t => t.ShelfCode).ToList(); if (outherModeShelfs != null && outherModeShelfs.Count > 0) { return new ResponseCommon() @@ -1200,7 +1201,7 @@ namespace WCS.BLL.Services.Service //找到正在出对应出库单的货架 var shelves = ShelfManager.Shelves.Where(t => t.OrderNumber == request.OrderNumber) - .Where(t => t.CurrentMode == HardWare.Mode.出库模式) + .Where(t => t.CurrentMode == TaskModeEnum.出库模式) .ToList(); if (shelves == null || shelves.Count == 0) diff --git a/WCS.BLL/Services/Service/SelfCheckService.cs b/WCS.BLL/Services/Service/SelfCheckService.cs index d802053..3a27f8c 100644 --- a/WCS.BLL/Services/Service/SelfCheckService.cs +++ b/WCS.BLL/Services/Service/SelfCheckService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WCS.BLL.DbModels.Task; using WCS.BLL.Manager; using WCS.BLL.Services.IService; using WCS.DAL.Db; @@ -66,7 +67,7 @@ namespace WCS.BLL.Services.Service foreach (var ip in cleintIps) { var currentIdShelfs = shelfs.Where(t => t.ClientIp == ip) - .Where(t => t.CurrentMode == HardWare.Mode.待机模式) + .Where(t => t.CurrentMode == TaskModeEnum.待机模式) .ToList(); Task.Run(() => { diff --git a/WCS.BLL/Services/Service/StockTakingService.cs b/WCS.BLL/Services/Service/StockTakingService.cs index 06f6337..f3f6d84 100644 --- a/WCS.BLL/Services/Service/StockTakingService.cs +++ b/WCS.BLL/Services/Service/StockTakingService.cs @@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using WCS.BLL.Config; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.BLL.Manager; using WCS.BLL.Services.IService; using WCS.DAL.Db; @@ -566,7 +567,7 @@ namespace WCS.BLL.Services.Service .ToList(); var shelfs = ShelfManager.Shelves.Where(t => shelfIds.Contains(t.ShelfId)).ToList(); ; - var outherModeShelfs = shelfs.Where(t => t.CurrentMode != HardWare.Mode.待机模式).Select(t => t.ShelfCode).ToList(); + var outherModeShelfs = shelfs.Where(t => t.CurrentMode != TaskModeEnum.待机模式).Select(t => t.ShelfCode).ToList(); if (outherModeShelfs != null && outherModeShelfs.Count > 0) { return new ResponseCommon() @@ -651,7 +652,7 @@ namespace WCS.BLL.Services.Service #endregion #region 查询当前盘点单 已启动的货架 - var shelfs = ShelfManager.Shelves.Where(t => t.CurrentMode == HardWare.Mode.盘点模式 && t.OrderNumber == order.StocktakingOrderNumber).ToList(); + var shelfs = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.盘点模式 && t.OrderNumber == order.StocktakingOrderNumber).ToList(); shelfs.ForEach(t => { t.GoOutStocktaking(); @@ -704,7 +705,7 @@ namespace WCS.BLL.Services.Service Message = $"货架{inventoryDetail.ShelfCode}不存在!", }; } - else if (shelf.CurrentMode != HardWare.Mode.盘点模式) + else if (shelf.CurrentMode != TaskModeEnum.盘点模式) { return new ResponseCommon() { @@ -787,7 +788,7 @@ namespace WCS.BLL.Services.Service Message = $"货架{stockTakingMatDetail.StoreInfo.ShelfCode}不存在!", }; } - else if (shelf.CurrentMode != HardWare.Mode.盘点模式) + else if (shelf.CurrentMode != TaskModeEnum.盘点模式) { DbHelp.db.RollbackTran(); return new ResponseCommon() @@ -826,7 +827,7 @@ namespace WCS.BLL.Services.Service //更新时间 避免被自动退出 Task.Run(() => { - var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == HardWare.Mode.盘点模式 && t.OrderNumber == request.StocktakingOrderNumber) + var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.盘点模式 && t.OrderNumber == request.StocktakingOrderNumber) .ToList(); foreach (var shelf in shelves) { diff --git a/WCS.Model/ApiModel/MXL4/TaskEnum.cs b/WCS.Model/ApiModel/MXL4/TaskEnum.cs index b92b9a3..bf5437e 100644 --- a/WCS.Model/ApiModel/MXL4/TaskEnum.cs +++ b/WCS.Model/ApiModel/MXL4/TaskEnum.cs @@ -24,6 +24,7 @@ namespace WCS.BLL.DbModels.Task { 入库模式 = 0, 出库模式 = 1, - 盘点模式 = 2 + 盘点模式 = 2, + 待机模式 = 3 } } diff --git a/WCS.WebApi/Controllers/HomeController.cs b/WCS.WebApi/Controllers/HomeController.cs index bcd0777..a0a5c4c 100644 --- a/WCS.WebApi/Controllers/HomeController.cs +++ b/WCS.WebApi/Controllers/HomeController.cs @@ -2,6 +2,7 @@ using NPOI.SS.Formula.Functions; using SqlSugar; using WCS.BLL.DbModels; +using WCS.BLL.DbModels.Task; using WCS.BLL.HardWare; using WCS.BLL.Manager; using WCS.BLL.Services.IService; @@ -9,7 +10,6 @@ using WCS.BLL.Services.Service; using WCS.DAL.Db; using WCS.Model; using WCS.Model.ApiModel.Home; -using Mode = WCS.BLL.HardWare.Mode; namespace WCS.WebApi.Controllers { @@ -212,12 +212,12 @@ namespace WCS.WebApi.Controllers if (request.IsResetAll == false) shelfs = ShelfManager.Shelves .Where(t => request.SelfIds.Contains(t.ShelfId)) - .Where(t => t.CurrentMode != Mode.待机模式) + .Where(t => t.CurrentMode != TaskModeEnum.待机模式) .ToList(); else shelfs = ShelfManager.Shelves .Where(t => request.GroupNames.Contains(t.GroupName)) - .Where(t => t.CurrentMode != Mode.待机模式) + .Where(t => t.CurrentMode != TaskModeEnum.待机模式) .ToList(); foreach (var shelf in shelfs) {