液晶标签剩余协议对接 编码

This commit is contained in:
hehaibing-1996
2024-12-10 19:09:43 +08:00
parent c94af9e987
commit 85a35ac34f
17 changed files with 393 additions and 149 deletions

View File

@ -1,6 +1,7 @@
using System;
using WCS.BLL.Config;
using WCS.BLL.DbModels;
using WCS.BLL.DbModels.Task;
using WCS.BLL.Manager;
using WCS.DAL.Db;
using WCS.DAL.DbModels;
@ -23,7 +24,7 @@ namespace WCS.BLL.HardWare
ShelfCode = shelfInfo.ShelfCode;
RowCounts = shelfInfo.Rowcounts;
ColumnCounts = shelfInfo.Columncounts;
SetCurrentMode(Mode.);
SetCurrentMode(TaskModeEnum.);
ClientIp = shelfInfo.ClientIp;
LightId = shelfInfo.LightId;
WarningLight = new WarningLight() { LightId = shelfInfo.LightId };
@ -55,7 +56,7 @@ namespace WCS.BLL.HardWare
public string ShelfCode { get; set; }
public int RowCounts { get; set; }
public int ColumnCounts { get; set; }
public Mode CurrentMode { get; set; }
public TaskModeEnum CurrentMode { get; set; }
public DateTime SetCurrentModeTime { get; set; }
public string ModulesStr { get; set; }//当前货架所有模组的Str
@ -70,15 +71,15 @@ namespace WCS.BLL.HardWare
public WarningLight WarningLight { get; set; }
public void ClearWarning()
{
if (this.CurrentMode == Mode.)
if (this.CurrentMode == TaskModeEnum.)
{
WarningLight.BlueLight(TcpCleint);
}
else if (this.CurrentMode == Mode.)
else if (this.CurrentMode == TaskModeEnum.)
{
WarningLight.GreenLight(TcpCleint);
}
else if (this.CurrentMode == Mode.)
else if (this.CurrentMode == TaskModeEnum.)
{
WarningLight.GreenLight(TcpCleint);
}
@ -123,20 +124,20 @@ namespace WCS.BLL.HardWare
try
{
Logs.Write($"[GoInInstore IPAddress]{IPAddress}", LogsType.Instore);
if (this.CurrentMode == Mode.)
if (this.CurrentMode == TaskModeEnum.)
{
CurrentCom = IPAddress;
return;
}
//判断当前模式是否为待机模式
else if (this.CurrentMode != Mode.)
else if (this.CurrentMode != TaskModeEnum.)
{
return;
}
else
{
//this.CurrentMode = Mode.入库模式;
SetCurrentMode(Mode.);
//this.CurrentMode = TaskModeEnum.入库模式;
SetCurrentMode(TaskModeEnum.);
}
//清空错误
ExceptionMessages.Clear();
@ -161,7 +162,7 @@ namespace WCS.BLL.HardWare
timeSpan = DateTime.Now - beginTime;
//所有板子成功进入入库模式 表示进入入库模式成功,跳出循环
var isExistsNotInstore = Modules.Where(t => t.CurrentMode != Mode.)
var isExistsNotInstore = Modules.Where(t => t.CurrentMode != TaskModeEnum.)
.Where(t => t.IsEnable)
.Any();
if (!isExistsNotInstore)
@ -184,7 +185,7 @@ namespace WCS.BLL.HardWare
}
//循环结束后判断当前板子状态
var notInstoreList = Modules.Where(t => t.CurrentMode != Mode.)
var notInstoreList = Modules.Where(t => t.CurrentMode != TaskModeEnum.)
.Where(t => t.IsEnable).ToList();
if (notInstoreList.Count > 0)
@ -235,14 +236,14 @@ namespace WCS.BLL.HardWare
public void GoOutInstore()
{
//当前货架是否为入库模式
if (CurrentMode != Mode.)
if (CurrentMode != TaskModeEnum.)
{
return;
}
else
{
//this.CurrentMode = Mode.待机模式;
SetCurrentMode(Mode.);
//this.CurrentMode = TaskModeEnum.待机模式;
SetCurrentMode(TaskModeEnum.);
}
//清空错误
@ -251,7 +252,7 @@ namespace WCS.BLL.HardWare
foreach (var module in Modules.Where(t => t.IsEnable)
.ToList())
{
if (module.CurrentMode == Mode.)
if (module.CurrentMode == TaskModeEnum.)
module.GoOutInstoreMode(TcpCleint);
}
@ -262,7 +263,7 @@ namespace WCS.BLL.HardWare
{
timeSpan = DateTime.Now - beginTime;
//所有板子是否成功退出入库模式
var isExistsInstore = Modules.Where(t => t.CurrentMode != Mode.)
var isExistsInstore = Modules.Where(t => t.CurrentMode != TaskModeEnum.)
.Where(t => t.IsEnable)
.Any();
if (!isExistsInstore)
@ -274,13 +275,13 @@ namespace WCS.BLL.HardWare
}
//循环结束后判断当前板子状态
var list = Modules.Where(t => t.CurrentMode != Mode.)
var list = Modules.Where(t => t.CurrentMode != TaskModeEnum.)
.Where(t => t.IsEnable)
.ToList();
if (list.Count > 0)
{
//CurrentMode = Mode.待机模式;
SetCurrentMode(Mode.);
//CurrentMode = TaskModeEnum.待机模式;
SetCurrentMode(TaskModeEnum.);
foreach (var item in list)
{
ExceptionMessages.Add($"模组{item.ModuleCode}未成功退出入库模式!");
@ -372,7 +373,7 @@ namespace WCS.BLL.HardWare
//查一下是否是当前发料单最后一个货架(在出库模式 同一个发料单下)
var isLastShelf = ShelfManager.Shelves
.Where(t => t.OrderNumber == OrderNumber)
.Where(t => t.CurrentMode == Mode.)
.Where(t => t.CurrentMode == TaskModeEnum.)
.Any();
if (!isLastShelf)
{
@ -421,7 +422,7 @@ namespace WCS.BLL.HardWare
.ToList();
var shelfs = ShelfManager.Shelves.Where(t => shelfIds.Contains(t.ShelfId)).ToList();
var otherModeShelfs = shelfs.Where(t => t.CurrentMode != HardWare.Mode.).ToList();
var otherModeShelfs = shelfs.Where(t => t.CurrentMode != TaskModeEnum.).ToList();
if (otherModeShelfs != null && otherModeShelfs.Count > 0)
{
otherModeShelfs.ForEach(t =>
@ -454,7 +455,7 @@ namespace WCS.BLL.HardWare
Task.Run(() =>
{
//判断是否是当前订单最后一个出库货架
var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode. && t.OrderNumber == OrderNumber)
var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum. && t.OrderNumber == OrderNumber)
.Any();
//WebSocket通知前台以更新左侧出库单列表的状态
if (!isOuting)
@ -483,7 +484,7 @@ namespace WCS.BLL.HardWare
Logs.Write($"发料单{OrderNumber},非最后一个出库货架!", LogsType.Outstore);
var otherShelfs = ShelfManager.Shelves
.Where(t => t.OrderNumber == OrderNumber)
.Where(t => t.CurrentMode == Mode.)
.Where(t => t.CurrentMode == TaskModeEnum.)
.ToList();
otherShelfs.ForEach(shelf =>
@ -516,7 +517,7 @@ namespace WCS.BLL.HardWare
Task.Run(() =>
{
//判断是否是当前订单最后一个出库货架
var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode. && t.OrderNumber == OrderNumber)
var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum. && t.OrderNumber == OrderNumber)
.Any();
//WebSocket通知前台以更新左侧出库单列表的状态
if (!isOuting)
@ -560,14 +561,14 @@ namespace WCS.BLL.HardWare
try
{
//第一步:设置货架当前模式
if (CurrentMode != Mode.)
if (CurrentMode != TaskModeEnum.)
{
Modules.ForEach(t => { t.Reset(TcpCleint); });
//复位需要点时间间隔才能响应指令
Thread.Sleep(1500);
}
//CurrentMode = Mode.出库模式;
SetCurrentMode(Mode.);
//CurrentMode = TaskModeEnum.出库模式;
SetCurrentMode(TaskModeEnum.);
//设置当前操作人
OutOperateUser = OperateUser;
@ -609,7 +610,7 @@ namespace WCS.BLL.HardWare
timeSpan = DateTime.Now - beginTime;
//所有板子成功进入出库模式 表示进入出库模式成功,跳出循环
var isExistsNotInstore = outModules.Where(t => t.CurrentMode != Mode.)
var isExistsNotInstore = outModules.Where(t => t.CurrentMode != TaskModeEnum.)
.Where(t => t.IsEnable)
.Any();
if (!isExistsNotInstore)
@ -619,7 +620,7 @@ namespace WCS.BLL.HardWare
//循环延时处理
Thread.Sleep(50);
}
var list = outModules.Where(t => t.IsEnable && t.CurrentMode != Mode.).ToList();
var list = outModules.Where(t => t.IsEnable && t.CurrentMode != TaskModeEnum.).ToList();
if (list != null && list.Count > 0)
{
var messages = list.Select(t => $"模组{t.ModuleCode}未进入出库模式!").ToList();
@ -653,7 +654,7 @@ namespace WCS.BLL.HardWare
{
Logs.Write($"货架【{ShelfCode}】,开始退出出库", LogsType.Outstore);
//找到在出库中的模组
var outingModules = Modules.Where(t => t.CurrentMode == Mode.)
var outingModules = Modules.Where(t => t.CurrentMode == TaskModeEnum.)
.ToList();
foreach (var module in outingModules)
{
@ -668,7 +669,7 @@ namespace WCS.BLL.HardWare
timeSpan = DateTime.Now - beginTime;
//所有板子成功退出出库模式 表示退出出库模式成功,跳出循环
var isExistsOutstore = outingModules.Where(t => t.CurrentMode == Mode.)
var isExistsOutstore = outingModules.Where(t => t.CurrentMode == TaskModeEnum.)
.Where(t => t.IsEnable)
.Any();
if (!isExistsOutstore)
@ -678,7 +679,7 @@ namespace WCS.BLL.HardWare
//循环延时处理
Thread.Sleep(50);
}
var list = outingModules.Where(t => t.IsEnable && t.CurrentMode == Mode.).ToList();
var list = outingModules.Where(t => t.IsEnable && t.CurrentMode == TaskModeEnum.).ToList();
if (list != null && list.Count > 0)
{
var messages = list.Select(t => $"模组{t.ModuleCode}未退出出库模式!").ToList();
@ -700,13 +701,13 @@ namespace WCS.BLL.HardWare
CurrentOutStoreMatSNs.Clear();
WarningLight.CloseLight(TcpCleint);
SetCurrentMode(Mode.);
SetCurrentMode(TaskModeEnum.);
Logs.Write($"货架【{ShelfCode}】,结束退出出库", LogsType.Outstore);
//Task.Run(() =>
//{
// //判断是否是当前订单最后一个出库货架
// var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.OrderNumber == OrderNumber)
// var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum.出库模式 && t.OrderNumber == OrderNumber)
// .Any();
// //WebSocket通知前台以更新左侧出库单列表的状态
// if (!isOuting)
@ -734,19 +735,19 @@ namespace WCS.BLL.HardWare
try
{
//第一步:设置货架当前模式
if (CurrentMode != Mode.)
if (CurrentMode != TaskModeEnum.)
{
Modules.ForEach(t =>
{
if (CurrentMode != Mode.)
if (CurrentMode != TaskModeEnum.)
t.Reset(TcpCleint);
});
//复位需要点时间间隔才能响应指令
Thread.Sleep(1500);
}
//CurrentMode = Mode.盘点模式;
SetCurrentMode(Mode.);
//CurrentMode = TaskModeEnum.盘点模式;
SetCurrentMode(TaskModeEnum.);
//第二步:货架添加 盘点单号 记录当前盘点的发料单
CurrentStockTakingOrder = stockTakingOrder;
@ -787,7 +788,7 @@ namespace WCS.BLL.HardWare
timeSpan = DateTime.Now - beginTime;
//所有板子成功进入盘点模式 表示进入盘点模式成功,跳出循环
var isExistsNotInstore = outModules.Where(t => t.CurrentMode != Mode.)
var isExistsNotInstore = outModules.Where(t => t.CurrentMode != TaskModeEnum.)
.Where(t => t.IsEnable)
.Any();
if (!isExistsNotInstore)
@ -797,7 +798,7 @@ namespace WCS.BLL.HardWare
//循环延时处理
Thread.Sleep(50);
}
var list = outModules.Where(t => t.IsEnable && t.CurrentMode != Mode.).ToList();
var list = outModules.Where(t => t.IsEnable && t.CurrentMode != TaskModeEnum.).ToList();
if (list != null && list.Count > 0)
{
var messages = list.Select(t => $"模组{t.ModuleCode}未进入盘点模式!").ToList();
@ -847,7 +848,7 @@ namespace WCS.BLL.HardWare
public void GoOutStocktaking()
{
//找到在盘点中的模组
var stockTakingModules = Modules.Where(t => t.CurrentMode == Mode.)
var stockTakingModules = Modules.Where(t => t.CurrentMode == TaskModeEnum.)
.ToList();
foreach (var module in stockTakingModules)
{
@ -864,7 +865,7 @@ namespace WCS.BLL.HardWare
timeSpan = DateTime.Now - beginTime;
//所有板子成功退出盘点模式 表示退出盘点模式成功,跳出循环
var isExistsNotInstore = stockTakingModules.Where(t => t.CurrentMode == Mode.)
var isExistsNotInstore = stockTakingModules.Where(t => t.CurrentMode == TaskModeEnum.)
.Where(t => t.IsEnable)
.Any();
if (!isExistsNotInstore)
@ -874,7 +875,7 @@ namespace WCS.BLL.HardWare
//循环延时处理
Thread.Sleep(50);
}
var list = stockTakingModules.Where(t => t.IsEnable && t.CurrentMode == Mode.).ToList();
var list = stockTakingModules.Where(t => t.IsEnable && t.CurrentMode == TaskModeEnum.).ToList();
if (list != null && list.Count > 0)
{
var messages = list.Select(t => $"模组{t.ModuleCode}未退出盘点模式!").ToList();
@ -896,8 +897,8 @@ namespace WCS.BLL.HardWare
});
CurrentOutStoreMatSNs.Clear();
WarningLight.CloseLight(TcpCleint);
//this.CurrentMode = Mode.待机模式;
SetCurrentMode(Mode.);
//this.CurrentMode = TaskModeEnum.待机模式;
SetCurrentMode(TaskModeEnum.);
}
public void Reset()
@ -911,8 +912,8 @@ namespace WCS.BLL.HardWare
});
}
WarningLight.CloseLight(TcpCleint);
//this.CurrentMode = Mode.待机模式;
SetCurrentMode(Mode.);
//this.CurrentMode = TaskModeEnum.待机模式;
SetCurrentMode(TaskModeEnum.);
}
public void QueryVoltage(int moduleId)
@ -933,7 +934,7 @@ namespace WCS.BLL.HardWare
}
}
public void SetCurrentMode(Mode mode)
public void SetCurrentMode(TaskModeEnum mode)
{
this.CurrentMode = mode;
this.SetCurrentModeTime = DateTime.Now;
@ -958,7 +959,7 @@ namespace WCS.BLL.HardWare
{
try
{
if (CurrentMode == Mode.)
if (CurrentMode == TaskModeEnum.)
OrderNumber = "自检中...";
foreach (var module in Modules.Where(t => t.IsEnable).ToList())
{
@ -1021,7 +1022,7 @@ namespace WCS.BLL.HardWare
}
finally
{
if (CurrentMode == Mode.)
if (CurrentMode == TaskModeEnum.)
OrderNumber = string.Empty;
}
}
@ -1134,7 +1135,7 @@ namespace WCS.BLL.HardWare
}
else
{
module.CurrentMode = Mode.;
module.CurrentMode = TaskModeEnum.;
}
}
//库存物料与实际情况不匹配
@ -1147,7 +1148,7 @@ namespace WCS.BLL.HardWare
}
else
{
module.CurrentMode = Mode.;
module.CurrentMode = TaskModeEnum.;
}
//获取当前板所有库位
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
@ -1262,14 +1263,14 @@ namespace WCS.BLL.HardWare
/// <param name="data"></param>
public void GoOutInstoreProcess(byte[] data, int boardId, int lightNumber)
{
var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == Mode.).FirstOrDefault();
var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == TaskModeEnum.).FirstOrDefault();
if (module == null)
{
return;
}
else
{
module.CurrentMode = Mode.;
module.CurrentMode = TaskModeEnum.;
}
}
@ -1555,7 +1556,7 @@ namespace WCS.BLL.HardWare
}
else
{
module.CurrentMode = Mode.;
module.CurrentMode = TaskModeEnum.;
}
}
//库存物料与实际情况不匹配
@ -1569,7 +1570,7 @@ namespace WCS.BLL.HardWare
}
else
{
module.CurrentMode = Mode.;
module.CurrentMode = TaskModeEnum.;
}
//获取当前板所有库位
var storeInfos = DbHelp.db.Queryable<StoreInfo>()
@ -1675,7 +1676,7 @@ namespace WCS.BLL.HardWare
public void OutstoreReturnProcess(byte[] data, int boardId, int lightNumber)
{
if (CurrentMode != Mode.)
if (CurrentMode != TaskModeEnum.)
{
Logs.Write($"出库错误:{ShelfCode}该货架模式不是出库模式或盘点模式!", LogsType.Outstore);
return;
@ -1807,7 +1808,7 @@ namespace WCS.BLL.HardWare
//更新时间 避免超时被自动退出
Task.Run(() =>
{
var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode. && t.OrderNumber == OrderNumber).ToList();
var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum. && t.OrderNumber == OrderNumber).ToList();
foreach (var shelf in shelves)
{
shelf.SetCurrentModeTime = DateTime.Now;
@ -1862,7 +1863,7 @@ namespace WCS.BLL.HardWare
//查一下是否是当前发料单最后一个货架(在出库模式 同一个发料单下)
var isLastShelf = ShelfManager.Shelves
.Where(t => t.OrderNumber == OrderNumber)
.Where(t => t.CurrentMode == Mode.)
.Where(t => t.CurrentMode == TaskModeEnum.)
.Any();
if (!isLastShelf)
{
@ -1911,7 +1912,7 @@ namespace WCS.BLL.HardWare
.ToList();
var shelfs = ShelfManager.Shelves.Where(t => shelfIds.Contains(t.ShelfId)).ToList();
var otherModeShelfs = shelfs.Where(t => t.CurrentMode != HardWare.Mode.).ToList();
var otherModeShelfs = shelfs.Where(t => t.CurrentMode != TaskModeEnum.).ToList();
if (otherModeShelfs != null && otherModeShelfs.Count > 0)
{
otherModeShelfs.ForEach(t =>
@ -1943,7 +1944,7 @@ namespace WCS.BLL.HardWare
Task.Run(() =>
{
//判断是否是当前订单最后一个出库货架
var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode. && t.OrderNumber == OrderNumber)
var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum. && t.OrderNumber == OrderNumber)
.Any();
//WebSocket通知前台以更新左侧出库单列表的状态
if (!isOuting)
@ -1971,7 +1972,7 @@ namespace WCS.BLL.HardWare
Logs.Write($"发料单{OrderNumber},非最后一个出库货架!", LogsType.Outstore);
var otherShelfs = ShelfManager.Shelves
.Where(t => t.OrderNumber == OrderNumber)
.Where(t => t.CurrentMode == Mode.)
.Where(t => t.CurrentMode == TaskModeEnum.)
.ToList();
otherShelfs.ForEach(shelf =>
@ -2002,7 +2003,7 @@ namespace WCS.BLL.HardWare
Task.Run(() =>
{
//判断是否是当前订单最后一个出库货架
var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode. && t.OrderNumber == OrderNumber)
var isOuting = ShelfManager.Shelves.Where(t => t.CurrentMode == TaskModeEnum. && t.OrderNumber == OrderNumber)
.Any();
//WebSocket通知前台以更新左侧出库单列表的状态
if (!isOuting)
@ -2087,14 +2088,14 @@ namespace WCS.BLL.HardWare
/// <param name="data"></param>
public void GoOutOutstoreProcess(byte[] data, int boardId, int lightNumber)
{
var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == Mode.).FirstOrDefault();
var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == TaskModeEnum.).FirstOrDefault();
if (module == null)
{
return;
}
else
{
module.CurrentMode = Mode.;
module.CurrentMode = TaskModeEnum.;
}
}
@ -2215,20 +2216,20 @@ namespace WCS.BLL.HardWare
}
else
{
module.CurrentMode = Mode.;
module.CurrentMode = TaskModeEnum.;
}
}
public void GoOutStockTakingReturnProcess(byte[] data, int boardId, int lightNumber)
{
var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == Mode.).FirstOrDefault();
var module = this.Modules.Where(t => t.BoardId == boardId && t.CurrentMode == TaskModeEnum.).FirstOrDefault();
if (module == null)
{
return;
}
else
{
module.CurrentMode = Mode.;
module.CurrentMode = TaskModeEnum.;
}
}
@ -2243,7 +2244,7 @@ namespace WCS.BLL.HardWare
}
else
{
module.CurrentMode = Mode.;
module.CurrentMode = TaskModeEnum.;
}
}