环形库码垛结束.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using ServiceCenter.Extensions;
  2. using ServiceCenter.SqlSugars;
  3. using System.ComponentModel;
  4. using WCS.Core;
  5. using WCS.Entity;
  6. using WCS.WorkEngineering.Extensions;
  7. using WCS.WorkEngineering.Protocol.Robot;
  8. using WCS.WorkEngineering.Protocol.Station;
  9. using WCS.WorkEngineering.WebApi.Controllers;
  10. using WCS.WorkEngineering.Worlds;
  11. using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
  12. namespace WCS.WorkEngineering.Systems.环形库
  13. {
  14. /// <summary>
  15. /// 环形库码垛结束
  16. /// </summary>
  17. [BelongTo(typeof(RingWorld))]
  18. [Description("环形库码垛结束")]
  19. public class 环形库码垛结束 : DeviceSystem<Device<IStation520, IStation521, IStation523, IRobot530, IRobot531>>
  20. {
  21. protected override bool ParallelDo => true;
  22. protected override bool SaveLogsToFile => true;
  23. public override void Do(Device<IStation520, IStation521, IStation523, IRobot530, IRobot531> obj)
  24. {
  25. if (!obj.Data5.CmdType.HasFlag(RobotCmdType.End)) obj.Data4.CmdType = 0;
  26. if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status)) return;
  27. if (obj.Data5.MaxQuantity != obj.Data5.Quantity || obj.Data5.Quantity == 0 || obj.Data5.MaxQuantity == 0) return;
  28. if (!obj.Data5.CmdType.HasFlag(RobotCmdType.End)) return;
  29. WCS_TaskInfo task = null;
  30. //找到对应的码垛数据
  31. SqlSugarHelper.Do(_db =>
  32. {
  33. var db = _db.Default;
  34. var TaskNoList = obj.Data5.GetTaskNoList().ToList();
  35. var tasks = db.Queryable<WCS_TaskOld>().SplitTable(x => x.Take(2)).Where(x => TaskNoList.Contains(x.Id)).ToList();
  36. var taskInfo = db.Queryable<WCS_TaskInfo>().Single(x => x.BarCode == "TPA0000001" && x.Status == Entity.TaskStatus.WaitingToExecute);
  37. if (taskInfo == null)
  38. {
  39. //开始绑盘
  40. WmsApi.BingPallet("TPA0000001", tasks.Select(x => x.BarCode).ToList(), tasks.First().WarehouseCode, obj.Entity.Code);
  41. return;
  42. }
  43. if (taskInfo.Status != Entity.TaskStatus.WaitingToExecute) return;
  44. task = taskInfo;
  45. });
  46. if (task == null) return;
  47. obj.Data.TaskNumber = task.ID;
  48. obj.Data.GoodsStart = obj.Entity.Code.ToShort();
  49. obj.Data.GoodsEnd = task.AddrNext.ToShort();
  50. obj.Data4.CmdType = RobotCmdType.End;
  51. }
  52. public override bool Select(Device dev)
  53. {
  54. return dev.HasFlag(DeviceFlags.环形库码垛工位);
  55. }
  56. }
  57. }