原膜入库.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using DBHelper;
  2. using System;
  3. using System.Linq;
  4. using WCS.Core;
  5. using WCS.Entity;
  6. using WCS.Entity.Protocol;
  7. namespace WCS.Service.Works.Stations
  8. {
  9. [WorkTitle(typeof(ProductHandler), "原膜入库", true)]
  10. internal class 原膜入库 : DeviceWork<Device<IStation521, IStation520>>
  11. {
  12. protected override bool SelectDevice(WCS_DEVICE dev)
  13. {
  14. return dev.CODE == "2281" || dev.CODE == "2282";
  15. }
  16. protected override void Do(Device<IStation521, IStation520> dev)
  17. {
  18. if (Ltc.Do(dev, v => v.Data2.CONFIRM == true))
  19. return;
  20. if (Ltc.Do(dev, v => !v.Data.REQUEST))
  21. return;
  22. //穿梭机 2281/2282
  23. if (Ltc.Do(dev, shuttle => shuttle.Data.PH_STATUS == false))
  24. return;
  25. if (Ltc.Do(dev, shuttle => shuttle.Data.TASKNUM > 10000))
  26. return;
  27. DB.Do(db =>
  28. {
  29. var task = db.Default.Set<WCS_TASK>().Where(v => v.ADDRFROM == dev.Entity.CODE && v.STATUS == WCS.Entity.TaskStatus.新建 && v.TYPE == TaskType.入库).FirstOrDefault();
  30. if (task == null)
  31. {
  32. throw new Exception("未创建入库任务");
  33. }
  34. task.STATUS = WCS.Entity.TaskStatus.执行中;
  35. task.ADDRTO = dev.Entity.CODE;
  36. task.STARTTIME = DateTime.Now;
  37. task.UPDATETIME = DateTime.Now;
  38. task.UPDATEUSER = "WCS";
  39. task.ADDRNEXT = dev.Entity.CODE;
  40. db.Default.SaveChanges();
  41. dev.Data2.GOODSEND = dev.Entity.Code();
  42. dev.Data2.TASKNUM = task.ID;
  43. dev.Data2.CONFIRM = true;
  44. });
  45. }
  46. }
  47. }