using IWareCC.CacheInfo.Container;
|
using IWareCC.Extend;
|
using IWareCC.ORM;
|
using IWareCC.Properties;
|
using IWareCommon.Enum.Common;
|
using IWareCommon.Help;
|
using IWareCommon.Util;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IWareCC.HandleTask.Handle.HandleTask
|
{
|
public class 根据任务类型获取下一阶段任务 : IHandler
|
{
|
private IHandler nextHandler = null;
|
/// <summary>
|
/// 该节点的下一个节点
|
/// </summary>
|
public IHandler NextHandler
|
{
|
set { nextHandler = value; }
|
}
|
|
/// <summary>
|
/// 处理任务容器
|
/// </summary>
|
private PartTaskContainer HandleTaskContainer;
|
|
/// <summary>
|
/// 下一任务容器
|
/// </summary>
|
private PartTaskContainer NextTaskContainer;
|
|
/// <summary>
|
/// 结果容器
|
/// </summary>
|
private ResultContainer ResultContainer;
|
|
public 根据任务类型获取下一阶段任务(PartTaskContainer handleTaskContainer, PartTaskContainer nextTaskContainer, ResultContainer resultContainer)
|
{
|
this.HandleTaskContainer = handleTaskContainer;
|
this.NextTaskContainer = nextTaskContainer;
|
this.ResultContainer = resultContainer;
|
}
|
|
public void Handle()
|
{
|
|
var lasttask = HandleTaskContainer.DecompositionTask;
|
|
PartTask parttask = new PartTask
|
{
|
maintaskid = lasttask.maintaskid,
|
maintasktype = lasttask.maintasktype,
|
executionsequence = 1,
|
sourceplace = lasttask.toplace,
|
status = (int)EPartTaskStatus.开始执行,
|
createtime = DateTime.Now,
|
updatetime = DateTime.Now,
|
voidlabel = (int)EYesOrNo.否,
|
priority = 100,
|
ismovetask = (int)EYesOrNo.否,
|
packageno = lasttask.packageno,
|
taskcode = NumberHelp.GenerateRandomCode(),
|
containertype = lasttask.containertype,
|
targetplace = lasttask.targetplace,
|
heighttype = lasttask.heighttype,
|
storageno = lasttask.storageno,
|
containername = lasttask.containername
|
};
|
switch (lasttask.maintasktype)
|
{
|
case (int)EMainTaskType.常规入库:
|
if (lasttask.nexthandel == (int)ENextHandelTask.入库处入库输送线任务)
|
{
|
|
parttask.ishandled = (int)EYesOrNo.否;
|
|
parttask.eqtype = (int)EPartTaskType.输送线任务;
|
parttask.type = (int)ENextHandelTask.入库处入库输送线任务;
|
if (parttask.containertype==(int)EContainerType.小托盘)
|
{
|
parttask.eqid = (int)EDeviceId.Line1022号输送线;
|
parttask.eqname = EDeviceId.Line1022号输送线.ToString();
|
parttask.sourceplace = "1022";
|
parttask.toplace = "1024";
|
}
|
else
|
{
|
parttask.eqid = (int)EDeviceId.Line1027号输送线;
|
parttask.eqname = EDeviceId.Line1027号输送线.ToString();
|
parttask.sourceplace = "1027";
|
parttask.toplace = "1029";
|
|
}
|
parttask.nexthandel = (int)ENextHandelTask.入库处入库RGV任务;
|
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.入库处入库RGV任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.eqid = (int)EDeviceId.入库口Rgv;
|
parttask.eqname = EDeviceId.入库口Rgv.ToString();
|
parttask.eqtype = (int)EPartTaskType.Rgv任务;
|
parttask.type = (int)ENextHandelTask.入库处入库RGV任务;
|
if (parttask.storageno == (int)EStorageno.大盘库)
|
{
|
parttask.toplace = "1033";//大盘立库入库口
|
}
|
else
|
{
|
parttask.toplace = "1031";//小盘立库入库口
|
|
}
|
parttask.nexthandel = (int)ENextHandelTask.入库处库口入库输送线任务;
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.入库处库口入库输送线任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.eqtype = (int)EPartTaskType.输送线任务;
|
if (lasttask.toplace == "1031")
|
{
|
parttask.eqid = (int)EDeviceId.Line1031号输送线;
|
parttask.eqname = EDeviceId.Line1031号输送线.ToString();
|
parttask.type = (int)ENextHandelTask.入库处库口入库输送线任务;
|
parttask.toplace = "1031";
|
parttask.nexthandel = (int)ENextHandelTask.入库处小盘入库堆垛机任务;
|
}
|
else
|
{
|
parttask.eqid = (int)EDeviceId.Line1033号输送线;
|
parttask.eqname = EDeviceId.Line1033号输送线.ToString();
|
parttask.type = (int)ENextHandelTask.入库处库口入库输送线任务;
|
parttask.toplace = "1033";
|
parttask.nexthandel = (int)ENextHandelTask.入库处大盘入库堆垛机任务;
|
}
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.入库处小盘入库堆垛机任务 || lasttask.nexthandel == (int)ENextHandelTask.入库处大盘入库堆垛机任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.是;
|
parttask.eqtype = (int)EPartTaskType.堆垛机任务;
|
|
if (lasttask.nexthandel == (int)ENextHandelTask.入库处小盘入库堆垛机任务)
|
{
|
parttask.eqid = (int)EDeviceId.小盘堆垛机;
|
parttask.eqname = EDeviceId.小盘堆垛机.ToString();
|
parttask.type = (int)ENextHandelTask.入库处小盘入库堆垛机任务;
|
parttask.sourceplace = "0-802-0";
|
}
|
else
|
{
|
parttask.eqid = (int)EDeviceId.大盘堆垛机;
|
parttask.eqname = EDeviceId.大盘堆垛机.ToString();
|
parttask.type = (int)ENextHandelTask.入库处大盘入库堆垛机任务;
|
|
if (parttask.containertype == (int)EContainerType.大托盘)
|
{
|
parttask.sourceplace = "0-802-0";
|
}
|
else
|
{
|
parttask.sourceplace = "0-803-0";
|
}
|
}
|
|
parttask.toplace = parttask.targetplace;
|
parttask.nexthandel = (int)ENextHandelTask.已全部完成;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
break;
|
|
case (int)EMainTaskType.组盘出库:
|
if (lasttask.nexthandel == (int)ENextHandelTask.入库处库口出库输送线任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.type = (int)ENextHandelTask.入库处库口出库输送线任务;
|
parttask.eqtype = (int)EPartTaskType.输送线任务;
|
|
if (lasttask.type == (int)ENextHandelTask.入库处小盘出库堆垛机任务)
|
{
|
parttask.eqid = (int)EDeviceId.Line1030号输送线;
|
parttask.eqname = EDeviceId.Line1030号输送线.ToString();
|
parttask.toplace = "1030";//大盘输送线端口
|
parttask.sourceplace = "1030";
|
}
|
else if (lasttask.type == (int)ENextHandelTask.入库处大盘出库堆垛机任务)
|
{
|
parttask.eqid = (int)EDeviceId.Line1032号输送线;
|
parttask.eqname = EDeviceId.Line1032号输送线.ToString();
|
parttask.toplace = "1032";///小盘输送线端口
|
parttask.sourceplace = "1032";
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
parttask.nexthandel = (int)ENextHandelTask.入库处组盘出库RGV任务;
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.入库处组盘出库RGV任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.type = (int)ENextHandelTask.入库处组盘出库RGV任务;
|
parttask.eqtype = (int)EPartTaskType.Rgv任务;
|
parttask.eqid = (int)EDeviceId.入库口Rgv;
|
parttask.eqname = EDeviceId.入库口Rgv.ToString();
|
if (lasttask.toplace == "1030")
|
{
|
parttask.toplace = "1024";//大盘输送线端口
|
}
|
else if (lasttask.toplace == "1032")
|
{
|
if (parttask.containertype == (int)EContainerType.大托盘)
|
{
|
parttask.toplace = "1029";///小盘输送线端口
|
}else
|
{
|
parttask.toplace = "1024";///小盘输送线端口
|
}
|
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
parttask.nexthandel = (int)ENextHandelTask.入库处出库输送线任务;
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.入库处出库输送线任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.是;
|
parttask.type = (int)ENextHandelTask.入库处出库输送线任务;
|
parttask.eqtype = (int)EPartTaskType.输送线任务;
|
if (lasttask.toplace == "1024")
|
{
|
parttask.sourceplace = "1023";
|
parttask.toplace = "1021";//大盘输送线端口
|
parttask.eqid = (int)EDeviceId.Line1023号输送线;
|
parttask.eqname = EDeviceId.Line1023号输送线.ToString();
|
}
|
else if (lasttask.toplace == "1029")
|
{
|
parttask.sourceplace = "1028";///小盘输送线端口
|
parttask.toplace = "1026";///小盘输送线端口
|
parttask.eqid = (int)EDeviceId.Line1028号输送线;
|
parttask.eqname = EDeviceId.Line1028号输送线.ToString();
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
|
|
parttask.nexthandel = (int)ENextHandelTask.已全部完成;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
break;
|
|
case (int)EMainTaskType.空托出库:
|
if (lasttask.nexthandel == (int)ENextHandelTask.入库处库口出库输送线任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.type = (int)ENextHandelTask.入库处库口出库输送线任务;
|
parttask.eqtype = (int)EPartTaskType.输送线任务;
|
|
if (lasttask.type == (int)ENextHandelTask.入库处小盘出库堆垛机任务)
|
{
|
parttask.eqid = (int)EDeviceId.Line1030号输送线;
|
parttask.eqname = EDeviceId.Line1030号输送线.ToString();
|
parttask.toplace = "1030";//大盘输送线端口
|
parttask.sourceplace = "1030";
|
}
|
else if (lasttask.type == (int)ENextHandelTask.入库处大盘出库堆垛机任务)
|
{
|
parttask.eqid = (int)EDeviceId.Line1032号输送线;
|
parttask.eqname = EDeviceId.Line1032号输送线.ToString();
|
parttask.toplace = "1032";///小盘输送线端口
|
parttask.sourceplace = "1032";
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
parttask.nexthandel = (int)ENextHandelTask.入库处空盘出库RGV任务;
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.入库处空盘出库RGV任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.是;
|
parttask.type = (int)ENextHandelTask.入库处空盘出库RGV任务;
|
parttask.eqtype = (int)EPartTaskType.Rgv任务;
|
parttask.eqid = (int)EDeviceId.入库口Rgv;
|
parttask.eqname = EDeviceId.入库口Rgv.ToString();
|
if (lasttask.containertype == (int)EContainerType.小托盘)
|
{
|
parttask.toplace = "1020";
|
}
|
else
|
{
|
parttask.toplace = "1025";
|
}
|
parttask.nexthandel = (int)ENextHandelTask.已全部完成;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
break;
|
|
case (int)EMainTaskType.常规出库:
|
if (lasttask.nexthandel == (int)ENextHandelTask.出库处库口出库输送线任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.type = (int)ENextHandelTask.出库处库口出库输送线任务;
|
parttask.eqtype = (int)EPartTaskType.输送线任务;
|
if (lasttask.type == (int)ENextHandelTask.出库处大盘出库堆垛机任务)
|
{
|
parttask.eqid = (int)EDeviceId.Line1013号输送线;
|
parttask.eqname = EDeviceId.Line1013号输送线.ToString();
|
parttask.toplace = "1013";//大盘输送线端口
|
parttask.sourceplace = "1013";
|
}
|
else if (lasttask.type == (int)ENextHandelTask.出库处小盘出库堆垛机任务)
|
{
|
parttask.eqid = (int)EDeviceId.Line1015号输送线;
|
parttask.eqname = EDeviceId.Line1015号输送线.ToString();
|
parttask.toplace = "1015";///小盘输送线端口
|
parttask.sourceplace = "1015";
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
parttask.nexthandel = (int)ENextHandelTask.出库处出库RGV任务;
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.出库处出库RGV任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.type = (int)ENextHandelTask.出库处出库RGV任务;
|
parttask.eqtype = (int)EPartTaskType.Rgv任务;
|
parttask.eqid = (int)EDeviceId.出库口Rgv;
|
parttask.eqname = EDeviceId.出库口Rgv.ToString();
|
if (lasttask.targetplace == "1003")
|
{
|
parttask.toplace = "1005";
|
parttask.nexthandel = (int)ENextHandelTask.出库处出库输送线任务;
|
}
|
else if (lasttask.targetplace == "1008")
|
{
|
parttask.toplace = "1011";
|
parttask.nexthandel = (int)ENextHandelTask.出库处出库输送线任务;
|
}
|
else if (lasttask.targetplace == "1001")
|
{
|
parttask.toplace = "1001";
|
parttask.ishandled = (int)EYesOrNo.是;
|
parttask.nexthandel = (int)ENextHandelTask.已全部完成;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.出库处出库输送线任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.是;
|
parttask.type = (int)ENextHandelTask.出库处出库输送线任务;
|
parttask.eqtype = (int)EPartTaskType.输送线任务;
|
if (lasttask.toplace == "1005")
|
{
|
parttask.toplace = "1003";
|
parttask.eqid = (int)EDeviceId.Line1006号输送线;
|
parttask.eqname = EDeviceId.Line1006号输送线.ToString();
|
parttask.sourceplace = "1006";
|
}
|
else if (lasttask.toplace == "1011")
|
{
|
parttask.toplace = "1008";
|
parttask.eqid = (int)EDeviceId.Line1012号输送线;
|
parttask.eqname = EDeviceId.Line1012号输送线.ToString();
|
parttask.sourceplace = "1012";
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
parttask.nexthandel = (int)ENextHandelTask.已全部完成;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
break;
|
|
case (int)EMainTaskType.出库叠盘:///根据起始位判断出口
|
if (lasttask.nexthandel == (int)ENextHandelTask.出库处叠盘RGV任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.是;
|
parttask.type = (int)ENextHandelTask.出库处叠盘RGV任务;
|
parttask.eqtype = (int)EPartTaskType.Rgv任务;
|
parttask.eqid = (int)EDeviceId.出库口Rgv;
|
parttask.eqname = EDeviceId.出库口Rgv.ToString();
|
if (lasttask.containertype == (int)EContainerType.大托盘)
|
{
|
parttask.toplace = "1017";
|
}
|
else if (lasttask.containertype == (int)EContainerType.小托盘)
|
{
|
parttask.toplace = "1018";
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
|
parttask.nexthandel = (int)ENextHandelTask.已全部完成;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
break;
|
|
case (int)EMainTaskType.余料回库:
|
if (lasttask.nexthandel == (int)ENextHandelTask.出库处入库RGV任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.eqtype = (int)EPartTaskType.Rgv任务;
|
parttask.type = (int)ENextHandelTask.出库处入库RGV任务;
|
parttask.eqid = (int)EDeviceId.出库口Rgv;
|
parttask.eqname = EDeviceId.出库口Rgv.ToString();
|
if (lasttask.storageno == (int)EStorageno.大盘库)
|
{
|
parttask.toplace = "1014";//大盘出库口
|
parttask.nexthandel = (int)ENextHandelTask.出库处库口入库输送线任务;
|
}
|
else if (lasttask.containertype == (int)EStorageno.小盘库)
|
{
|
parttask.toplace = "1016";//小盘出库口
|
parttask.nexthandel = (int)ENextHandelTask.出库处库口入库输送线任务;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.出库处库口入库输送线任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.eqtype = (int)EPartTaskType.输送线任务;
|
parttask.type = (int)ENextHandelTask.出库处库口入库输送线任务;
|
|
if (lasttask.toplace == "1014")
|
{
|
parttask.eqid = (int)EDeviceId.Line1014号输送线;
|
parttask.eqname = EDeviceId.Line1014号输送线.ToString();
|
parttask.toplace = "1014";//大盘出库口
|
parttask.nexthandel = (int)ENextHandelTask.出库处大盘入库堆垛机任务;
|
}
|
else if (lasttask.toplace == "1016")
|
{
|
parttask.eqid = (int)EDeviceId.Line1016号输送线;
|
parttask.eqname = EDeviceId.Line1016号输送线.ToString();
|
parttask.toplace = "1016";//小盘出库口
|
parttask.nexthandel = (int)ENextHandelTask.出库处小盘入库堆垛机任务;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.出库处大盘入库堆垛机任务 || lasttask.nexthandel == (int)ENextHandelTask.出库处小盘入库堆垛机任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.是;
|
parttask.eqtype = (int)EPartTaskType.堆垛机任务;
|
if (lasttask.nexthandel == (int)ENextHandelTask.出库处小盘入库堆垛机任务)
|
{
|
parttask.eqid = (int)EDeviceId.小盘堆垛机;
|
parttask.eqname = EDeviceId.小盘堆垛机.ToString();
|
parttask.type = (int)ENextHandelTask.出库处小盘入库堆垛机任务;
|
}
|
else
|
{
|
parttask.eqid = (int)EDeviceId.大盘堆垛机;
|
parttask.eqname = EDeviceId.大盘堆垛机.ToString();
|
parttask.type = (int)ENextHandelTask.出库处大盘入库堆垛机任务;
|
|
}
|
parttask.sourceplace = "0-801-0";
|
parttask.toplace = parttask.targetplace;
|
parttask.nexthandel = (int)ENextHandelTask.已全部完成;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
break;
|
|
case (int)EMainTaskType.满空托回库:
|
if (lasttask.nexthandel == (int)ENextHandelTask.出库处库口入库输送线任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.否;
|
parttask.eqtype = (int)EPartTaskType.输送线任务;
|
parttask.type = (int)ENextHandelTask.出库处库口入库输送线任务;
|
|
if (lasttask.toplace == "1014")
|
{
|
parttask.eqid = (int)EDeviceId.Line1014号输送线;
|
parttask.eqname = EDeviceId.Line1014号输送线.ToString();
|
parttask.toplace = "1014";//大盘出库口
|
parttask.nexthandel = (int)ENextHandelTask.出库处大盘入库堆垛机任务;
|
}
|
else if (lasttask.toplace == "1016")
|
{
|
parttask.eqid = (int)EDeviceId.Line1016号输送线;
|
parttask.eqname = EDeviceId.Line1016号输送线.ToString();
|
parttask.toplace = "1016";//小盘出库口
|
parttask.nexthandel = (int)ENextHandelTask.出库处小盘入库堆垛机任务;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
|
}
|
else if (lasttask.nexthandel == (int)ENextHandelTask.出库处大盘入库堆垛机任务 || lasttask.nexthandel == (int)ENextHandelTask.出库处小盘入库堆垛机任务)
|
{
|
parttask.ishandled = (int)EYesOrNo.是;
|
parttask.eqtype = (int)EPartTaskType.堆垛机任务;
|
if (lasttask.nexthandel == (int)ENextHandelTask.出库处大盘入库堆垛机任务)
|
{
|
parttask.type = (int)ENextHandelTask.出库处大盘入库堆垛机任务;
|
parttask.eqid = (int)EDeviceId.大盘堆垛机;
|
parttask.eqname = EDeviceId.大盘堆垛机.ToString();
|
}
|
else
|
{
|
parttask.type = (int)ENextHandelTask.出库处小盘入库堆垛机任务;
|
parttask.eqid = (int)EDeviceId.小盘堆垛机;
|
parttask.eqname = EDeviceId.小盘堆垛机.ToString();
|
}
|
parttask.sourceplace = "0-801-0";
|
parttask.toplace = lasttask.targetplace;
|
parttask.nexthandel = (int)ENextHandelTask.已全部完成;
|
}
|
else
|
{
|
ResultContainer.Msg = "未识别该任务类型!";
|
}
|
break;
|
|
default:
|
ResultContainer.Msg = "未识别该任务类型!";
|
break;
|
}
|
if (!string.IsNullOrEmpty(ResultContainer.Msg))
|
{
|
|
LogTextHelper.WriteLine(Resources.LogDir + @"/处理任务流程", "根据相应的任务类型获取下一阶段任务:{0}", ResultContainer.Msg);
|
return;
|
}
|
NextTaskContainer.DecompositionTask = parttask;
|
var task = NextTaskContainer.DecompositionTask;
|
|
LogTextHelper.WriteLine(Resources.LogDir + @"/处理任务流程", "根据相应的任务类型获取下一阶段任务:{2} {0}--->{1}",
|
task == null ? "" : task.sourceplace, task == null ? "" : task.toplace, task == null ? "未知" : ((EPartTaskType)task.type).ToString());
|
|
if (nextHandler != null)
|
{
|
nextHandler.Handle();
|
}
|
|
}
|
}
|
}
|