堆垛机放货.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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), "堆垛机放货",true)]
  13. class 堆垛机放货 : DeviceWork<Device<IStation521, IStation520>>
  14. {
  15. protected override bool SelectDevice(WCS_DEVICE dev)
  16. {
  17. return "2056,2057,2041,2042,2027,2028".Split(',').Contains(dev.CODE) || dev.Is(DF.SC放货);
  18. }
  19. protected override void Do(Device<IStation521, IStation520> dev)
  20. {
  21. if (Ltc.Do(dev, v => v.Data2.CONFIRM == true))
  22. return;
  23. if (Ltc.Do(dev, v => v.Data.PH_STATUS == false))
  24. return;
  25. if (Ltc.Do(dev, v => v.Data.TASKNUM > 0))
  26. return;
  27. if (Ltc.Do(dev, v => v.Data2.TASKNUM == 0))
  28. return;
  29. if (Ltc.Do(dev, v => v.Data.REQUEST == false))
  30. {
  31. var msg = $"{dev.Entity.CODE}有货但无请求信号";
  32. throw new Exception(msg);
  33. }
  34. var taskid = dev.Data2.TASKNUM;
  35. bool flag = false;
  36. DB.Do(db =>
  37. {
  38. var task = db.Default.Set<WCS_TASK>().Find(taskid);
  39. if (task == null)
  40. return;
  41. if (Ltc.Do(task, task => task.TYPE != TaskType.出库))
  42. return;
  43. if (Ltc.Do(task, task => task.STATUS < WCS.Entity.TaskStatus.堆垛机完成))
  44. {
  45. return;
  46. }
  47. if (Ltc.Do(task, task => task.WMSTASK > 0))
  48. {
  49. if (task.PALLETTYPE == 0 && task.AgvTask == 0 && task.STATUS < WCS.Entity.TaskStatus.已完成)
  50. {
  51. task.STATUS = WCS.Entity.TaskStatus.已完成;
  52. task.UPDATETIME = DateTime.Now;
  53. task.ENDTIME = DateTime.Now;
  54. db.Default.SaveChanges();
  55. Uploader.Upload(db);
  56. }
  57. }
  58. flag = true;
  59. });
  60. if (flag)
  61. dev.Data2.CONFIRM = true;
  62. }
  63. }
  64. }