钻探项目:单灯控制,按区域灭灯等逻辑提交

This commit is contained in:
hehaibing-1996
2024-11-12 14:48:18 +08:00
parent 4fc593797f
commit 3aa7e09e6a
3 changed files with 67 additions and 63 deletions

View File

@ -47,18 +47,6 @@ namespace WCS.BLL.Services.Service
//库位编码去重 //库位编码去重
var storeCodes = request.StoreCodes.Distinct() var storeCodes = request.StoreCodes.Distinct()
.ToList(); .ToList();
//For联调
if (storeCodes.Contains("A01-R1C1"))
{
//返回成功
return new ResponseCommon<object>()
{
Code = 200,
Message = "success",
};
}
var stores = DbHelp.db.Queryable<StoreInfo>() var stores = DbHelp.db.Queryable<StoreInfo>()
.Where(t => storeCodes.Contains(t.StoreCode)) .Where(t => storeCodes.Contains(t.StoreCode))
.ToList(); .ToList();
@ -81,34 +69,6 @@ namespace WCS.BLL.Services.Service
var modules = DbHelp.db.Queryable<ModuleInfo>().Where(t => moduleIds.Contains(t.Id)) var modules = DbHelp.db.Queryable<ModuleInfo>().Where(t => moduleIds.Contains(t.Id))
.ToList(); .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<object>
// {
// 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<object>
// {
// Code = 201,
// Message = $"操作失败:库位{store.StoreCode}不存在(module)"
// };
// }
// else
// store.BoardId = moduleInDb.BoardId;
//}
//合并:同一个货架的库位合并 //合并:同一个货架的库位合并
var shelfModels = new List<SingleLightShelfModel>(); var shelfModels = new List<SingleLightShelfModel>();
foreach (var shelf in shelfs) foreach (var shelf in shelfs)
@ -116,22 +76,19 @@ namespace WCS.BLL.Services.Service
var shelfModel = new SingleLightShelfModel(); var shelfModel = new SingleLightShelfModel();
//报警灯 //报警灯
shelfModel.WarningLightMode = request.LightMode; shelfModel.WarningLightMode = request.LightMode;
//shelfModel.WarningBuzzerMode = request.WarningBuzzerMode;
shelfModel.WarningLightColor = request.ColorMode; shelfModel.WarningLightColor = request.ColorMode;
shelfModel.WarningBoardId = shelf.LightId; shelfModel.WarningBoardId = shelf.LightId;
shelfModel.ClientIp = shelf.ClientIp; shelfModel.ClientIp = shelf.ClientIp;
//库位
//var storesThisShelf = request; shelfModel.StoreList = stores.Where(t => t.ShelfId == shelf.Id)
//foreach (var storeThisShelf in storesThisShelf) .Select(t => new SingleLightStoreModel()
//{ {
// shelfModel.StoreList.Add(new SingleLightStoreModel() BoardId = t.BoardId,
// { LightMode = request.LightMode,
// BoardId = storeThisShelf.BoardId, LightColor = request.ColorMode,
// LightColor = storeThisShelf.LightColor, }).ToList();
// LightMode = storeThisShelf.LightMode,
// }); shelfModels.Add(shelfModel);
//}
//shelfModels.Add(shelfModel);
} }
//合并同一个TCP的货架合并 报警灯和库位灯统一只发送一条指令 //合并同一个TCP的货架合并 报警灯和库位灯统一只发送一条指令
@ -142,10 +99,23 @@ namespace WCS.BLL.Services.Service
{ {
var shelfModelsInOneIp = shelfModels.Where(t => t.ClientIp == clientIp).ToList(); var shelfModelsInOneIp = shelfModels.Where(t => t.ClientIp == clientIp).ToList();
var sendData = Helper.SingleLightControl(shelfModelsInOneIp); var sendData = Helper.SingleLightControl(shelfModelsInOneIp);
TCPClient tcpClient = TCPClientManager.GetTCPClientByIPHost(clientIp);
TCPClient tCPClient = TCPClientManager.GetTCPClientByIPHost(clientIp); if (tcpClient != null)
tCPClient.Send(sendData); {
Logs.Write("【单灯单独控制】发送指令" + BitConverter.ToString(sendData)); 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(); .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));
}
} }
//返回成功 //返回成功

View File

@ -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++; lightCount++;
dataBase = dataBase.Concat(singleLightData).ToArray(); dataBase = dataBase.Concat(singleLightData).ToArray();
} }
@ -421,6 +421,22 @@ namespace WCS.BLL.Tool
public int LightColor { get; set; } 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;
}
/// <summary> /// <summary>
/// 返回数据处理 /// 返回数据处理
/// </summary> /// </summary>

View File

@ -123,7 +123,7 @@ namespace WCS.BLL
var message = new MessageDto(); var message = new MessageDto();
var firstMessage = MessageList.Select(t => new { Id = t.Key, Value = t.Value }) var firstMessage = MessageList.Select(t => new { Id = t.Key, Value = t.Value })
.OrderBy(t => t.Value.CreateTime) .OrderBy(t => t.Value.CreateTime)
.First(); .FirstOrDefault();
if (firstMessage != null) if (firstMessage != null)
{ {
MessageList.TryRemove(firstMessage.Id, out message); MessageList.TryRemove(firstMessage.Id, out message);