using iWareCc.Cache.Entity; using iWareCc.DecomposeTask.Entity; using iWareCc.Properties; using iWareCommon.Common.Entity; using iWareCommon.Common.EnumType; using iWareCommon.Utils; using iWareDataCore.BASE.Entity; using iWareDataCore.DEV.Entity; using iWareDataCore.DEV.EnumType; using iWareDataCore.TASK.Entity; using iWareDataCore.TASK.EnumType; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareCc.HandleTask.Strategy.入库任务.Strategy { public class 处理输送机任务 : IStrategy { private ResultContainer ResultContainer; private PartTaskContainer HandleTaskContainer; private PartTaskContainer NextTaskContainer; public 处理输送机任务(ResultContainer resultContainer, PartTaskContainer handleTaskContainer, PartTaskContainer nextTaskContainer) { this.ResultContainer = resultContainer; this.HandleTaskContainer = handleTaskContainer; this.NextTaskContainer = nextTaskContainer; } public void DoJob() { try { var hTask = HandleTaskContainer.PartTask; var equment = new EquipmentEntity(); var fromPlace = new PlaceViewEntity(); var toPlace = new PlaceViewEntity(); int nextnode = 99; int type = 99; if (hTask.NextNode != (int)EInstorgNextNode.stacker) { string conveyorCnName = Enum.GetName(typeof(EEquipmentCnName), EEquipmentCnName.conveyor1); equment = CacheEntity.Equipments.FirstOrDefault(x => x.EquipName == conveyorCnName); type = (int)EPartTaskType.输送机任务; } else { string stackerCnName = Enum.GetName(typeof(EEquipmentCnName), EEquipmentCnName.stacker1); equment = CacheEntity.Equipments.FirstOrDefault(x => x.EquipName == stackerCnName); type = (int)EPartTaskType.堆垛机任务; } int ishandel = (int)EYesOrNo.否; switch (HandleTaskContainer.PartTask.NextNode) { case (int)EInstorgNextNode.gate13: fromPlace = CacheEntity.Places.FirstOrDefault(x => x.Id == hTask.ToPlaceId); toPlace = CacheEntity.Places.FirstOrDefault(x => x.PlaceTypeName == EInstorgNextNode.gate13.ToString()); nextnode = (int)EInstorgNextNode.gate14; break; case (int)EInstorgNextNode.gate14: fromPlace = CacheEntity.Places.FirstOrDefault(x => x.Id == hTask.ToPlaceId); toPlace = CacheEntity.Places.FirstOrDefault(x => x.PlaceTypeName == EInstorgNextNode.gate14.ToString()); nextnode = (int)EInstorgNextNode.gate15; break; case (int)EInstorgNextNode.gate15: fromPlace = CacheEntity.Places.FirstOrDefault(x => x.Id == hTask.ToPlaceId); toPlace = CacheEntity.Places.FirstOrDefault(x => x.PlaceTypeName == EInstorgNextNode.gate15.ToString()); nextnode = (int)EInstorgNextNode.stacker; break; case (int)EInstorgNextNode.stacker: fromPlace = CacheEntity.Places.FirstOrDefault(x => x.Id == hTask.ToPlaceId); toPlace = CacheEntity.Places.FirstOrDefault(x => x.Id == hTask.TargetPlaceId); nextnode = (int)EInstorgNextNode.none; ishandel = (int)EYesOrNo.是; break; } NextTaskContainer.PartTask = new PartTaskEntity { Type = type, MainTaskId = hTask.MainTaskId, MainTaskType = hTask.MainTaskType, TaskNo = hTask.TaskNo, SysCode = hTask.SysCode, ExecutionSequence = 2, SourcePlace = fromPlace.Code, SourcePlaceId = fromPlace.Id, SourcePosx = (int)fromPlace.Row, SourcePosy = (int)fromPlace.Layer, SourcePosz = (int)fromPlace.Col, ToPlace = toPlace.Code, ToPlaceId = toPlace.Id, ToPosx = (int)toPlace.Row, ToPosy = (int)toPlace.Layer, ToPosz = (int)toPlace.Col, Status = (int)EPartTaskStatus.未开始, CreateTime = DateTime.Now, UpdateTime = DateTime.Now, EquipId = equment.Id, EquipName = equment.EquipName, TaskProcessStatus = (int)ESrmState.未知, VoidLabel = (int)EYesOrNo.否, Priority = 100, IsMoveTask = (int)EYesOrNo.否, ProcessCardNumber = hTask.ProcessCardNumber, PackageNo = hTask.PackageNo, MaterialCode = hTask.MaterialCode, TargetPlaceId = hTask.TargetPlaceId, Quantity = hTask.Quantity, NextNode=nextnode, IsHandled=ishandel, IsLots=hTask.IsLots }; LogTextHelper.WriteLine(Resources.LogDir + @"/处理任务流程", "处理输送机任务:{0}", NextTaskContainer.PartTask.TaskNo); } catch (Exception ex) { ResultContainer.Msg = ex.Message; LogTextHelper.WriteLine(Resources.LogDir + @"/处理任务流程", "处理输送机任务:{0}", ex.Message); LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message); } } } }