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