using IWareCC.CacheInfo; using IWareCC.CacheInfo.Container; using IWareCC.ChaiDie.Entity; using IWareCC.ORM; using IWareCC.Properties; using IWareCommon.Enum.Common; using IWareCommon.Help; using IWareCommon.Util; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IWareCC.ChaiDie.Handle.DoChaiDieTaskAuto { public class 选择一个未执行的拆叠机的任务 : IHandler { /// /// 该节点的下一个节点 /// private IHandler nextHandler = null; public IHandler NextHandler { set { nextHandler = value; } } private ChaiDieEntity Chaidie; /// /// 任务容器 /// private PartTaskContainer DecompositionTaskContainer; /// /// 构造函数 /// /// 结果容器 /// WIP任务容器 public 选择一个未执行的拆叠机的任务(PartTaskContainer decompositionTaskContainer) { this.DecompositionTaskContainer = decompositionTaskContainer; } public void Handle() { using (var dbModel = new DbModel()) { try { string msg; var task = dbModel.PartTasks.OrderBy(x => x.priority).ThenBy(x => x.updatetime).FirstOrDefault(x => x.eqtype == (int)EPartTaskType.拆叠机任务 && x.isreleased == (int)EYesOrNo.否 && x.isfinished == (int)EYesOrNo.否 ); if (task == null) { // LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/", "选择一个未执行的拆叠机的任务:{0}", "未找到相应的拆叠机任务"); return; } else { task.updatetime = DateTime.Now; dbModel.SaveChanges(); int tdevid = (int)((EDeviceId)task.eqid); var cd = CacheEntity.ChaiDies.FirstOrDefault(x => x.DeviceId == tdevid); Chaidie = cd; } if (Chaidie.ChaiDieName == "ChaiDei1" || Chaidie.ChaiDieName == "ChaiDei2") { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠盘机{0}不用执行任何任务", Chaidie.ChaiDieName); return; } if (Chaidie.ChaiDieName == "ChaiDei3") { string t2name = "Line1021"; var t2conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == t2name); if ((t2conveyor != null && (t2conveyor.RPh1 == 1 && t2conveyor.RPh2 == 1))) { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}输送位{1}有货,不可下发任务", Chaidie.ChaiDieName, t2conveyor.ConveyorName); return; } string t21name = "Line1022"; var t21conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == t21name); if ((t21conveyor != null && (t21conveyor.RPh1 == 1 && t21conveyor.RPh2 == 1))) { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}输送位{1}有货,不可下发任务", Chaidie.ChaiDieName, t2conveyor.ConveyorName); return; } var othertask = dbModel.PartTasks.OrderBy(x => x.priority).ThenBy(x => x.updatetime).FirstOrDefault(x => x.eqtype == (int)EPartTaskType.拆叠机任务 && x.isreleased == (int)EYesOrNo.是 && x.isfinished == (int)EYesOrNo.否&&x.eqid==Chaidie.DeviceId); if (othertask!=null) { return; } } else { string t2name = "Line1026"; var t2conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == t2name); if ((t2conveyor != null && (t2conveyor.RPh1 == 1 && t2conveyor.RPh2 == 1))) { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}输送位{1}有货,不可下发任务", Chaidie.ChaiDieName, t2conveyor.ConveyorName); return; } string t21name = "Line1027"; var t21conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == t21name); if ((t21conveyor != null && (t21conveyor.RPh1 == 1 && t21conveyor.RPh2 == 1))) { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}输送位{1}有货,不可下发任务", Chaidie.ChaiDieName, t21conveyor.ConveyorName); return; } var othertask = dbModel.PartTasks.OrderBy(x => x.priority).ThenBy(x => x.updatetime).FirstOrDefault(x => x.eqtype == (int)EPartTaskType.拆叠机任务 && x.isreleased == (int)EYesOrNo.是 && x.isfinished == (int)EYesOrNo.否 && x.eqid == Chaidie.DeviceId); if (othertask != null) { return; } } if (!Chaidie.CanSendTask(Chaidie.DeviceId, out msg)) { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}不能执行任务--{1}", Chaidie.ChaiDieName, msg); return; } DecompositionTaskContainer.DecompositionTask = task; LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:{0}", DecompositionTaskContainer.DecompositionTask.id); if (nextHandler != null) { nextHandler.Handle(); } } catch (Exception ex) { LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message); } } } } }