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;
}
}
}