移植后台关灯机制 超时退出模式关灯,灯状态不对的恢复
This commit is contained in:
@ -1,10 +1,12 @@
|
||||
using SqlSugar;
|
||||
using WCS.BLL.Config;
|
||||
using WCS.BLL.DbModels;
|
||||
using WCS.BLL.HardWare;
|
||||
using WCS.BLL.Tool;
|
||||
using WCS.DAL;
|
||||
using WCS.DAL.Db;
|
||||
using WCS.DAL.Db.AuthDb;
|
||||
using WCS.DAL.DbModels;
|
||||
using WCS.Model;
|
||||
using WCS.Model.ApiModel.InOutRecord;
|
||||
using WCS.Model.ApiModel.MXBackgroundThread;
|
||||
@ -117,7 +119,54 @@ namespace WCS.BLL.Manager
|
||||
#endregion
|
||||
|
||||
#region 定时任务:超时退出 出库、入库、盘点模式
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
//每10s一次
|
||||
Thread.Sleep(10000);
|
||||
try
|
||||
{
|
||||
#region 入库模式
|
||||
var inStoreShelf = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.入库模式)
|
||||
.Where(t => DateTime.Now - t.SetCurrentModeTime >= TimeSpan.FromMinutes(3))
|
||||
.ToList();
|
||||
foreach (var shelf in inStoreShelf)
|
||||
{
|
||||
shelf.GoOutInstore();
|
||||
Logs.Write($"【定时任务:定时退出模式】货架【{shelf.ShelfCode}】超时(3min)未退出入库模式,系统后台自动退出!");
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 出库模式
|
||||
//出库超过n分钟自动进入待机模式
|
||||
var outStoreShelf = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式)
|
||||
.Where(t => DateTime.Now - t.SetCurrentModeTime >= TimeSpan.FromMinutes(5))
|
||||
.ToList();
|
||||
foreach (var shelf in outStoreShelf)
|
||||
{
|
||||
shelf.GoOutOutstore();
|
||||
Logs.Write($"【定时任务:定时退出模式】货架【{shelf.ShelfCode}】超时(5min)未退出出库模式,系统后台自动退出!");
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 盘点模式
|
||||
var stockTakingShelf = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.盘点模式)
|
||||
.Where(t => DateTime.Now - t.SetCurrentModeTime >= TimeSpan.FromMinutes(5))
|
||||
.ToList();
|
||||
foreach (var shelf in stockTakingShelf)
|
||||
{
|
||||
shelf.GoOutStocktaking();
|
||||
Logs.Write($"【定时任务:定时退出模式】货架【{shelf.ShelfCode}】超时(5min)未退出盘点模式,系统后台自动退出!");
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logs.Write("【定时任务:定时退出模式】" + e.Message,LogsType.Info);
|
||||
}
|
||||
}
|
||||
});
|
||||
#endregion
|
||||
|
||||
#region 定时任务:海康未扫物料码的物料更新数据
|
||||
@ -212,7 +261,64 @@ namespace WCS.BLL.Manager
|
||||
});
|
||||
#endregion
|
||||
|
||||
#region 定时任务:紧机复原和监测警示灯关灯机制
|
||||
#region 定时任务:监测警示灯关灯机制
|
||||
//判断灯颜色和模式是否对应
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
//间隔5秒查询一次
|
||||
Thread.Sleep(5000);
|
||||
try
|
||||
{
|
||||
//待机模式未关灯
|
||||
var shelves = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.待机模式 && t.LightColor != WarningLight.LightColorEnum.关闭)
|
||||
.Where(t => t.SetCurrentModeTime < DateTime.Now.AddSeconds(-5))
|
||||
.ToList();
|
||||
foreach (var shelf in shelves)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (shelf is SmartShelf)
|
||||
{
|
||||
var smartShelf = (SmartShelf)shelf;
|
||||
smartShelf?.WarningLight.CloseLight(smartShelf.TcpCleint);
|
||||
Logs.Write($"【定时任务】:监测警示灯关灯机制,关【{shelf.ShelfCode}】灯发送指令成功!");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logs.Write($"【定时任务】:监测警示灯关灯机制,关【{shelf.ShelfCode}】灯发生异常" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
//出库模式未亮灯
|
||||
var outShelves = ShelfManager.Shelves.Where(t => t.CurrentMode == Mode.出库模式 && t.LightColor == WarningLight.LightColorEnum.关闭)
|
||||
.Where(t => t.SetCurrentModeTime < DateTime.Now.AddSeconds(-5))
|
||||
.ToList();
|
||||
foreach (var shelf in outShelves)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (shelf is SmartShelf)
|
||||
{
|
||||
var smartShelf = (SmartShelf)shelf;
|
||||
smartShelf?.WarningLight.GreenLight(smartShelf.TcpCleint);
|
||||
Logs.Write($"【定时任务】:监测警示灯关灯机制,出库开灯【{shelf.ShelfCode}】发送指令成功!");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logs.Write($"【定时任务】:监测警示灯关灯机制,出库开灯【{shelf.ShelfCode}】发生异常" + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logs.Write("【定时任务】:监测警示灯关灯机制发生异常" + ex.Message);
|
||||
}
|
||||
}
|
||||
});
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user