煤科院现场调试提交
This commit is contained in:
@ -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,
|
||||
|
Reference in New Issue
Block a user