新增单灯货架亮灯

This commit is contained in:
陶坤
2024-05-23 13:39:23 +08:00
parent 2c99ebfb73
commit 4e42986c17
4 changed files with 307 additions and 24 deletions

View File

@ -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<ModuleInfo> MI = DbHelp.db.Queryable<ModuleInfo>().Where(it => it.CleintIp == tcpClient.RemoteIPHost).ToList();
if (MI.Count != 0)
{
List<ShelfInfo> SI = DbHelp.db.Queryable<ShelfInfo>().Where(it => it.ShelfCode == MI[0].ShelfCode).ToList();
if (SI.Count != 0)
{
if (SI[0].ShelfTypeName == "信息化货架")
{
return;
}
}
}
Task.Run(() =>
{
try

View File

@ -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()

View File

@ -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<string> StoreCode = new List<string>();
//库位灯亮灯
Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();
foreach (OutOrderMatDetail oomd in outOrderMatDetails)
{
List<ModuleInfo> mi= DbHelp.db.Queryable<ModuleInfo>().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<int> board_id = new List<int>();
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<string> WarnLightShelfCode = new List<string>();
foreach (string storecode in StoreCode)
{
List<ModuleInfo> mi = DbHelp.db.Queryable<ModuleInfo>().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<ShelfInfo> si = DbHelp.db.Queryable<ShelfInfo>().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<OrderLight>().SetColumns(it => it.OrderNumber == null).Where(it => it.OrderNumber == request.OrderNumber).ExecuteCommand();
//灭灯
//获取需要出库的物料明细
var outOrderMatDetails = DbHelp.db.Queryable<OutOrderMatDetail>()
.Where(t => t.OrderNumber == request.OrderNumber)
.ToList();
//需要出库的货架名
List<string> StoreCode = new List<string>();
//库位灯灭灯
Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();
foreach (OutOrderMatDetail oomd in outOrderMatDetails)
{
List<ModuleInfo> mi = DbHelp.db.Queryable<ModuleInfo>().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<int> board_id = new List<int>();
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<string> WarnLightShelfCode = new List<string>();
foreach (string storecode in StoreCode)
{
List<ModuleInfo> mi = DbHelp.db.Queryable<ModuleInfo>().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<ShelfInfo> si = DbHelp.db.Queryable<ShelfInfo>().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,

View File

@ -81,5 +81,129 @@ namespace WCS.BLL.Tool
}
return data.ToArray();
}
//出库库位灯亮灯
public static byte[] OutstoreLight(List<int> 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;
}
}
}