FinishTaskList.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. public static class FinishTaskListExtensions
  28. {
  29. /// <summary>
  30. /// 入库可用任务数是否有效
  31. /// </summary>
  32. /// <param name="finishes"></param>
  33. /// <exception cref="WarnException"></exception>
  34. public static void Valid(this List<FinishTaskList<string>> finishes)
  35. {
  36. var maxGoodsnum = finishes.Select(v => v.Station.Data2.Goodsnum).OrderByDescending(v => v).FirstOrDefault();
  37. if (finishes.Count != maxGoodsnum) throw new WarnException($"可用货物数{finishes.Count},实际货物数{maxGoodsnum}");
  38. if (!finishes.Any()) throw new DoException("没有任务");
  39. }
  40. /// <summary>
  41. /// 入库可用任务数是否有效
  42. /// </summary>
  43. /// <param name="finishes"></param>
  44. /// <exception cref="WarnException"></exception>
  45. public static List<I_WCS_GetInTaskResponseItem> GetWMSInTask(this List<FinishTaskList<string>> finishes)
  46. {
  47. if (!finishes.Any()) throw new DoException("没有任务");
  48. var items = finishes.ToArray();
  49. var infos = items.Length switch
  50. {
  51. 1 => WMS.I_WCS_GetInTask(items[0].FinishCode, items[0].Station.Entity.CODE),
  52. 2 => WMS.I_WCS_GetInTask(items[0].FinishCode, items[0].Station.Entity.CODE, items[1].FinishCode, items[1].Station.Entity.CODE),
  53. _ => throw new WarnException($"一组任务数量最大为2,当前{items.Length}"),
  54. };
  55. return infos;
  56. }
  57. }
  58. }