环形库分配货位.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using ServiceCenter.Extensions;
  9. using ServiceCenter.Logs;
  10. using ServiceCenter.SqlSugars;
  11. using WCS.Core;
  12. using WCS.Entity;
  13. using WCS.Entity.Protocol.Robot;
  14. using WCS.Entity.Protocol.Station;
  15. using WCS.WorkEngineering.Extensions;
  16. using WCS.WorkEngineering.WebApi.Controllers;
  17. using WCS.WorkEngineering.WebApi.Models.WMS.Response;
  18. using WCS.WorkEngineering.Worlds;
  19. using WCS.WorkEngineering.Worlds.环形库.环形库;
  20. using TaskStatus = WCS.Entity.TaskStatus;
  21. namespace WCS.WorkEngineering.Systems.环形库
  22. {
  23. [BelongTo(typeof(SortingBranchWorld))]
  24. [Description("机械臂")]
  25. public class 环形库分配货位 : DeviceSystem<Device<IStation520, IStation521, IStation523>>
  26. {
  27. protected override bool ParallelDo => true;
  28. public override void Do(Device<IStation520, IStation521, IStation523> obj)
  29. {
  30. if (obj.Data.VoucherNo != obj.Data2.VoucherNo)
  31. {
  32. World.Log($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}");
  33. return;
  34. }
  35. if (obj.Data3.Status.HasFlag(StationStatus.Run))
  36. {
  37. World.Log("设备运行中");
  38. return;
  39. }
  40. ;
  41. if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status))
  42. {
  43. World.Log("站台货物信息与实际占用不一致");
  44. return;
  45. }
  46. if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status))
  47. {
  48. }
  49. ;
  50. if (obj.Data2.Request != 1)
  51. {
  52. World.Log("无请求");
  53. return;
  54. }
  55. WCS_TaskInfo taskInfo = null;
  56. //开始获取货位号
  57. SqlSugarHelper.Do(db =>
  58. {
  59. var task = db.Default.Queryable<WCS_TaskInfo>().First(v => obj.Data2.TaskNumber == v.ID);
  60. if (task == null)
  61. {
  62. World.Log($"未找到任务[{obj.Data2.TaskNumber}],请人工接入处理!!!!");
  63. return;
  64. }
  65. if (task.Type != TaskType.SetPlate)
  66. {
  67. World.Log($"任务[{obj.Data2.TaskNumber}]任务类型错误,应该是组盘任务,请人工接入处理!!!!");
  68. return;
  69. }
  70. if (task.Status != TaskStatus.FinishOfShunt)
  71. {
  72. World.Log($"任务[{obj.Data2.TaskNumber}]任务状态错误,当前状态应该市分流结束,,请人工接入处理!!!!");
  73. return;
  74. }
  75. var res = WmsApi.RingApplyStockInLoc(task.ID, task.Device, obj.Entity.Code, task.GoodsType);
  76. if (res.ResCode != ResponseStatusCodeEnum.Sucess)
  77. {
  78. World.Log(res.ResMsg);
  79. return;
  80. }
  81. task.AddrTo = res.ResData.CellNo;
  82. task.Line = res.ResData.Row;
  83. task.Col = res.ResData.Colomn;
  84. task.Layer = res.ResData.Layer;
  85. task.Depth = res.ResData.Row;
  86. task.LastInteractionPoint = obj.Entity.Code;
  87. task.Device = obj.Entity.Code;
  88. task.EditWho = "WCS";
  89. db.Default.UpdateableRowLock(task).UpdateColumns(x => new { x.Status, x.AddrTo, x.Line, x.Col, x.Layer, x.Depth, x.LastInteractionPoint, x.SrmStation, x.Device, x.EditWho }).ExecuteCommand();
  90. task.AddWCS_TASK_DTL(db.Default, obj.Entity.Code, task.AddrTo, $"任务分配货位{task.AddrTo}");
  91. taskInfo = task;
  92. });
  93. if (taskInfo == null) return;
  94. var next = (taskInfo.AddrNext.ToShort() - 2).ToShort();
  95. obj.Data.TaskNumber = taskInfo.ID;
  96. obj.Data.TaskNumber = taskInfo.ID;
  97. obj.Data.GoodsStart = obj.Entity.Code.ToShort();
  98. obj.Data.GoodsStart = obj.Entity.Code.ToShort();
  99. obj.Data.GoodsEnd = next;
  100. obj.Data.GoodsEnd = next;
  101. obj.Data.SetVoucherNo();
  102. }
  103. public override bool Select(Device dev)
  104. {
  105. var codes = new List<string>()
  106. {
  107. "444","644","844","1044","1244","1444",
  108. "426","626","826","1026","1226","1426",
  109. "435","635","835","1035","1235","1435"
  110. };
  111. return codes.Any(x => x == dev.Code);
  112. }
  113. }
  114. }