using ServiceCenter.SqlSugars;
using System.ComponentModel;
using WCS.Core;
using WCS.Entity;
using WCS.WorkEngineering.Extensions;
namespace WCS.WorkEngineering.Worlds
{
///
/// 非交互世界
///
[Description("非交互世界")]
public class NoInteractionWorld : MainWorld
{
///
/// 世界执行周期间隔
/// 单位:毫秒
///
protected override int Interval => 300;
///
/// 更新前执行,重写改方法后请自行添加执行内容
/// 执行内容:清空日志队列
///
protected override void BeforeUpdate()
{
// 清空日志队列,确保日志队列中只会有当前周期日志
Logs.Clear();
#region 处理所有新建出库任务
SqlSugarHelper.Do(db =>
{
List tasks = new List();
//获取所有新建状态的出库任务
tasks = db.Default.Queryable().Where(t => t.Status == Entity.TaskStatus.NewBuild && t.Type == TaskType.OutDepot).ToList();
if (tasks.Count > 0)
{
tasks.ForEach(task =>
{
//获取堆垛机到目标地址的路径信息
var ty = DevicePath.GetPath(task.Device, task.AddrTo);
//开始处理
task.SrmStation = ty.Points[1].Code;
//task.AddrNext = path[2];
task.Status = Entity.TaskStatus.WaitingToExecute;
task.AddWCS_TASK_DTL(db, task.Device, $"初始化出库任务信息,放货站台:{task.SrmStation}");
db.Default.Updateable(task).AddQueue();
});
}
#endregion 处理所有新建出库任务
#region 处理所有的新增入库任务
tasks = db.Default.Queryable().Where(t => t.Status == Entity.TaskStatus.NewBuild).ToList();
if (tasks.Count > 0)
{
tasks.ForEach(task =>
{
//开始处理
task.Status = Entity.TaskStatus.WaitingToExecute;
task.AddWCS_TASK_DTL(db, task.Device, $"初始化出库任务信息,放货站台:{task.SrmStation}");
db.Default.Updateable(task).AddQueue();
});
}
#endregion 处理所有的新增入库任务
db.Default.SaveQueues();
});
}
}
}