using iWareCc.Cache.Entity;
using iWareCc.DecomposeTask.Entity;
using iWareCc.DecomposeTask.Strategy.出库任务;
using iWareCc.DecomposeTask.Strategy.入库任务;
using iWareCc.Properties;
using iWareCommon.Common.Entity;
using iWareCommon.Utils;
using iWareDataCore.DEV.EnumType;
using iWareDataCore.TASK.EnumType;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace iWareCc.DecomposeTask.Chain
{
public class 根据任务类型生成分解任务 : IHandler
{
///
/// 结果容器
///
private ResultContainer ResultContainer;
///
/// 主任务容器
///
private MainTaskContainer MainTaskContainer;
///
/// 分解任务容器
///
private PartTaskContainer PartTaskContainer;
///
/// 库位容器
///
private PlaceContainer PlaceContainer;
private IHandler nextHandler = null;
///
/// 该节点的下一个节点
///
public IHandler NextHandler
{
set { nextHandler = value; }
}
///
/// 根据主任务起止点及托盘类型生成第一段分解任务
///
public 根据任务类型生成分解任务(ResultContainer resultContainer, MainTaskContainer mainTaskContainer, PartTaskContainer partTaskContainer, PlaceContainer placeContainer)
{
this.ResultContainer = resultContainer;
this.MainTaskContainer = mainTaskContainer;
this.PartTaskContainer = partTaskContainer;
this.PlaceContainer = placeContainer;
}
///
/// 根据1.主任务类型、起止点生成第一段分解任务
///
public void Handle()
{
var task = MainTaskContainer.MainTask;
if (task.TaskType == (int)EMainTaskType.入库任务)
{
new Context(new 生成入库输送机任务(ResultContainer, MainTaskContainer, PartTaskContainer, PlaceContainer)).Invoke();
}
else if (task.TaskType == (int)EMainTaskType.出库任务)
{
if (!CacheEntity.IsLots)//只有是没有批次的才能分解出库任务
{
new Context(new 生成出库堆垛机任务(ResultContainer, MainTaskContainer, PartTaskContainer, PlaceContainer)).Invoke();
}
}
else
{
//任务类型不对
LogTextHelper.WriteLine(Resources.LogDir + @"/分解任务流程", "任务类型有误");
return;
}
if (!string.IsNullOrEmpty(ResultContainer.Msg))
{
LogTextHelper.WriteLine(Resources.LogDir + @"/分解任务流程", "根据任务类型生成分解任务:{0}", ResultContainer.Msg);
return;
}
LogTextHelper.WriteLine(Resources.LogDir + @"/分解任务流程", "根据任务类型生成分解任务:{2}任务 {0}--->{1}",
PartTaskContainer.PartTask == null ? "" : PartTaskContainer.PartTask.SourcePlace,
PartTaskContainer.PartTask == null ? "" : PartTaskContainer.PartTask.ToPlace,
PartTaskContainer.PartTask == null ? 0 : (EEquipmentType)PartTaskContainer.PartTask.Type);
if (nextHandler != null)
{
nextHandler.Handle();
}
}
}
}