using System.Collections.Generic; using System.Linq; using WCS.BaseExtensions; using WCS.Service.Extensions; using WCS.WebApi.WMS; using WCS.WebApi.WMS.Response; namespace WCS.Service.Helpers { /// /// 处理完成任务记录集合 /// /// public class FinishTaskList { public FinishTaskList(T finishCode, StationDevice station) { FinishCode = finishCode; Station = station; } /// /// 完成 /// public T FinishCode { get; set; } /// /// 对应设备信息 /// public StationDevice Station { get; set; } } /// /// 处理完成任务记录集合 /// /// public class FinishTaskList { public FinishTaskList(T finishCode, T1 station) { FinishCode = finishCode; Station = station; } /// /// 完成 /// public T FinishCode { get; set; } /// /// 对应设备信息 /// public T1 Station { get; set; } } public static class FinishTaskListExtensions { /// /// 入库可用任务数是否有效 /// /// /// public static void Valid(this List> finishes) { var maxGoodsnum = finishes.Select(v => v.Station.Data2.Goodsnum).OrderByDescending(v => v).FirstOrDefault(); if (finishes.Count != maxGoodsnum) throw new WarnException($"可用货物数{finishes.Count},实际货物数{maxGoodsnum}"); if (!finishes.Any()) throw new DoException("没有任务"); } /// /// 入库可用任务数是否有效 /// /// /// public static List GetWMSInTask(this List> finishes) { if (!finishes.Any()) throw new DoException("没有任务"); var items = finishes.ToArray(); var infos = items.Length switch { 1 => WMS.I_WCS_GetInTask(items[0].FinishCode, items[0].Station.Entity.CODE), 2 => WMS.I_WCS_GetInTask(items[0].FinishCode, items[0].Station.Entity.CODE, items[1].FinishCode, items[1].Station.Entity.CODE), _ => throw new WarnException($"一组任务数量最大为2,当前{items.Length}"), }; return infos; } } }