RGV放货.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using DBHelper;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using WCS.Core;
  8. using WCS.Entity;
  9. using WCS.Entity.Protocol;
  10. using WCS.Service.Extensions;
  11. namespace WCS.Service.Works.Stations
  12. {
  13. [WorkTitle(typeof(ProductHandler), "RGV放货", true)]
  14. class RGV放货 : DeviceWork<Device<IStation521, IStation520>>
  15. {
  16. protected override bool SelectDevice(WCS_DEVICE dev)
  17. {
  18. var b = Device.Where(v => v.IsRGV()).Where(v => v.ROUTES.Any(d => d.NEXT == dev)).Any();
  19. return b && !dev.Is(DF.拆盘) && dev.CODE != "2202";
  20. return dev.Is(DF.RGV放货) && !dev.Is(DF.拆盘) && dev.CODE != "2202";
  21. }
  22. protected override void Do(Device<IStation521, IStation520> dev)
  23. {
  24. if (dev.Entity.CODE == "3060") return;
  25. if (Ltc.Do(dev, v => v.Data2.CONFIRM == true))
  26. {
  27. return;
  28. }
  29. if (Ltc.Do(dev, v => v.Data.REQUEST == false))
  30. return;
  31. if (Ltc.Do(dev, v => v.Data.TASKNUM == 0))
  32. throw new Exception("无任务号");
  33. var taskid = dev.Data.TASKNUM;
  34. DB.Do(db =>
  35. {
  36. var task = db.Default.Set<WCS_TASK>().Find(taskid);
  37. if (task == null)
  38. throw new Exception("任务:" + taskid + "不存在");
  39. //task.ADDRCURRENT = dev.Entity.CODE;
  40. db.Default.SaveChanges();
  41. if (task.TYPE == TaskType.出库)
  42. {
  43. if (task.STATUS < WCS.Entity.TaskStatus.出库RGV执行)
  44. {
  45. task.STATUS = WCS.Entity.TaskStatus.出库RGV执行;
  46. task.UPDATETIME = DateTime.Now;
  47. db.Default.SaveChanges();
  48. Uploader.Upload(db);
  49. }
  50. }
  51. if (task.ADDRTO == dev.Entity.CODE && task.TYPE == TaskType.输送)
  52. {
  53. task.STATUS = WCS.Entity.TaskStatus.已完成;
  54. task.UPDATETIME = DateTime.Now;
  55. task.ENDTIME = DateTime.Now;
  56. task.CreateStatusLog(db, "输送任务完成");
  57. db.Default.SaveChanges();
  58. }
  59. var next = Ltc.Do(dev, v => v.Entity.GetNext(task.TYPE == TaskType.出库 ? task.ADDRNEXT : task.ADDRTO));
  60. short nextCode = 0;
  61. if (next == null)
  62. nextCode = dev.Entity.Code();
  63. else
  64. nextCode = next.Code();
  65. dev.Data2.GOODSEND = nextCode;
  66. dev.Data2.TASKNUM = taskid;
  67. dev.Data2.GOODSCODE = task.DOCID;
  68. dev.Data2.GOODSSIZE = task.FULLQTY;
  69. dev.Data2.GOODSTYPE = task.PALLETTYPE;
  70. dev.Data2.HEIGHT = task.HEIGHT;
  71. dev.Data2.CONFIRM = true;
  72. });
  73. }
  74. }
  75. }