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; using System.Threading.Tasks; namespace IWareCC.Conveyor.Handle.FinishConveyorTaskAuto { public class 等待输送线完成任务 : IHandler { /// /// 该节点的下一个节点 /// private IHandler nextHandler = null; public IHandler NextHandler { set { nextHandler = value; } } private ConveyorEntity Conveyor; /// /// 任务容器 /// private PartTaskContainer DecompositionTaskContainer; public 等待输送线完成任务(PartTaskContainer decompositionTaskContainer) { this.DecompositionTaskContainer = decompositionTaskContainer; } public void Handle() { using (var dbModel = new DbModel()) { try { string toname = ""; if (DecompositionTaskContainer.DecompositionTask.sourceplace == "1008" || DecompositionTaskContainer.DecompositionTask.sourceplace == "1003" || DecompositionTaskContainer.DecompositionTask.sourceplace == "1001") { toname = "Line" + DecompositionTaskContainer.DecompositionTask.sourceplace; } else { if (DecompositionTaskContainer.DecompositionTask.toplace == "1011" || DecompositionTaskContainer.DecompositionTask.toplace == "1005")//此两处要判断的是后一位的位置的光电信号 { toname = "Line" + (int.Parse(DecompositionTaskContainer.DecompositionTask.toplace) + 1).ToString(); } else { toname = "Line" + DecompositionTaskContainer.DecompositionTask.toplace; } } var TConveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == toname); if (TConveyor != null) { Conveyor = TConveyor; } else { return; } bool flag1 = false; if ((DecompositionTaskContainer.DecompositionTask.toplace == DecompositionTaskContainer.DecompositionTask.sourceplace) || (DecompositionTaskContainer.DecompositionTask.toplace == "1007" && DecompositionTaskContainer.DecompositionTask.sourceplace == "1008") || (DecompositionTaskContainer.DecompositionTask.toplace == "1002" && DecompositionTaskContainer.DecompositionTask.sourceplace == "1003")) { flag1 = true; } else { if (Conveyor != null && (Conveyor.RPh1 == 1 && Conveyor.RPh2 == 1))//传感器已检测到有小托盘 { flag1 = true; } LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:获取到光电1{0},光电2{2}", Conveyor.RPh1, Conveyor.RPh2); } if (!flag1) { LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:{0}", "发送OPC失败"); string msg = String.Format("未检测到广电到位,获取到光电1{0},光电2{2}", Conveyor.RPh1, Conveyor.RPh2); if (DecompositionTaskContainer.DecompositionTask.filereason != msg) { DecompositionTaskContainer.DecompositionTask.filereason = msg; dbModel.SaveChanges(); } return; } ///测试任务号是否匹配 if (TConveyor.ConveyorName != "Line1003" && TConveyor.ConveyorName != "Line1008") { if (Conveyor.RTaskNo != int.Parse(DecompositionTaskContainer.DecompositionTask.taskcode)) { LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务WCSId={0},STAKERID={1}:{2}", DecompositionTaskContainer.DecompositionTask.taskcode, Conveyor.RTaskNo, "任务号不匹配"); string msg = String.Format("任务号不一致:发送任务号{0},收到任务号{2}", DecompositionTaskContainer.DecompositionTask.taskcode, Conveyor.RTaskNo); if (DecompositionTaskContainer.DecompositionTask.filereason != msg) { DecompositionTaskContainer.DecompositionTask.filereason = msg; dbModel.SaveChanges(); } return; } } LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:{0},收到任务号:{1},本任务号:{2}", "任务已完成", Conveyor.RTaskNo, DecompositionTaskContainer.DecompositionTask.taskcode); if (Conveyor.ConveyorName == "Line1027" || Conveyor.ConveyorName == "Line1022") { if (Conveyor.RHeight != 0) { DecompositionTaskContainer.DecompositionTask.heighttype = Conveyor.RHeight; LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:获取获取高度{0}", Conveyor.RHeight); } else { LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:获取获取高度不正确{0}", Conveyor.ConveyorType); string msg = String.Format("高度检测未反馈正确值:收到高度{0}", Conveyor.RHeight); if (DecompositionTaskContainer.DecompositionTask.filereason != msg) { DecompositionTaskContainer.DecompositionTask.filereason = msg; dbModel.SaveChanges(); } return; } } if (nextHandler != null) { nextHandler.Handle(); } } catch (Exception ex) { LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message); } } } } }