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 PartTaskContainer DecompositionTaskContainer; /// /// 需要执行任务的Rgv /// private ChaiDieEntity Chaidie; /// /// 构造函数 /// /// 任务容器 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); int tdevid = (int)((EDeviceId)task.eqid); var cd = CacheEntity.ChaiDies.FirstOrDefault(x => x.DeviceId == tdevid); Chaidie = cd; string msg = ""; var flag = Chaidie.SendTask(Chaidie.DeviceId, out msg); if (!flag) { flag = Chaidie.SendTask(Chaidie.DeviceId, out msg); } if (flag) { 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; dbModel.SaveChanges(); LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "发送拆叠机任务:{0},{1}", task.id, flag); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "发送拆叠机任务:{0},{1}", task.id, flag); return; } if (nextHandler != null) { nextHandler.Handle(); } } catch (Exception ex) { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "发送拆叠机任务:{0}", ex.Message); LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message); } } } } }