| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | using System.Collections.Generic;using System.Linq;using WCS.Service.Entity;using WCS.Service.Extensions;namespace WCS.Service.Helpers{    /// <summary>    /// 处理完成任务记录集合    /// </summary>    /// <typeparam name="T"></typeparam>    public class FinishTaskList<T>    {        public FinishTaskList(T finishCode, StationDevice station)        {            FinishCode = finishCode;            Station = station;        }        /// <summary>        /// 完成        /// </summary>        public T FinishCode { get; set; }        /// <summary>        /// 对应设备信息        /// </summary>        public StationDevice Station { get; set; }    }    /// <summary>    /// 处理完成任务记录集合    /// </summary>    /// <typeparam name="T"></typeparam>    public class FinishTaskList<T,T1>    {        public FinishTaskList(T finishCode, T1 station)        {            FinishCode = finishCode;            Station = station;        }        /// <summary>        /// 完成        /// </summary>        public T FinishCode { get; set; }        /// <summary>        /// 对应设备信息        /// </summary>        public T1 Station { get; set; }    }    public static class FinishTaskListExtensions    {        /// <summary>        /// 入库可用任务数是否有效        /// </summary>        /// <param name="finishes"></param>        /// <exception cref="WarnException"></exception>        public static void Valid(this List<FinishTaskList<string>> 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("没有任务");        }        /// <summary>        /// 入库可用任务数是否有效        /// </summary>        /// <param name="finishes"></param>        /// <exception cref="WarnException"></exception>        public static List<I_WCS_GetInTaskResponseItem> GetWMSInTask(this List<FinishTaskList<string>> 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;        }    }}
 |