煤科院现场调试提交

This commit is contained in:
hehaibing-1996
2024-12-21 18:46:18 +08:00
parent 85a35ac34f
commit ce4a2fbe3a
12 changed files with 468 additions and 136 deletions

View File

@ -45,7 +45,7 @@ namespace WCS.BLL.HardWare
ModuleCode = module.ModuleCode,
BoardId = module.BoardId,
IsEnable = module.IsEnable,
CurrentMode = module.CurrentMode
CurrentMode = TaskModeEnum.
});
}
ModulesStr = string.Join(";", MXL4Modules.Select(t => t.ModuleCode));
@ -70,73 +70,129 @@ namespace WCS.BLL.HardWare
await Task.Delay(2000);
continue;
}
//查询属于本货架的任务
var currentShelfTasks = DbHelp.db.Queryable<CurrentTask>()
.Where(t => t.ShelfId == this.ShelfId)
.Where(t => t.IsSended == false)
.OrderBy(t => t.CreateTime)
.ToList();
//获取因为任务需要刷新的module
var haveTaskModules = currentShelfTasks.Select(t => t.ModuleId).Distinct().ToList();
MXL4Modules.ForEach(t =>
{
if (haveTaskModules.Contains(t.ModuleId))
{ t.IsNeedRefresh = true; }
});
//查询是否有需要刷新的
var needRefreshModules = MXL4Modules.Where(t => t.IsNeedRefresh)
.ToList();
foreach (var module in needRefreshModules)
{
//查询当前是否有任务
var currentTasks = DbHelp.db.Queryable<CurrentTask>()
.Where(t => t.ModuleId == module.ModuleId)
.Where(t => t.IsSended == false)
.OrderBy(t => t.CreateTime)
.ToList();
//入库、出库、盘点等任务
if (currentTasks != null && currentTasks.Count > 0)
try
{
var firstTask = currentTasks.First();
var taskMode = currentTasks.First().TaskMode;
#region Continue
if (module.CurrentMode == TaskModeEnum.)
//查询当前是否有任务
var currentTasks = currentShelfTasks.Where(t => t.ModuleId == module.ModuleId)
.OrderBy(t => t.CreateTime)
.ToList();
//入库、出库、盘点等任务
if (currentTasks != null && currentTasks.Count > 0)
{
//进入对应模式
switch (taskMode)
var firstTask = currentTasks.First();
var taskMode = currentTasks.First().TaskMode;
#region Continue
if (module.CurrentMode == TaskModeEnum.)
{
case (TaskModeEnum.):
module.GoInInstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoInOutstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoInStocktakingMode(TcpCleint);
break;
default:
break;
//进入对应模式
switch (taskMode)
{
case (TaskModeEnum.):
module.GoInInstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoInOutstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoInStocktakingMode(TcpCleint);
break;
default:
break;
}
//等待10ms这边将状态成功更新了来
await Task.Delay(10);
}
//等待10ms这边将状态成功更新了来
await Task.Delay(10);
}
else
{
taskMode = module.CurrentMode;
}
#endregion
//只显示当前模式的任务
currentTasks = currentTasks.Where(t => t.TaskMode == taskMode).ToList();
//这个分支应该很少跑到 有刷新必然有新任务
if (currentTasks == null || currentTasks.Count == 0)
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!");
var tasks = DbHelp.db.Queryable<CurrentTask>()
.Where(t => t.ModuleId == module.ModuleId)
.Where(t => t.IsSended == true)
.Where(t => t.TaskMode == taskMode)
.OrderBy(t => t.CreateTime)
.ToList();
if (tasks != null && tasks.Count > 0)
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!有已发送的任务未完成故不处理!");
module.IsNeedRefresh = false;
continue;
}
//退出对应模式到待机模式! 后续持续刷新数据!
else
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!没有已发送未完成的任务!退出当前模式!");
taskMode = module.CurrentMode;
}
#endregion
//只显示当前模式的任务
currentTasks = currentTasks.Where(t => t.TaskMode == taskMode).ToList();
//这个分支应该很少跑到 有刷新必然有新任务
if (currentTasks == null || currentTasks.Count == 0)
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!");
var tasks = DbHelp.db.Queryable<CurrentTask>()
.Where(t => t.ModuleId == module.ModuleId)
.Where(t => t.IsSended == true)
.Where(t => t.TaskMode == taskMode)
.OrderBy(t => t.CreateTime)
.ToList();
if (tasks != null && tasks.Count > 0)
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!有已发送的任务未完成故不处理!");
module.IsNeedRefresh = false;
continue;
}
//退出对应模式到待机模式! 后续持续刷新数据!
else
{
Logs.Write($"【后台发送线程】{module.ModuleCode}当前模式{module.CurrentMode},需要刷新!但是没有对应的新任务!没有已发送未完成的任务!退出当前模式!");
// 退出对应模式
switch (taskMode)
{
case (TaskModeEnum.):
module.GoOutInstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoOutOutstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoOutStocktakingMode(TcpCleint);
break;
default:
break;
}
continue;
}
}
//按照任务顺序给其发送数据
foreach (var currentTask in currentTasks)
{
module.SendTaskId(currentTask.TaskID, TcpCleint);
module.SendMatCode(currentTask.MatCode, TcpCleint);
module.SendMatName(currentTask.MatName, TcpCleint);
module.SendMatSpec(currentTask.MatSpec, TcpCleint);
module.SendMatBatch(currentTask.MatBatch, TcpCleint);
module.SendMatQty(currentTask.Qty, TcpCleint);
currentTask.IsSended = true;
DbHelp.db.Updateable(currentTask).ExecuteCommand();
}
//发送完毕后就不刷新了
module.IsNeedRefresh = false;
continue;
}
//不存在入库、出库、盘点等任务 应该变成待机
else
{
//退出对应模式到待机模式! 后续持续刷新数据!
if (module.CurrentMode != TaskModeEnum.)
{
// 退出对应模式
switch (taskMode)
switch (module.CurrentMode)
{
case (TaskModeEnum.):
module.GoOutInstoreMode(TcpCleint);
@ -152,57 +208,23 @@ namespace WCS.BLL.HardWare
}
continue;
}
}
//按照任务顺序给其发送数据
foreach (var currentTask in currentTasks)
{
module.SendTaskId(currentTask.TaskID, TcpCleint);
module.SendMatCode(currentTask.MatCode, TcpCleint);
module.SendMatName(currentTask.MatName, TcpCleint);
module.SendMatSpec(currentTask.MatSpec, TcpCleint);
module.SendMatBatch(currentTask.MatBatch, TcpCleint);
module.SendMatQty(currentTask.Qty, TcpCleint);
currentTask.IsSended = true;
DbHelp.db.Updateable(currentTask).ExecuteCommand();
//向上层系统获取数据
//获取成功 有数据 绑定对应数据
//获取成功 无数据
module.StandbyNoInfoDisplay(TcpCleint);
module.IsNeedRefresh = false;//未获取到库存数据 回没有库位显示信息给硬件
//获取失败 跳过此次循环后继续获取
}
//发送完毕后就不刷新了
module.IsNeedRefresh = false;
continue;
}
//不存在入库、出库、盘点等任务 应该变成待机
else
catch (Exception ex)
{
//退出对应模式到待机模式! 后续持续刷新数据!
if (module.CurrentMode != TaskModeEnum.)
{
// 退出对应模式
switch (module.CurrentMode)
{
case (TaskModeEnum.):
module.GoOutInstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoOutOutstoreMode(TcpCleint);
break;
case (TaskModeEnum.):
module.GoOutStocktakingMode(TcpCleint);
break;
default:
break;
}
continue;
}
//向上层系统获取数据
//获取成功 有数据 绑定对应数据
//获取成功 无数据
module.StandbyNoInfoDisplay(TcpCleint);
module.IsNeedRefresh = false;//未获取到库存数据 回没有库位显示信息给硬件
//获取失败 跳过此次循环后继续获取
Logs.Write($"【后台发送线程】遇到异常{ex.Message},{ex.StackTrace}");
}
}
}
catch (Exception ex)
@ -429,13 +451,14 @@ namespace WCS.BLL.HardWare
.FirstOrDefault();
if (module != null)
{
module.SetCurrentMode(TaskModeEnum.);
module.IsNeedRefresh = true;
}
else
{
Logs.Write($"【回到待机模式】货架【{ShelfCode}】通过板子ID【{boardId}】未找到对应模组!");
}
//TO DO 所有退出后货架才待机
SetCurrentMode(TaskModeEnum.);
}
/// <summary>
@ -526,6 +549,7 @@ namespace WCS.BLL.HardWare
StoreCode = task.StoreCode,
TaskID = task.TaskID,
Guid = task.Guid,
ItemNo = task.ItemNo,
TaskMode = task.TaskMode,
OrderNumber = task.OrderNumber,
ButtonColor = task.ButtonColor,
@ -583,6 +607,7 @@ namespace WCS.BLL.HardWare
StoreCode = task.StoreCode,
TaskID = task.TaskID,
Guid = task.Guid,
ItemNo = task.ItemNo,
TaskMode = task.TaskMode,
OrderNumber = task.OrderNumber,
ButtonColor = task.ButtonColor,
@ -640,6 +665,7 @@ namespace WCS.BLL.HardWare
StoreCode = task.StoreCode,
TaskID = task.TaskID,
Guid = task.Guid,
ItemNo = task.ItemNo,
TaskMode = task.TaskMode,
OrderNumber = task.OrderNumber,
ButtonColor = task.ButtonColor,