From 3aa7e09e6a077a6a4cfe8ba1fdc27d18e64744d6 Mon Sep 17 00:00:00 2001 From: hehaibing-1996 Date: Tue, 12 Nov 2024 14:48:18 +0800 Subject: [PATCH] =?UTF-8?q?=E9=92=BB=E6=8E=A2=E9=A1=B9=E7=9B=AE=EF=BC=9A?= =?UTF-8?q?=E5=8D=95=E7=81=AF=E6=8E=A7=E5=88=B6=EF=BC=8C=E6=8C=89=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E7=81=AD=E7=81=AF=E7=AD=89=E9=80=BB=E8=BE=91=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/Service/SingleLightService.cs | 108 ++++++++---------- WCS.BLL/Tool/Helper.cs | 20 +++- WCS.BLL/Tool/TCPClient.cs | 2 +- 3 files changed, 67 insertions(+), 63 deletions(-) diff --git a/WCS.BLL/Services/Service/SingleLightService.cs b/WCS.BLL/Services/Service/SingleLightService.cs index e27551c..c506dfc 100644 --- a/WCS.BLL/Services/Service/SingleLightService.cs +++ b/WCS.BLL/Services/Service/SingleLightService.cs @@ -47,18 +47,6 @@ namespace WCS.BLL.Services.Service //库位编码去重 var storeCodes = request.StoreCodes.Distinct() .ToList(); - //For联调 - if (storeCodes.Contains("A01-R1C1")) - { - //返回成功 - return new ResponseCommon() - { - Code = 200, - Message = "success", - }; - } - - var stores = DbHelp.db.Queryable() .Where(t => storeCodes.Contains(t.StoreCode)) .ToList(); @@ -81,34 +69,6 @@ namespace WCS.BLL.Services.Service var modules = DbHelp.db.Queryable().Where(t => moduleIds.Contains(t.Id)) .ToList(); - //加载请求参数中的库位灯 板子ID和货架ID - //foreach (var store in request.StoreList) - //{ - // var storeInDb = stores.Where(t => t.StoreCode == store.StoreCode).FirstOrDefault(); - // if (storeInDb == null) - // { - // return new ResponseCommon - // { - // Code = 201, - // Message = $"操作失败:库位{store.StoreCode}不存在(store)!" - // }; - // } - // else - // store.ShelfId = storeInDb.ShelfId; - - // var moduleInDb = modules.Where(t => t.Id == storeInDb.ModuleId).FirstOrDefault(); - // if (moduleInDb == null) - // { - // return new ResponseCommon - // { - // Code = 201, - // Message = $"操作失败:库位{store.StoreCode}不存在(module)!" - // }; - // } - // else - // store.BoardId = moduleInDb.BoardId; - //} - //合并:同一个货架的库位合并 var shelfModels = new List(); foreach (var shelf in shelfs) @@ -116,22 +76,19 @@ namespace WCS.BLL.Services.Service var shelfModel = new SingleLightShelfModel(); //报警灯 shelfModel.WarningLightMode = request.LightMode; - //shelfModel.WarningBuzzerMode = request.WarningBuzzerMode; shelfModel.WarningLightColor = request.ColorMode; shelfModel.WarningBoardId = shelf.LightId; shelfModel.ClientIp = shelf.ClientIp; - //库位 - //var storesThisShelf = request; - //foreach (var storeThisShelf in storesThisShelf) - //{ - // shelfModel.StoreList.Add(new SingleLightStoreModel() - // { - // BoardId = storeThisShelf.BoardId, - // LightColor = storeThisShelf.LightColor, - // LightMode = storeThisShelf.LightMode, - // }); - //} - //shelfModels.Add(shelfModel); + + shelfModel.StoreList = stores.Where(t => t.ShelfId == shelf.Id) + .Select(t => new SingleLightStoreModel() + { + BoardId = t.BoardId, + LightMode = request.LightMode, + LightColor = request.ColorMode, + }).ToList(); + + shelfModels.Add(shelfModel); } //合并:同一个TCP的货架合并 报警灯和库位灯统一只发送一条指令 @@ -142,10 +99,23 @@ namespace WCS.BLL.Services.Service { var shelfModelsInOneIp = shelfModels.Where(t => t.ClientIp == clientIp).ToList(); var sendData = Helper.SingleLightControl(shelfModelsInOneIp); - - TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(clientIp); - tCPClient.Send(sendData); - Logs.Write("【单灯单独控制】发送指令" + BitConverter.ToString(sendData)); + TCPClient tcpClient = TCPClientManager.GetTCPClientByIPHost(clientIp); + if (tcpClient != null) + { + try + { + tcpClient.Send(sendData); + Logs.Write("【单灯单独控制】发送指令" + BitConverter.ToString(sendData)); + } + catch (Exception ex) + { + Logs.Write($"【单灯单独控制】{clientIp}以下指令发送中遇到异常{ex.Message}" + BitConverter.ToString(sendData)); + } + } + else + { + Logs.Write($"【单灯单独控制】{clientIp}未连接,以下指令未能成功发送" + BitConverter.ToString(sendData)); + } } //返回成功 @@ -203,9 +173,27 @@ namespace WCS.BLL.Services.Service .ToList(); //挨个发关灯指令 - foreach (var clientIP in clientIPs) - { - + foreach (var clientIP in clientIPs) + { + //生成关灯指令 + var sendData = Helper.SingleLightTrunOffAllLight(); + TCPClient tcpClient = TCPClientManager.GetTCPClientByIPHost(clientIP); + if (tcpClient != null) + { + try + { + tcpClient.Send(sendData); + Logs.Write("【单灯单独控制】发送指令" + BitConverter.ToString(sendData)); + } + catch (Exception ex) + { + Logs.Write($"【单灯单独控制】{clientIP}以下指令发送中遇到异常{ex.Message}" + BitConverter.ToString(sendData)); + } + } + else + { + Logs.Write($"【单灯单独控制】{clientIP}未连接,以下指令未能成功发送" + BitConverter.ToString(sendData)); + } } //返回成功 diff --git a/WCS.BLL/Tool/Helper.cs b/WCS.BLL/Tool/Helper.cs index 5e404df..c08f1d1 100644 --- a/WCS.BLL/Tool/Helper.cs +++ b/WCS.BLL/Tool/Helper.cs @@ -364,9 +364,9 @@ namespace WCS.BLL.Tool } } //蜂鸣器需要发送指令 - if (shelf.WarningBuzzerMode != -1) + if (shelf.WarningLightMode == 3)//单灯短亮一次的情况下 蜂鸣器短鸣一次 { - var singleLightData = GenerateSingleLightData(shelf.WarningBoardId + 6, shelf.WarningBuzzerMode, shelf.WarningLightColor); + var singleLightData = GenerateSingleLightData(shelf.WarningBoardId + 6, 3, shelf.WarningLightColor); lightCount++; dataBase = dataBase.Concat(singleLightData).ToArray(); } @@ -421,6 +421,22 @@ namespace WCS.BLL.Tool public int LightColor { get; set; } } + //单灯货架全部灭灯 + public static byte[] SingleLightTrunOffAllLight() + { + byte[] dataBase = new byte[8]; + dataBase[0] = 0xff; + dataBase[1] = 0x01; + dataBase[2] = 0x00; + dataBase[3] = 0x0A; + dataBase[4] = 0xff; + dataBase[5] = 0xff; + dataBase[6] = 0x00; + dataBase[7] = 0x00; + byte[] dataWithCRC = Crc16(dataBase, dataBase.Length, true); + return dataWithCRC; + } + /// /// 返回数据处理 /// diff --git a/WCS.BLL/Tool/TCPClient.cs b/WCS.BLL/Tool/TCPClient.cs index c43d3b8..3c2b830 100644 --- a/WCS.BLL/Tool/TCPClient.cs +++ b/WCS.BLL/Tool/TCPClient.cs @@ -123,7 +123,7 @@ namespace WCS.BLL var message = new MessageDto(); var firstMessage = MessageList.Select(t => new { Id = t.Key, Value = t.Value }) .OrderBy(t => t.Value.CreateTime) - .First(); + .FirstOrDefault(); if (firstMessage != null) { MessageList.TryRemove(firstMessage.Id, out message);