using IWareCC.CacheInfo; using IWareCC.CacheInfo.Container; using IWareCC.ORM; using IWareCC.Properties; using IWareCC.SRM.Entity; 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.SRM.Handle.DoStackerTaskAuto { public class 发送堆垛机任务 : IHandler { /// /// 该节点的下一个节点 /// private IHandler nextHandler = null; public IHandler NextHandler { set { nextHandler = value; } } /// /// 任务容器 /// private PartTaskContainer DecompositionTaskContainer; /// /// 需要执行任务的堆垛机 /// private SrmEntity Stacker; /// /// 构造函数 /// /// 结果容器 /// WIP任务容器 public 发送堆垛机任务(PartTaskContainer decompositionTaskContainer) { this.DecompositionTaskContainer = decompositionTaskContainer; } public void Handle() { using (var dbModel = new DbModel()) { try { var task = DecompositionTaskContainer.DecompositionTask; int tdevid = (int)((EDeviceId)task.eqid); var srm = CacheEntity.Srms.FirstOrDefault(x => x.DeviceId == tdevid); Stacker = srm; var dTask = dbModel.PartTasks.FirstOrDefault(x => x.id == task.id); string msg = ""; var flag = Stacker.SendTask(Stacker.DeviceId, int.Parse(task.taskcode), task.sourceplace, task.toplace, (int)task.type, task.containertype, task.heighttype, 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; dTask.filereason = ""; dbModel.SaveChanges(); LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行堆垛机任务流程/" + Stacker.SrmName, "发送堆垛机任务:{0},{1}", task.id, flag); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行堆垛机任务流程/" + Stacker.SrmName, "发送堆垛机任务:{0},{1}", task.id, flag); msg = "发送任务失败"; if (task.filereason != msg) { task.filereason = msg; dbModel.SaveChanges(); } return; } if (nextHandler != null) { nextHandler.Handle(); } } catch (Exception ex) { LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行堆垛机任务流程/" + Stacker.SrmName, "发送堆垛机任务:{0}", ex.Message); LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message); } } } } }