NoInteractionWorld.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using ServiceCenter;
  2. using ServiceCenter.SqlSugars;
  3. using System.ComponentModel;
  4. using WCS.Entity;
  5. using WCS.WorkEngineering.Extensions;
  6. using WCS.WorkEngineering.Worlds.Logs;
  7. namespace WCS.WorkEngineering.Worlds
  8. {
  9. /// <summary>
  10. /// 非交互世界
  11. /// </summary>
  12. [Description("非交互世界")]
  13. public class NoInteractionWorld : MainWorld
  14. {
  15. /// <summary>
  16. /// 世界执行周期间隔
  17. /// 单位:毫秒
  18. /// </summary>
  19. protected override int Interval => 300;
  20. /// <summary>
  21. /// 更新前执行,重写改方法后请自行添加执行内容
  22. /// 执行内容:清空日志队列
  23. /// </summary>
  24. protected override void BeforeUpdate()
  25. {
  26. // 清空日志队列,确保日志队列中只会有当前周期日志
  27. Logs.Clear();
  28. #region 处理所有新建出库任务
  29. SqlSugarHelper.Do(db =>
  30. {
  31. //获取所有新建状态的出库任务
  32. var tasks = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild).ToList();
  33. if (tasks.Count > 0)
  34. {
  35. Log(new LogInfo { Level = LogLevelEnum.Low, Type = ErrorTypeEnum.Kown, LogUpLoad = LogUpLoadEnum.NotUpLoad, Message = "无新建出库任务" });
  36. }
  37. tasks.ForEach(task =>
  38. {
  39. //获取堆垛机到目标地址的路径信息
  40. var path = ServiceHub.deviceInfos.First(v => v.Code == task.Device).Paths.First(v => v.EndCode == task.AddrTo).Path.Split("-");
  41. //
  42. task.SrmStation = path[1];
  43. task.AddrNext = path[2];
  44. task.Status = Entity.TaskStatus.WaitingToExecute;
  45. task.AddWCS_TASK_DTL(db, task.Device, $"初始化出库任务信息,放货站台:{task.SrmStation}、放货后下一个地址:{task.AddrNext}");
  46. db.Default.Updateable(task).AddQueue();
  47. });
  48. db.Default.SaveQueues();
  49. });
  50. #endregion 处理所有新建出库任务
  51. }
  52. }
  53. }