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(); } } } }