FinishTaskList.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using WCS.Service.Entity;
  4. using WCS.Service.Extensions;
  5. namespace WCS.Service.Helpers
  6. {
  7. /// <summary>
  8. /// 处理完成任务记录集合
  9. /// </summary>
  10. /// <typeparam name="T"></typeparam>
  11. public class FinishTaskList<T>
  12. {
  13. public FinishTaskList(T finishCode, StationDevice station)
  14. {
  15. FinishCode = finishCode;
  16. Station = station;
  17. }
  18. /// <summary>
  19. /// 完成
  20. /// </summary>
  21. public T FinishCode { get; set; }
  22. /// <summary>
  23. /// 对应设备信息
  24. /// </summary>
  25. public StationDevice Station { get; set; }
  26. }
  27. /// <summary>
  28. /// 处理完成任务记录集合
  29. /// </summary>
  30. /// <typeparam name="T"></typeparam>
  31. public class FinishTaskList<T,T1>
  32. {
  33. public FinishTaskList(T finishCode, T1 station)
  34. {
  35. FinishCode = finishCode;
  36. Station = station;
  37. }
  38. /// <summary>
  39. /// 完成
  40. /// </summary>
  41. public T FinishCode { get; set; }
  42. /// <summary>
  43. /// 对应设备信息
  44. /// </summary>
  45. public T1 Station { get; set; }
  46. }
  47. public static class FinishTaskListExtensions
  48. {
  49. /// <summary>
  50. /// 入库可用任务数是否有效
  51. /// </summary>
  52. /// <param name="finishes"></param>
  53. /// <exception cref="WarnException"></exception>
  54. public static void Valid(this List<FinishTaskList<string>> finishes)
  55. {
  56. var maxGoodsnum = finishes.Select(v => v.Station.Data2.Goodsnum).OrderByDescending(v => v).FirstOrDefault();
  57. if (finishes.Count != maxGoodsnum) throw new WarnException($"可用货物数{finishes.Count},实际货物数{maxGoodsnum}");
  58. if (!finishes.Any()) throw new DoException("没有任务");
  59. }
  60. /// <summary>
  61. /// 入库可用任务数是否有效
  62. /// </summary>
  63. /// <param name="finishes"></param>
  64. /// <exception cref="WarnException"></exception>
  65. public static List<I_WCS_GetInTaskResponseItem> GetWMSInTask(this List<FinishTaskList<string>> finishes)
  66. {
  67. if (!finishes.Any()) throw new DoException("没有任务");
  68. var items = finishes.ToArray();
  69. var infos = items.Length switch
  70. {
  71. 1 => WMS.I_WCS_GetInTask(items[0].FinishCode, items[0].Station.Entity.CODE),
  72. 2 => WMS.I_WCS_GetInTask(items[0].FinishCode, items[0].Station.Entity.CODE, items[1].FinishCode, items[1].Station.Entity.CODE),
  73. _ => throw new WarnException($"一组任务数量最大为2,当前{items.Length}"),
  74. };
  75. return infos;
  76. }
  77. }
  78. }