using iWareCc.DecomposeTask.Entity;
using iWareCc.HandleTask.Strategy.出库任务;
using iWareCc.HandleTask.Strategy.入库任务;
using iWareCc.Properties;
using iWareCommon.Common.Entity;
using iWareCommon.Utils;
using iWareDataCore.DEV.EnumType;
using iWareDataCore.ORM;
using iWareDataCore.TASK.EnumType;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace iWareCc.HandleTask.Chain
{
public class 根据任务类型获取下一阶段任务 : IHandler
{
private IHandler nextHandler = null;
///
/// 该节点的下一个节点
///
public IHandler NextHandler
{
set { nextHandler = value; }
}
///
/// 处理任务容器
///
private PartTaskContainer HandleTaskContainer;
///
/// 下一任务容器
///
private PartTaskContainer NextTaskContainer;
///
/// 结果容器
///
private ResultContainer ResultContainer;
public 根据任务类型获取下一阶段任务(PartTaskContainer handleTaskContainer, PartTaskContainer nextTaskContainer, ResultContainer resultContainer)
{
this.HandleTaskContainer = handleTaskContainer;
this.NextTaskContainer = nextTaskContainer;
this.ResultContainer = resultContainer;
}
public void Handle()
{
if (HandleTaskContainer.PartTask.MainTaskType == (int)EMainTaskType.入库任务)
{
new Context(new 处理入库任务(ResultContainer, HandleTaskContainer, NextTaskContainer)).Invoke();
}
else if (HandleTaskContainer.PartTask.MainTaskType == (int)EMainTaskType.出库任务)
{
new Context(new 处理出库任务(ResultContainer, HandleTaskContainer, NextTaskContainer)).Invoke();
}
else
{
//任务类型不对
LogTextHelper.WriteLine(Resources.LogDir + @"/处理任务流程", "任务类型有误");
return;
}
if (!string.IsNullOrEmpty(ResultContainer.Msg))
{
LogTextHelper.WriteLine(Resources.LogDir + @"/处理任务流程", "根据相应的任务类型获取下一阶段任务:{0}", ResultContainer.Msg);
return;
}
var task = NextTaskContainer.PartTask;
LogTextHelper.WriteLine(Resources.LogDir + @"/处理任务流程", "根据相应的任务类型获取下一阶段任务:{2} {0}--->{1}",
task == null ? "" : task.SourcePlace, task == null ? "" : task.ToPlace, task == null ? EPartTaskType.堆垛机任务 : (EPartTaskType)task.Type);
if (nextHandler != null)
{
nextHandler.Handle();
}
}
}
}