12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- 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
- {
- /// <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;
- }
- }
- }
|