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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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.Entity.Protocol.Truss;
  8. using WCS.WorkEngineering.Extensions;
  9. using WCS.WorkEngineering.Worlds;
  10. using TaskStatus = WCS.Entity.TaskStatus;
  11. namespace WCS.WorkEngineering.Systems.桁架码垛
  12. {
  13. /// <summary>
  14. /// 二次码垛任务到RGV取货位处理
  15. /// </summary>
  16. [BelongTo(typeof(SortingPalletizingWorld))]
  17. [Description("二次码垛任务到RGV取货位处理")]
  18. public class 二次码垛任务到RGV取货位处理 : DeviceSystem<Device<IStation520, IStation521, IStation523, ITruss530>>
  19. {
  20. protected override bool ParallelDo => true;
  21. public override void Do(Device<IStation520, IStation521, IStation523, ITruss530> 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. WCS_Palletizing palletizing = null;
  29. WCS_TaskInfo task = null;
  30. SqlSugarHelper.Do(_db =>
  31. {
  32. var db = _db.Default;
  33. var soDev = obj.Entity.Sources.First();
  34. var taskInfo = db.Queryable<WCS_TaskInfo>().Where(x => x.SrmStation == soDev.Code && x.Status == TaskStatus.StackerCompleted).OrderBy(x => x.EditTime).First();
  35. if (taskInfo == null) return;
  36. var pall = db.Queryable<WCS_Palletizing>().RowLock().Includes(x => x.Locs).First(x => x.TaskId == taskInfo.ID && !x.Finish);
  37. if (pall == null) return;
  38. taskInfo.Status = TaskStatus.Finish;
  39. taskInfo.EditTime = DateTime.Now;
  40. taskInfo.EndTime = DateTime.Now;
  41. db.UpdateableRowLock(taskInfo).UpdateColumns(x => new { x.Status, x.EditTime, x.EndTime }).ExecuteCommand();
  42. taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, "二次码垛出库任务完成");
  43. addNext = pall.PalletizingStation.ToShort();
  44. palletizing = pall;
  45. task = taskInfo;
  46. });
  47. if (palletizing == null || task == null) return;
  48. obj.Data.TaskNumber = palletizing.Id;
  49. obj.Data.GoodsStart = obj.Entity.Code.ToShort();
  50. obj.Data.GoodsEnd = 0;
  51. obj.Data4.Type = 1;
  52. obj.Data4.MaxQuantity = palletizing.CountQty.ToShort();
  53. obj.Data4.Quantity = palletizing.Locs.Count(x => x.Finish).ToShort();
  54. obj.Data4.VoucherNo++;
  55. obj.Data.VoucherNo++;
  56. }
  57. public override bool Select(Device dev)
  58. {
  59. return dev.Code is "1606" or "1616" or "1626" or "1636" or "1646" or "1656";
  60. }
  61. }
  62. }