wcs_server_kate_suzhou/WcsMain/ExtendMethod/AppWcsTaskExtendMethod.cs

146 lines
5.0 KiB
C#

using WcsMain.DataBase.TableEntity;
using WcsMain.Enum.Stacker;
using WcsMain.EquipOperation.Entity.Stacker;
namespace WcsMain.ExtendMethod;
/// <summary>
/// wcs 任务表的扩展方法
/// </summary>
public static class AppWcsTaskExtendMethod
{
/// <summary>
/// 是否是第一个任务
/// </summary>
/// <param name="wcsTask"></param>
/// <remarks>
/// 序号是 1 表示第一个任务
/// </remarks>
/// <returns></returns>
public static bool IsFirstTask(this AppWcsTask wcsTask)
{
if (wcsTask == default) return false;
return wcsTask.TaskSort == 1;
}
/// <summary>
/// 是否是最后一个任务
/// </summary>
/// <param name="wcsTask"></param>
/// <remarks>
/// 最后一个任务下一任务号是空值
/// </remarks>
/// <returns></returns>
public static bool IsLastTask(this AppWcsTask wcsTask)
{
if (wcsTask == default) return false;
return wcsTask.NextPlcId == default;
}
/// <summary>
/// 生成一个入库任务
/// </summary>
/// <param name="wcsTask"></param>
/// <param name="stackerId"></param>
/// <param name="forkId"></param>
/// <param name="destinationDetail"></param>
/// <returns></returns>
public static StackerPlcTask ToStackerInTask(this AppWcsTask wcsTask, int stackerId, int forkId, AppLocation destinationDetail)
{
StackerPlcTask stackerTask = new()
{
StackerId = stackerId,
PlcId = wcsTask.PlcId,
TaskType = (int)WcsTaskTypeEnum.inTask,
GetStand = 0,
InTunnelId = Convert.ToInt16(stackerId),
OutTunnelId = Convert.ToInt16(stackerId),
SetStand = 0,
GetQueue = 2,
GetLine = Convert.ToInt16(forkId),
GetLayer = 1,
GetDeep = 1,
SetQueue = Convert.ToInt16(destinationDetail.Queue),
SetLine = Convert.ToInt16(destinationDetail.Line),
SetLayer = Convert.ToInt16(destinationDetail.Layer),
SetDeep = Convert.ToInt16(destinationDetail.Depth),
Size = Convert.ToInt16(wcsTask.VehicleSize),
Weight = Convert.ToInt16(wcsTask.Weight),
Code = wcsTask.PlcVehicleNo ?? 0,
};
return stackerTask;
}
/// <summary>
/// 生成一个入库任务
/// </summary>
/// <param name="wcsTask"></param>
/// <param name="stackerId"></param>
/// <param name="forkId"></param>
/// <param name="originDetail"></param>
/// <returns></returns>
public static StackerPlcTask ToStackerOutTask(this AppWcsTask wcsTask, int stackerId, int forkId, AppLocation originDetail)
{
StackerPlcTask stackerTask = new()
{
StackerId = stackerId,
PlcId = wcsTask.PlcId,
TaskType = (int)WcsTaskTypeEnum.outTask,
GetStand = 0,
InTunnelId = Convert.ToInt16(stackerId),
OutTunnelId = Convert.ToInt16(stackerId),
SetStand = 0,
GetQueue = Convert.ToInt16(originDetail.Queue),
GetLine = Convert.ToInt16(originDetail.Queue),
GetLayer = Convert.ToInt16(originDetail.Queue),
GetDeep = Convert.ToInt16(originDetail.Queue),
SetQueue = 2,
SetLine = Convert.ToInt16(forkId),
SetLayer = 2,
SetDeep = 1,
Size = Convert.ToInt16(wcsTask.VehicleSize),
Weight = Convert.ToInt16(wcsTask.Weight),
Code = wcsTask.PlcVehicleNo ?? 0,
};
return stackerTask;
}
/// <summary>
/// 生成一个移库任务
/// </summary>
/// <param name="wcsTask"></param>
/// <param name="stackerId"></param>
/// <param name="originDetail"></param>
/// <param name="destinationDetail"></param>
/// <returns></returns>
public static StackerPlcTask ToStackerMoveTask(this AppWcsTask wcsTask, int stackerId, AppLocation originDetail, AppLocation destinationDetail)
{
StackerPlcTask stackerTask = new()
{
StackerId = stackerId,
PlcId = wcsTask.PlcId,
TaskType = (int)WcsTaskTypeEnum.moveTask,
GetStand = 0,
InTunnelId = Convert.ToInt16(stackerId),
OutTunnelId = Convert.ToInt16(stackerId),
SetStand = 0,
GetQueue = Convert.ToInt16(originDetail.Queue),
GetLine = Convert.ToInt16(originDetail.Queue),
GetLayer = Convert.ToInt16(originDetail.Queue),
GetDeep = Convert.ToInt16(originDetail.Queue),
SetQueue = Convert.ToInt16(destinationDetail.Queue),
SetLine = Convert.ToInt16(destinationDetail.Line),
SetLayer = Convert.ToInt16(destinationDetail.Layer),
SetDeep = Convert.ToInt16(destinationDetail.Depth),
Size = Convert.ToInt16(wcsTask.VehicleSize),
Weight = Convert.ToInt16(wcsTask.Weight),
Code = wcsTask.PlcVehicleNo ?? 0,
};
return stackerTask;
}
}