TaskBookBehavior_61005.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using MaxCommunication.DataBase.Document;
  2. using PmsSecondaryPackaging.Interface.Model.Carrier;
  3. using PmsSecondaryPackaging.Interface.Model.StepBook;
  4. using PmsSecondaryPackaging.Interface.Model.TaskBook;
  5. using PmsSecondaryPackaging.TaskManager.TaskBookBehavior;
  6. using ProjectManagementSystem.NHibernateDBHelper;
  7. using System.Collections.Generic;
  8. using System.Threading;
  9. using System.Linq;
  10. using System;
  11. namespace ProjectManagementSystem.TaskBookEvent
  12. {
  13. public class TaskBookBehavior_61005 : BaseTaskBookBehavior
  14. {
  15. public TaskBookBehavior_61005() : base(61005)
  16. {
  17. }
  18. public override bool TaskBookSetting(TaskDetailInfoModel taskDetailInfo, List<StepDetailInfoModel> taskStepInfoList, CarrierInfoModel carrierInfo)
  19. {
  20. //IsEnable = false; Asynchronous = true;
  21. return base.TaskBookSetting(taskDetailInfo, taskStepInfoList, carrierInfo);
  22. }
  23. public override bool TaskBookTermination(TaskDetailInfoModel taskDetailInfo, List<StepDetailInfoModel> taskStepInfoList, CarrierInfoModel carrierInfo)
  24. {
  25. return base.TaskBookTermination(taskDetailInfo, taskStepInfoList, carrierInfo);
  26. }
  27. public override bool TaskBookOperator(TaskDetailInfoModel taskDetailInfo, List<StepDetailInfoModel> taskStepInfoList, CarrierInfoModel carrierInfo)
  28. {
  29. bool successed = false;
  30. StepDetailInfoModel currentStep = taskStepInfoList.Find(p => p.StepId == taskDetailInfo.CurrentStepID);
  31. string strCurWareHouse = currentStep.WareHouseID;
  32. try
  33. {
  34. bool pass = false;
  35. string curWareHouse = "";
  36. using (var session = WMSDBModelHelper.Session)
  37. {
  38. //int curColumn = 0;
  39. var result = session.QueryOver<WareHouseLocation>().Where(p => p.WareHouseCode == "003" && p.Status == "1").List().OrderBy(p => p.Attribute2).ThenByDescending(p=>p.Attribute3);//.;//
  40. List<WareHouseLocation> list = result.ToList();
  41. if (list.Count() > 0)
  42. {
  43. var columns = list.Select(p => p.Attribute2).Distinct();
  44. foreach (string c in columns)
  45. {
  46. if (pass) break;
  47. List<WareHouseLocation> listSub = list.FindAll(p => p.Attribute2 == c);
  48. listSub = listSub.OrderByDescending(p => p.Attribute3).ToList();
  49. string warehouse = listSub.First().LocationCode;
  50. var ress = session.QueryOver<WareHouseLocation>().Where(p => p.WareHouseCode == "003" && p.Attribute2 == c && p.Status != "1").List();
  51. if (ress.Count() <= 0)
  52. {
  53. //EFailCode failcode;
  54. //if (controller.SetBookWarehouse(e.TaskBook.NextDefaultBookID, warehouse, out failcode))
  55. //{
  56. // pass = true;
  57. // break;
  58. //}
  59. pass = true;
  60. curWareHouse = warehouse;
  61. break;
  62. }
  63. else
  64. {
  65. string fullWareHouse = ress.First().LocationCode;//行号最小的非空库位
  66. foreach (var sub in listSub)
  67. {
  68. pass = true;
  69. curWareHouse = warehouse;
  70. break;
  71. }
  72. if (pass)
  73. {
  74. break;
  75. }
  76. }
  77. }
  78. }
  79. }
  80. if(pass)
  81. {
  82. AddTask(taskDetailInfo.TaskID, curWareHouse);
  83. successed = true;
  84. TextDocument.WriteFile(@"PMS/Log", "选择1楼空库位下料61005", string.Format("选择目标库位:{0}", curWareHouse));
  85. }
  86. //using (var session = WMSDBModelHelper.Session)
  87. //{
  88. // var result = session.QueryOver<WareHouseLocation>().Where(p => p.WareHouseCode == "003"&& p.Status == "1").List();
  89. // if (result.Count > 0)
  90. // {
  91. // WareHouseLocation order = result[0];
  92. // string nextWareHouseLocation = order.LocationCode;
  93. // AddTask(taskDetailInfo.TaskID, nextWareHouseLocation);
  94. // session.Flush();
  95. // successed = true;
  96. // TextDocument.WriteFile(@"PMS/Log", "选择1楼空库位下料61005", string.Format("选择目标库位:{0}", nextWareHouseLocation));
  97. // }
  98. //}
  99. bool resultTask = InterfaceService.GetTask(taskDetailInfo.TaskID, out TaskDetailInfoModel taskDetailInfo1, out string message);
  100. if (string.IsNullOrEmpty(message) && taskDetailInfo1 == null)
  101. {
  102. successed = true;
  103. }
  104. }
  105. catch(Exception ex)
  106. {
  107. TextDocument.WriteFile(@"PMS/Log", "选择1楼空库位下料61005", string.Format("异常:{0}", ex.ToString()));
  108. }
  109. return successed;
  110. }
  111. /// <summary>
  112. /// 添加流程一的子流程2
  113. /// </summary>
  114. private void AddTask(string TaskID,string EmptyWareHouse)
  115. {
  116. TaskAddInfoModel taskAddInfoModel = new TaskAddInfoModel();
  117. taskAddInfoModel.TaskID = System.DateTime.Now.ToString("MMddhhmmssffff");
  118. taskAddInfoModel.TemplateName = "StandardTemplate21";
  119. taskAddInfoModel.AgvType = "0";
  120. Dictionary<string, string> dictionary = new Dictionary<string, string>();
  121. dictionary.Add("M", EmptyWareHouse);
  122. //dictionary.Add("vWrappingMachine01", "WrappingMachine01");
  123. taskAddInfoModel.ParametersDic = dictionary;
  124. taskAddInfoModel.ParentTaskId = TaskID;
  125. if (!InterfaceService.TaskAdd(taskAddInfoModel, out string Message))
  126. {
  127. TextDocument.WriteFile(@"PMS/Log", "选择1楼空库位下料61005", Message);
  128. }
  129. else
  130. {
  131. TextDocument.WriteFile(@"PMS/Log", "选择1楼空库位下料61005", "1楼下料任务添加成功!");
  132. }
  133. Thread.Sleep(1000);
  134. }
  135. }
  136. }