RGV放货.cs 2.8 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 (Ltc.Do(dev, v => v.Data2.CONFIRM == true))
  24. {
  25. return;
  26. }
  27. if (Ltc.Do(dev, v => v.Data.REQUEST == false))
  28. return;
  29. if (Ltc.Do(dev, v => v.Data.TASKNUM == 0))
  30. throw new Exception("无任务号");
  31. var taskid = dev.Data.TASKNUM;
  32. DB.Do(db =>
  33. {
  34. var task = db.Default.Set<WCS_TASK>().Find(taskid);
  35. if (task == null)
  36. throw new Exception("任务:" + taskid + "不存在");
  37. //task.ADDRCURRENT = dev.Entity.CODE;
  38. db.Default.SaveChanges();
  39. if (task.TYPE == TaskType.出库)
  40. {
  41. if (task.STATUS < WCS.Entity.TaskStatus.出库RGV执行)
  42. {
  43. task.STATUS = WCS.Entity.TaskStatus.出库RGV执行;
  44. task.UPDATETIME = DateTime.Now;
  45. db.Default.SaveChanges();
  46. Uploader.Upload(db);
  47. }
  48. }
  49. if (task.ADDRTO == dev.Entity.CODE && task.TYPE == TaskType.输送)
  50. {
  51. task.STATUS = WCS.Entity.TaskStatus.已完成;
  52. task.UPDATETIME = DateTime.Now;
  53. task.ENDTIME = DateTime.Now;
  54. db.Default.SaveChanges();
  55. }
  56. var next = Ltc.Do(dev, v => v.Entity.GetNext(task.TYPE == TaskType.出库 ? task.ADDRNEXT : task.ADDRTO));
  57. short nextCode = 0;
  58. if (next == null)
  59. nextCode = dev.Entity.Code();
  60. else
  61. nextCode = next.Code();
  62. dev.Data2.GOODSEND = nextCode;
  63. dev.Data2.TASKNUM = taskid;
  64. dev.Data2.GOODSCODE = task.DOCID;
  65. dev.Data2.GOODSSIZE = task.FULLQTY;
  66. dev.Data2.GOODSTYPE = task.PALLETTYPE;
  67. dev.Data2.HEIGHT = task.HEIGHT;
  68. dev.Data2.CONFIRM = true;
  69. });
  70. }
  71. }
  72. }