RGV放货.cs 2.9 KB

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