using IWareCC.CacheInfo; using IWareCC.CacheInfo.Container; using IWareCC.Conveyor.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.Conveyor.Handle.DoConveyorTaskAuto { public class 发送输送线任务 : IHandler { /// /// 该节点的下一个节点 /// private IHandler nextHandler = null; public IHandler NextHandler { set { nextHandler = value; } } /// /// 任务容器 /// private PartTaskContainer DecompositionTaskContainer; /// /// 需要执行任务的Rgv /// private ConveyorEntity Conveyor; /// /// 构造函数 /// /// 任务容器 public 发送输送线任务( PartTaskContainer decompositionTaskContainer) { this.DecompositionTaskContainer = decompositionTaskContainer; } public void Handle() { using (var dbModel = new DbModel()) { try { var task = DecompositionTaskContainer.DecompositionTask; var dTask = dbModel.PartTasks.FirstOrDefault(x => x.id == task.id); string name = "Line" + dTask.sourceplace; var conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == name); Conveyor = conveyor; string msg = ""; var flag = Conveyor.SendTask(Conveyor.DeviceId, int.Parse(task.taskcode), task.toplace,task.heighttype, out msg); bool bl = false; if (flag) { bl = Conveyor.WriteValue(Conveyor.OpcWriteItems.STP, 1); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行输送线任务流程/" + Conveyor.ConveyorName, "发送输送线任务:{0},失败", task.id); task.filereason = "任务发送失败!"; dbModel.SaveChanges(); return; } if (bl) { dTask.isreleased = (int)EYesOrNo.是; dTask.status = (int)EPartTaskStatus.执行中; dTask.issueTime = DateTime.Now;//下发时间 【EditBy shaocx,2022-09-18】 dTask.plcReceiveTime = DateTime.Now;//plc接收任务时间时间 【EditBy shaocx,2022-09-18】 dTask.iscurrent = (int)EYesOrNo.是; dTask.updatetime = DateTime.Now; dTask.filereason = ""; dbModel.SaveChanges(); LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行输送线任务流程/" + Conveyor.ConveyorName, "发送输送线任务:{0},{1}", task.id, flag); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行输送线任务流程/" + Conveyor.ConveyorName, "发送输送线任务:{0},{1}", task.id, flag); return; } if (nextHandler != null) { nextHandler.Handle(); } } catch (Exception ex) { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行输送线任务流程/" + Conveyor.ConveyorName, "发送输送线任务:{0}", ex.Message); LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message); } } } } }