1.增加手动自检功能,主页增加状态显示

This commit is contained in:
hehaibing-1996
2024-06-11 14:03:06 +08:00
parent a87a93ea11
commit 95437c2ccf
24 changed files with 576 additions and 123 deletions

View File

@ -458,7 +458,7 @@ namespace WCS.BLL.HardWare
var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode. && t.OrderNumber == OrderNumber)
.Any();
//WebSocket通知前台以更新左侧出库单列表的状态
if (!isOuting )
if (!isOuting)
{
#region WebSocket
var messageMode = new WebSocketMessageModel()
@ -706,9 +706,21 @@ namespace WCS.BLL.HardWare
public void ShelfCheck()
{
foreach (var module in Modules.Where(t => t.IsEnable).ToList())
try
{
module.ShelfCheck(TcpCleint);
OrderNumber = "自检中...";
foreach (var module in Modules.Where(t => t.IsEnable).ToList())
{
module.ShelfCheck(TcpCleint);
}
}
catch (Exception ex)
{
Logs.Write("自检发现异常:" + ex);
}
finally
{
OrderNumber = string.Empty;
}
}
#endregion
@ -794,6 +806,9 @@ namespace WCS.BLL.HardWare
case 0x19://电压值3
QueryVoltageProcess(data, boardId, lightNumber);
break;
case 0x0B://自检结果反馈
SelfCheckProcess(data, boardId, lightNumber);
break;
default:
;
break;
@ -1977,6 +1992,164 @@ namespace WCS.BLL.HardWare
}
}
}
public void SelfCheckProcess(byte[] data, int boardId, int lightNumber)
{
if (data[TcpCleint.PreFixLength + 3] == 0x01)
{
//比对结果相同
}
//比对结果不同
else if (data[TcpCleint.PreFixLength + 3] == 0x00)
{
//获取当前板所有库位
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
.Where(t => t.BoardId == boardId)
.ToList();
//当前设置的板库位数
var boardStoreNumber = storeInfos.Count();
List<char> dataTemp = new List<char>();
int index11 = 0;
while (boardStoreNumber > 0)
{
if (boardStoreNumber >= 4)
{
dataTemp.AddRange(Convert.ToString(data[TcpCleint.PreFixLength + 4 + index11], 2).PadLeft(8, '0').Reverse().ToList());
boardStoreNumber = boardStoreNumber - 4;
}
else
{
dataTemp.AddRange(Convert.ToString(data[TcpCleint.PreFixLength + 4 + index11], 2).PadLeft(2 * boardStoreNumber, '0').Reverse().ToList());
boardStoreNumber = 0;
}
index11++;
}
boardStoreNumber = storeInfos.Count();
for (int index = 0; index <= boardStoreNumber - 1; index++)
{
//当前库位异常
if (dataTemp[2 * index + 1] == '1')
{
if (dataTemp[2 * index] == '1')
{
var storeInfo = storeInfos.Where(t => t.LightNumber == index + 1).First();
if (storeInfo != null)
{
#region WebSocket通知前台
var exceptionMessage = storeInfo.StoreCode + $"自检发现物料{storeInfo.CurrentMatSn}丢失,请确认是否删除?";
var warningModel = new WebSocketMessageModel()
{
WarningType = WarningTypeEnum.,
StoreId = storeInfo.Id,
StoreCode = storeInfo.StoreCode,
ModuleId = storeInfo.ModuleId,
ModuleCode = storeInfo.ModuleCode,
ShelfCode = ShelfCode,
ShelfId = ShelfId,
WarningMessage = exceptionMessage,
ClientIp = WebSocketIpAddress
};
WarningManager.SendWarning(warningModel);
#endregion
//#region 【后台】丢失的数据处理
//Task.Run(() =>
//{
// try
// {
// DbHelp.db.BeginTran();
// //库位表字段清空
// storeInfo.CurrentMatSN = string.Empty;
// DbHelp.db.Updateable(storeInfo).ExecuteCommand();
// //库存表记录删除、插入出入记录
// var inventoryDetail = DbHelp.db.Queryable<InventoryDetail>().Where(t => t.StoreCode == storeInfo.StoreCode).First();
// if (inventoryDetail != null)
// {
// var inOutRecord = new InOutRecord()
// {
// StoreCode = storeInfo.StoreCode,
// StoreId = storeInfo.Id,
// StoreInfo = storeInfo,
// R = storeInfo.R,
// C = storeInfo.C,
// Wei = storeInfo.Wei,
// WarehouseCode = inventoryDetail.WarehouseCode,
// MatSN = inventoryDetail.MatSN,
// MatCode = inventoryDetail.MatCode,
// MatName = inventoryDetail.MatName,
// MatBatch = inventoryDetail.MatBatch,
// MatQty = inventoryDetail.MatQty,
// MatSpec = inventoryDetail.MatSpec,
// OrderNumber = inventoryDetail.OrderNumber,
// OrderProdNumber = inventoryDetail.OrderProdNumber,
// OrderMaterialCode = inventoryDetail.OrderMaterialCode,
// OrderMaterialName = inventoryDetail.OrderMaterialName,
// OrderMaterialSpec = inventoryDetail.OrderMaterialSpec,
// GroupName = LocalFile.Config.GroupName,
// Direction = DirectionEnum.丢失,
// };
// DbHelp.db.Insertable(inOutRecord).ExecuteCommand();
// DbHelp.db.Deleteable(inventoryDetail).ExecuteCommand();
// }
// DbHelp.db.CommitTran();
// }
// catch (Exception e)
// {
// DbHelp.db.RollbackTran();
// }
//});
//#endregion
}
//库位未配置、返回数据异常
else
{
Logs.Write($"[进入入库模式异常]板Id{boardId},库位号{index + 1}找不到对应库位!");
}
}
else if (dataTemp[2 * index] == '0')
{
var storeInfo = storeInfos.Where(t => t.LightNumber == index + 1).First();
if (storeInfo != null)
{
#region WebSocket通知前台
var exceptionMessage = $"自检发现库位{storeInfo.StoreCode}存在物料未扫描上架,请拿下后点击【确认】消除报警";
var warningModel = new WebSocketMessageModel()
{
WarningType = WarningTypeEnum.,
StoreId = storeInfo.Id,
StoreCode = storeInfo.StoreCode,
ModuleId = storeInfo.ModuleId,
ModuleCode = storeInfo.ModuleCode,
ShelfCode = ShelfCode,
ShelfId = ShelfId,
WarningMessage = exceptionMessage,
ClientIp = WebSocketIpAddress
};
WarningManager.SendWarning(warningModel);
#endregion
//#region 【记录缓存异常信息】
//var shelfStatus = LocalStatic.ShelfStatuses.Where(t => t.ShelfCode == storeInfo.ShelfCode).First();
//LocalStatic.CheckErr.Add($"库位{storeInfo.StoreCode}:存在物料未扫描上架,请取出后重新扫描上架!");
//#endregion
//WaringLightAlwaysRed(shelfStatus.ClientIp, shelfStatus.LightId);
}
else
{
Logs.Write($"[进入入库模式异常]板Id{boardId},库位号{index + 1}找不到对应库位!");
}
}
}
}
}
}
#endregion
}