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
|
{
|
/// <summary>
|
/// 结果容器
|
/// </summary>
|
private ResultContainer ResultContainer;
|
|
/// <summary>
|
/// 主任务容器
|
/// </summary>
|
private MainTaskContainer MainTaskContainer;
|
|
/// <summary>
|
/// 分解任务容器
|
/// </summary>
|
private PartTaskContainer PartTaskContainer;
|
|
/// <summary>
|
/// 库位容器
|
/// </summary>
|
private PlaceContainer PlaceContainer;
|
|
private IHandler nextHandler = null;
|
/// <summary>
|
/// 该节点的下一个节点
|
/// </summary>
|
public IHandler NextHandler
|
{
|
set { nextHandler = value; }
|
}
|
|
/// <summary>
|
/// 根据主任务起止点及托盘类型生成第一段分解任务
|
/// </summary>
|
public 根据任务类型生成分解任务(ResultContainer resultContainer, MainTaskContainer mainTaskContainer, PartTaskContainer partTaskContainer, PlaceContainer placeContainer)
|
{
|
this.ResultContainer = resultContainer;
|
this.MainTaskContainer = mainTaskContainer;
|
this.PartTaskContainer = partTaskContainer;
|
this.PlaceContainer = placeContainer;
|
}
|
|
|
/// <summary>
|
/// 根据1.主任务类型、起止点生成第一段分解任务
|
/// </summary>
|
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();
|
}
|
}
|
|
}
|
}
|