FinishTaskList.cs 2.8 KB

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