TaskExtension.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using ServiceCenter.SqlSugars;
  2. using WCS.Core;
  3. using WCS.Entity;
  4. using WCS.WorkEngineering.Worlds.Logs;
  5. namespace WCS.WorkEngineering.Extensions
  6. {
  7. /// <summary>
  8. /// 任务扩展
  9. /// </summary>
  10. public static class TaskExtension
  11. {
  12. /// <summary>
  13. /// 更新任务执行记录
  14. /// </summary>
  15. /// <param name="task">任务信息</param>
  16. /// <param name="db">数据库上下文</param>
  17. /// <param name="curPoint">当前地址</param>
  18. /// <param name="desc">描述</param>
  19. public static void AddWCS_TASK_DTL(this WCS_TaskInfo task, SqlSugarHelper db, string curPoint, string desc)
  20. {
  21. db.Default.Insertable(new WCS_TaskDtl
  22. {
  23. ParentTaskCode = task.ID,
  24. CurPoint = curPoint,
  25. NextPoint = "",
  26. Desc = desc,
  27. AddWho = "WCS"
  28. }).AddQueue();
  29. }
  30. /// <summary>
  31. /// 更新任务执行记录
  32. /// </summary>
  33. /// <param name="task">任务信息</param>
  34. /// <param name="db">数据库上下文</param>
  35. /// <param name="curPoint">当前地址</param>
  36. /// <param name="NextPoint">下一个地址</param>
  37. /// <param name="desc">描述</param>
  38. public static void AddWCS_TASK_DTL(this WCS_TaskInfo task, SqlSugarHelper db, string curPoint, string NextPoint, string desc)
  39. {
  40. db.Default.Insertable(new WCS_TaskDtl
  41. {
  42. ParentTaskCode = task.ID,
  43. CurPoint = curPoint,
  44. NextPoint = NextPoint,
  45. Desc = desc,
  46. AddWho = "WCS"
  47. }).AddQueue();
  48. }
  49. /// <summary>
  50. /// 完成或取消任务
  51. /// </summary>
  52. /// <param name="taskInfo"></param>
  53. /// <param name="db"></param>
  54. public static void CompleteOrCancelTasks(this WCS_TaskInfo taskInfo, SqlSugarHelper db, World world)
  55. {
  56. if (taskInfo.Status is not Entity.TaskStatus.Finish and not Entity.TaskStatus.Cancel)
  57. {
  58. world.Log("任务未完成或取消,无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid, ErrorTypeEnum.Kown, LogUpLoadEnum.NotUpLoad);
  59. }
  60. else // 任务完成或取消,进行相关同步动作
  61. {
  62. WCS_TaskOld taskOld = db.Default.Queryable<WCS_TaskOld>().Where(v => v.WcsTaskID == taskInfo.ID).OrderByDescending(v => v.AddTime).First();
  63. if (taskOld is null)
  64. {
  65. world.Log($"WCS_TaskOld表中不存在任务:{taskInfo.ID},无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid, ErrorTypeEnum.Kown, LogUpLoadEnum.UpLoadWMS);
  66. }
  67. else
  68. {
  69. //状态
  70. taskOld.Status = taskInfo.Status;
  71. taskOld.Uploaded = taskInfo.Uploaded;
  72. //任务号
  73. taskOld.WmsTask = taskInfo.WmsTask;
  74. taskOld.AgvTaskID = taskInfo.AgvTaskID;
  75. taskOld.TaskGroupKey = taskInfo.TaskGroupKey;
  76. taskOld.Priority = taskInfo.Priority;
  77. //时间与用户
  78. taskOld.AddTime = taskInfo.AddTime;
  79. taskOld.AddWho = taskInfo.AddWho;
  80. taskOld.StartTime = taskInfo.StartTime;
  81. taskOld.EedTime = taskInfo.EedTime;
  82. taskOld.EditWho = taskInfo.EditWho;
  83. taskOld.EditTime = taskInfo.EditTime;
  84. //条码与地址
  85. taskOld.BarCode = taskInfo.BarCode;
  86. taskOld.MaterialCode = taskInfo.MaterialCode;
  87. taskOld.AddrFrom = taskInfo.AddrFrom;
  88. taskOld.AddrTo = taskInfo.AddrTo;
  89. taskOld.LastInteractionPoint = taskInfo.LastInteractionPoint;
  90. taskOld.AddrNext = taskInfo.AddrNext;
  91. taskOld.Tunnel = taskInfo.Tunnel;
  92. taskOld.Floor = taskInfo.Floor;
  93. taskOld.Device = taskInfo.Device;
  94. taskOld.SrmStation = taskInfo.SrmStation;
  95. //码垛信息
  96. taskOld.DocID = taskInfo.DocID;
  97. taskOld.PalletType = taskInfo.PalletType;
  98. taskOld.ProdLine = taskInfo.ProdLine;
  99. taskOld.FullQty = taskInfo.FullQty;
  100. //外形信息
  101. taskOld.Height = taskInfo.Height;
  102. taskOld.Length = taskInfo.Length;
  103. //手动处理备注
  104. taskOld.ManualRemarks = taskInfo.ManualRemarks;
  105. //更新任务历史表,删除任务当前表
  106. db.Default.Updateable(taskOld).AddQueue();
  107. db.Default.Deleteable(taskInfo).AddQueue();
  108. }
  109. }
  110. }
  111. }
  112. }