diff --git a/WCS.BLL/Manager/TCPClientManager.cs b/WCS.BLL/Manager/TCPClientManager.cs index 1c6b76b..cc66223 100644 --- a/WCS.BLL/Manager/TCPClientManager.cs +++ b/WCS.BLL/Manager/TCPClientManager.cs @@ -1,4 +1,5 @@ -using System; +using SqlSugar; +using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; @@ -177,6 +178,19 @@ namespace WCS.BLL.Manager //后台启动时给所有板子、警示灯发送复位操作 保持状态一致 public static void InitStatus(TCPClient tcpClient) { + + List MI = DbHelp.db.Queryable().Where(it => it.CleintIp == tcpClient.RemoteIPHost).ToList(); + if (MI.Count != 0) + { + List SI = DbHelp.db.Queryable().Where(it => it.ShelfCode == MI[0].ShelfCode).ToList(); + if (SI.Count != 0) + { + if (SI[0].ShelfTypeName == "信息化货架") + { + return; + } + } + } Task.Run(() => { try diff --git a/WCS.BLL/Services/Service/InstoreService.cs b/WCS.BLL/Services/Service/InstoreService.cs index 991a12e..da9625a 100644 --- a/WCS.BLL/Services/Service/InstoreService.cs +++ b/WCS.BLL/Services/Service/InstoreService.cs @@ -459,28 +459,30 @@ namespace WCS.BLL.Services.Service } //亮灯 TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(sendIP); - byte[] data1 = new byte[8]; - data1[0] = 0xff; - data1[1] = 0x02; - data1[2] = 0x00; - data1[3] = 0x0a; - data1[4] = (byte)warnLightID; - data1[5] = 0x03; - data1[6] = 0x02; - data1[7] = 0x02; - byte[] senddata1 = Tool.Helper.Crc16(data1,data1.Length,false); + //byte[] data1 = new byte[8]; + //data1[0] = 0xff; + //data1[1] = 0x02; + //data1[2] = 0x00; + //data1[3] = 0x0a; + //data1[4] = (byte)warnLightID; + //data1[5] = 0x03; + //data1[6] = 0x02; + //data1[7] = 0x02; + //byte[] senddata1 = Tool.Helper.Crc16(data1, data1.Length, true); + byte[] senddata1 = Tool.Helper.InstoreWarnLight(warnLightID); tCPClient.Send(senddata1); //报警灯短亮一次 - byte[] data2 = new byte[8]; - data2[0] = 0xff; - data2[1] = 0x01; - data2[2] = 0x00; - data2[3] = 0x0a; - data2[4] = 0x01; - data2[5] = (byte)PCBId; - data2[6] = 0x03; - data2[7] = 0x02; - byte[] senddata2 = Tool.Helper.Crc16(data2, data2.Length, false); + //byte[] data2 = new byte[8]; + //data2[0] = 0xff; + //data2[1] = 0x01; + //data2[2] = 0x00; + //data2[3] = 0x0a; + //data2[4] = 0x01; + //data2[5] = (byte)PCBId; + //data2[6] = 0x03; + //data2[7] = 0x02; + //byte[] senddata2 = Tool.Helper.Crc16(data2, data2.Length, true); + byte[] senddata2 = Tool.Helper.InstoreLight(PCBId); tCPClient.Send(senddata2); //库位灯短亮一次 return new ResponseCommonSingle() diff --git a/WCS.BLL/Services/Service/OutstoreService.cs b/WCS.BLL/Services/Service/OutstoreService.cs index 875db49..ff02410 100644 --- a/WCS.BLL/Services/Service/OutstoreService.cs +++ b/WCS.BLL/Services/Service/OutstoreService.cs @@ -10,6 +10,7 @@ using WCS.BLL.Config; using WCS.BLL.DbModels; using WCS.BLL.Manager; using WCS.BLL.Services.IService; +using WCS.BLL.Tool; using WCS.DAL.Db; using WCS.DAL.DbModels; using WCS.Model; @@ -601,8 +602,75 @@ namespace WCS.BLL.Services.Service od.LightColor = LightColor; orcs.Data.Add(od); } - //亮灯 - + //需要出库的货架名 + List StoreCode = new List(); + //库位灯亮灯 + Dictionary> dict = new Dictionary>(); + foreach (OutOrderMatDetail oomd in outOrderMatDetails) + { + List mi= DbHelp.db.Queryable().Where(it => it.ModuleCode == oomd.StoreCode).ToList(); + if (mi.Count != 0) + { + if (!StoreCode.Contains(oomd.StoreCode)) + { + StoreCode.Add(oomd.StoreCode); + } + if (!dict.Keys.Contains(mi[0].CleintIp)) + { + List board_id = new List(); + board_id.Add(mi[0].BoardId); + dict.Add(mi[0].CleintIp, board_id); + } + else + { + foreach (var v in dict) + { + if (v.Key == mi[0].CleintIp) + { + if (!v.Value.Contains(mi[0].BoardId)) + { + v.Value.Add(mi[0].BoardId); + } + } + } + } + } + } + foreach (var v in dict) + { + string sendIP = v.Key; + TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(sendIP); + byte[] lightOn = Helper.OutstoreLight(v.Value, LightColor,1); + tCPClient.Send(lightOn); + Thread.Sleep(100); + } + //报警灯亮 + List WarnLightShelfCode = new List(); + foreach (string storecode in StoreCode) + { + List mi = DbHelp.db.Queryable().Where(it => it.ModuleCode == storecode).ToList(); + if (mi.Count != 0) + { + if (!WarnLightShelfCode.Contains(mi[0].ShelfCode)) + { + WarnLightShelfCode.Add(mi[0].ShelfCode); + } + } + } + foreach (string shelfcode in WarnLightShelfCode) + { + List si = DbHelp.db.Queryable().Where(it => it.ShelfCode == shelfcode).ToList(); + if (si.Count != 0) + { + for (int i = 0; i < si.Count; i++) + { + TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(si[i].ClientIp); + byte[] warnlightOn = Helper.OutstoreWarnLight(si[i].LightId,"无",1,0); + tCPClient.Send(warnlightOn); + Thread.Sleep(100); + } + } + } //返回 return new OutResponseCommonSingle() { @@ -880,7 +948,82 @@ namespace WCS.BLL.Services.Service DbHelp.db.Updateable().SetColumns(it => it.OrderNumber == null).Where(it => it.OrderNumber == request.OrderNumber).ExecuteCommand(); //灭灯 - + //获取需要出库的物料明细 + var outOrderMatDetails = DbHelp.db.Queryable() + .Where(t => t.OrderNumber == request.OrderNumber) + .ToList(); + //需要出库的货架名 + List StoreCode = new List(); + //库位灯灭灯 + Dictionary> dict = new Dictionary>(); + foreach (OutOrderMatDetail oomd in outOrderMatDetails) + { + List mi = DbHelp.db.Queryable().Where(it => it.ModuleCode == oomd.StoreCode).ToList(); + if (mi.Count != 0) + { + if (!StoreCode.Contains(oomd.StoreCode)) + { + StoreCode.Add(oomd.StoreCode); + } + if (!dict.Keys.Contains(mi[0].CleintIp)) + { + List board_id = new List(); + board_id.Add(mi[0].BoardId); + dict.Add(mi[0].CleintIp, board_id); + } + else + { + foreach (var v in dict) + { + if (v.Key == mi[0].CleintIp) + { + if (!v.Value.Contains(mi[0].BoardId)) + { + v.Value.Add(mi[0].BoardId); + } + } + } + } + } + } + foreach (var v in dict) + { + string sendIP = v.Key; + TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(sendIP); + byte[] lightOn = Helper.OutstoreLight(v.Value, "无",0); + tCPClient.Send(lightOn); + Thread.Sleep(100); + } + //报警灯灭 + List WarnLightShelfCode = new List(); + foreach (string storecode in StoreCode) + { + List mi = DbHelp.db.Queryable().Where(it => it.ModuleCode == storecode).ToList(); + if (mi.Count != 0) + { + if (!WarnLightShelfCode.Contains(mi[0].ShelfCode)) + { + WarnLightShelfCode.Add(mi[0].ShelfCode); + } + } + } + foreach (string shelfcode in WarnLightShelfCode) + { + List si = DbHelp.db.Queryable().Where(it => it.ShelfCode == shelfcode).ToList(); + if (si.Count != 0) + { + for (int i = 0; i < si.Count; i++) + { + TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(si[i].ClientIp); + byte[] warnlightOn = Helper.OutstoreWarnLight(si[i].LightId, "无", 0, 0); + tCPClient.Send(warnlightOn); + Thread.Sleep(100); + } + } + } + + + return new ResponseCommon() { Code = 200, diff --git a/WCS.BLL/Tool/Helper.cs b/WCS.BLL/Tool/Helper.cs index 7e9a81b..0c48d8a 100644 --- a/WCS.BLL/Tool/Helper.cs +++ b/WCS.BLL/Tool/Helper.cs @@ -81,5 +81,129 @@ namespace WCS.BLL.Tool } return data.ToArray(); } + + //出库库位灯亮灯 + public static byte[] OutstoreLight(List board_id, string lightcolor,int status) + { + byte color = 0x00; + switch (lightcolor) + { + case "红": + color = 0x01; + break; + case "绿": + color = 0x02; + break; + case "黄": + color = 0x03; + break; + case "蓝": + color = 0x04; + break; + case "紫": + color = 0x05; + break; + case "青": + color = 0x06; + break; + case "白": + color = 0x07; + break; + case "无": + color = 0x00; + break; + } + byte[] data1 = new byte[3 * board_id.Count + 5]; + data1[0] = 0xff; + data1[1] = 0x01; + byte[] length_base = BitConverter.GetBytes(data1.Length + 2); + data1[2] = length_base[1]; + data1[3] = length_base[0]; + data1[4] = (byte)board_id.Count; + for (int i = 0; i < board_id.Count; i++) + { + data1[5 + i * 3] = (byte)board_id[i]; + data1[5 + i * 3 + 1] = (byte)status; + data1[5 + i * 3 + 2] = color; + } + byte[] data = Crc16(data1, data1.Length, true); + return data; + } + + //出库警示灯亮灯 + public static byte[] OutstoreWarnLight(int lightid ,string lightcolor, int status,int beestatus) + { + byte color = 0x00; + switch (lightcolor) + { + case "红": + color = 0x01; + break; + case "绿": + color = 0x02; + break; + case "黄": + color = 0x03; + break; + case "蓝": + color = 0x04; + break; + case "紫": + color = 0x05; + break; + case "青": + color = 0x06; + break; + case "白": + color = 0x07; + break; + case "无": + color = 0x00; + break; + } + byte[] data1 = new byte[8]; + data1[0] = 0xff; + data1[1] = 0x02; + data1[2] = 0x00; + data1[3] = 0x0a; + data1[4] = (byte)lightid; + data1[5] = (byte)status; + data1[6] = color; + data1[7] = (byte)beestatus; + byte[] data2 = Crc16(data1, data1.Length, true); + return data2; + } + + //入库库位灯短亮(绿色) + public static byte[] InstoreLight(int board_id) + { + byte[] data2 = new byte[8]; + data2[0] = 0xff; + data2[1] = 0x01; + data2[2] = 0x00; + data2[3] = 0x0a; + data2[4] = 0x01; + data2[5] = (byte)board_id; + data2[6] = 0x03; + data2[7] = 0x02; + byte[] senddata2 = Tool.Helper.Crc16(data2, data2.Length, true); + return senddata2; + } + + //入库警示灯短亮(绿色),蜂鸣器鸣叫一次 + public static byte[] InstoreWarnLight(int lightid) + { + byte[] data1 = new byte[8]; + data1[0] = 0xff; + data1[1] = 0x02; + data1[2] = 0x00; + data1[3] = 0x0a; + data1[4] = (byte)lightid; + data1[5] = 0x03; + data1[6] = 0x02; + data1[7] = 0x02; + byte[] senddata1 = Tool.Helper.Crc16(data1, data1.Length, true); + return senddata1; + } } }