二次码垛任务到RGV取货位处理.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using ServiceCenter.Extensions;
  2. using ServiceCenter.SqlSugars;
  3. using System.ComponentModel;
  4. using WCS.Core;
  5. using WCS.Entity;
  6. using WCS.Entity.Protocol.Station;
  7. using WCS.WorkEngineering.Extensions;
  8. using WCS.WorkEngineering.Worlds;
  9. using TaskStatus = WCS.Entity.TaskStatus;
  10. namespace WCS.WorkEngineering.Systems.桁架码垛
  11. {
  12. /// <summary>
  13. /// 二次码垛任务到RGV取货位处理
  14. /// </summary>
  15. [BelongTo(typeof(SortingPalletizingWorld))]
  16. [Description("二次码垛任务到RGV取货位处理")]
  17. public class 二次码垛任务到RGV取货位处理 : DeviceSystem<Device<IStation520, IStation521, IStation523>>
  18. {
  19. protected override bool ParallelDo => true;
  20. protected override bool SaveLogsToFile => true;
  21. public override void Do(Device<IStation520, IStation521, IStation523> obj)
  22. {
  23. if (!obj.Data3.Status.HasFlag(StationStatus.Auto)) return;
  24. if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status)) return;
  25. if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status)) return;
  26. if (obj.Data2.Request != 1) return;
  27. var addNext = 1;
  28. int taskId = 0;
  29. SqlSugarHelper.Do(_db =>
  30. {
  31. var db = _db.Default;
  32. var soDev = obj.Entity.Sources.First();
  33. var taskInfo = db.Queryable<WCS_TaskInfo>().Where(x => x.SrmStation == soDev.Code && x.Status == TaskStatus.StackerCompleted).OrderBy(x => x.EditTime).First();
  34. if (taskInfo == null) return;
  35. var pall = db.Queryable<WCS_Palletizing>().RowLock().First(x => x.TaskId == taskInfo.ID && !x.Finish);
  36. if (pall == null) return;
  37. taskInfo.Status = TaskStatus.Finish;
  38. taskInfo.EditTime = DateTime.Now;
  39. taskInfo.EndTime = DateTime.Now;
  40. db.UpdateableRowLock(taskInfo).ExecuteCommand();
  41. taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, "二次码垛出库任务完成");
  42. addNext = pall.PalletizingStation.ToShort();
  43. taskId = pall.Id;
  44. });
  45. if (taskId == 0) return;
  46. obj.Data.TaskNumber = taskId;
  47. obj.Data.GoodsStart = obj.Entity.Code.ToShort();
  48. obj.Data.GoodsEnd = addNext.ToShort();
  49. obj.Data.VoucherNo++;
  50. }
  51. public override bool Select(Device dev)
  52. {
  53. return dev.Code is "1606" or "1616" or "1626" or "1636" or "1646" or "1656";
  54. }
  55. }
  56. }