using iWareSda_QQJF.RGV.RgvService; using iWareSda_QQJF.SRM.SrmService; using iWareSda_QQJF.SRMTRAN.SrmTranService; using iWareSda_QQJF.WCS.EDM; using iWareSda_QQJF.WEBAPI; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace iWareSda_QQJF.WCS { //public class WCS //{ // static int centerEastId = 52;//中转台设备号 // static int centerWestId = 17; // public static int safeLength = 1900 + 1900 + 1000 + 750;//RGV安全距离(RGV1长度一半+RGV2长度一半+安全距离+额外多算点) // static int AgvLength = 1900;//RGV安全距离 // static Thread SendTranTaskThread; // static Thread SendRgvTaskThread; // static Thread SendSrmTaskThread; // //static Thread TranTaskFinishThread; // static Thread RgvTaskFinishThread; // static Thread SrmTaskFinishThread; // //static Thread ReturnThread; // static Thread ReadMainTaskThread; // static Thread ReadRgvPLCThread1; // static Thread ReadRgvPLCThread2; // static Thread ReadRgvPLCThread3; // static Thread ReadRgvPLCThread4; // static Thread ReadSrmPLCThread1; // static Thread ReadSrmPLCThread2; // static Thread ReadSrmPLCThread3; // static Thread ReadSrmPLCThread4; // static Thread ReadSrmPLCThread5; // static Thread ReadSrmPLCThread6; // static Thread ReadSrmPLCThread7; // static Thread ReadSrmPLCThread8; // static Thread ReadSrmPLCThread9; // static Thread ReadTranThread; // //static Thread ReadERPItemThread; // //static Thread ReadERPTaskThread; // //static Thread SaveDirectionThread; // public static void init() // { // ReadRgvPLCThread1 = new Thread(new ParameterizedThreadStart(ReadRgvPLC)); // ReadRgvPLCThread2 = new Thread(new ParameterizedThreadStart(ReadRgvPLC)); // ReadRgvPLCThread3 = new Thread(new ParameterizedThreadStart(ReadRgvPLC)); // ReadRgvPLCThread4 = new Thread(new ParameterizedThreadStart(ReadRgvPLC)); // ReadRgvPLCThread1.Start(1); // ReadRgvPLCThread2.Start(2); // ReadRgvPLCThread3.Start(3); // ReadRgvPLCThread4.Start(4); // ReadSrmPLCThread1 = new Thread(new ParameterizedThreadStart(ReadSrmPLC)); // ReadSrmPLCThread2 = new Thread(new ParameterizedThreadStart(ReadSrmPLC)); // ReadSrmPLCThread3 = new Thread(new ParameterizedThreadStart(ReadSrmPLC)); // ReadSrmPLCThread4 = new Thread(new ParameterizedThreadStart(ReadSrmPLC)); // ReadSrmPLCThread5 = new Thread(new ParameterizedThreadStart(ReadSrmPLC)); // ReadSrmPLCThread6 = new Thread(new ParameterizedThreadStart(ReadSrmPLC)); // ReadSrmPLCThread7 = new Thread(new ParameterizedThreadStart(ReadSrmPLC)); // ReadSrmPLCThread8 = new Thread(new ParameterizedThreadStart(ReadSrmPLC)); // ReadSrmPLCThread9 = new Thread(new ParameterizedThreadStart(ReadSrmPLC)); // ReadSrmPLCThread1.Start(1); // ReadSrmPLCThread2.Start(2); // ReadSrmPLCThread3.Start(3); // ReadSrmPLCThread4.Start(4); // ReadSrmPLCThread5.Start(5); // ReadSrmPLCThread6.Start(6); // ReadSrmPLCThread7.Start(7); // ReadSrmPLCThread8.Start(8); // ReadSrmPLCThread9.Start(9); // ReadTranThread = new Thread(ReadTranPLC); // ReadTranThread.Start(); // //等待信号读取线程开启且读到信号 // Thread.Sleep(5000); // SendTranTaskThread = new Thread(SendTranTask); // //SendTranTaskThread.Start(); // SendRgvTaskThread = new Thread(SendRgvTask); // //SendRgvTaskThread.Start(); // SendSrmTaskThread = new Thread(SendSrmTask); // //SendSrmTaskThread.Start(); // //TranTaskFinishThread = new Thread(TranTaskFinish); // //TranTaskFinishThread.Start(); // RgvTaskFinishThread = new Thread(RgvTaskFinish); // //RgvTaskFinishThread.Start(); // SrmTaskFinishThread = new Thread(SrmTaskFinish); // //SrmTaskFinishThread.Start(); // //ReturnThread = new Thread(Returnresult); // //ReturnThread.Start(); // ReadMainTaskThread = new Thread(ReadMainTask); // //ReadMainTaskThread.Start(); // ////ERP接口线程 // //初始化指针 // //using (Model edm = new Model()) // //{ // // OracleWord.oldidOfItem = long.Parse(edm.KEYVALUE.FirstOrDefault(x => x.NAME == "oldidOfItem").VALUE.ToString()); // // OracleWord.oldidOfKanban = long.Parse(edm.KEYVALUE.FirstOrDefault(x => x.NAME == "oldidOfKanban").VALUE.ToString()); // //} // //ReadERPItemThread = new Thread(ReadERPItem); // //ReadERPItemThread.Start(); // //ReadERPTaskThread = new Thread(ReadERPTask); // //ReadERPTaskThread.Start(); // //SaveDirectionThread = new Thread(SaveDirection); // //SaveDirectionThread.Start(); // } // /// // /// 定时存储指针线程 // /// // public static void SaveDirection() // { // while (true) // { // //记录ERP指针 // using (Model edm = new Model()) // { // KEYVALUE oldidOfItemkv = edm.KEYVALUE.FirstOrDefault(x => x.NAME == "oldidOfItem"); // oldidOfItemkv.VALUE = int.Parse(OracleWord.oldidOfItem.ToString()); // KEYVALUE oldidOfKanbankv = edm.KEYVALUE.FirstOrDefault(x => x.NAME == "oldidOfKanban"); // oldidOfKanbankv.VALUE = int.Parse(OracleWord.oldidOfKanban.ToString()); // if (edm.SaveChanges() == 0) // { // edm.SaveChanges(); // } // } // Thread.Sleep(1000 * 60 * 60); // } // } // /// // /// 关闭此类 // /// // public static void Close() // { // try // { // //记录ERP指针 // using (Model edm = new Model()) // { // KEYVALUE oldidOfItemkv = edm.KEYVALUE.FirstOrDefault(x => x.NAME == "oldidOfItem"); // oldidOfItemkv.VALUE = int.Parse(OracleWord.oldidOfItem.ToString()); // KEYVALUE oldidOfKanbankv = edm.KEYVALUE.FirstOrDefault(x => x.NAME == "oldidOfKanban"); // oldidOfKanbankv.VALUE = int.Parse(OracleWord.oldidOfKanban.ToString()); // if (edm.SaveChanges() == 0) // { // edm.SaveChanges(); // } // } // } // catch // { // } // //SendTranTaskThread.Abort(); // //SendRgvTaskThread.Abort(); // //SendSrmTaskThread.Abort(); // ////TranTaskFinishThread.Abort(); // //RgvTaskFinishThread.Abort(); // //SrmTaskFinishThread.Abort(); // ////ReturnThread.Abort(); // //ReadMainTaskThread.Abort(); // //ReadRgvPLCThread1.Abort(); // //ReadRgvPLCThread2.Abort(); // //ReadRgvPLCThread3.Abort(); // //ReadRgvPLCThread4.Abort(); // //ReadSrmPLCThread1.Abort(); // //ReadSrmPLCThread2.Abort(); // //ReadSrmPLCThread3.Abort(); // //ReadSrmPLCThread4.Abort(); // //ReadSrmPLCThread5.Abort(); // //ReadSrmPLCThread6.Abort(); // //ReadSrmPLCThread7.Abort(); // //ReadSrmPLCThread8.Abort(); // //ReadSrmPLCThread9.Abort(); // //ReadTranThread.Abort(); // //ReadERPTaskThread.Abort(); // ////ReadERPItemThread.Abort(); // //SaveDirectionThread.Abort(); // } // /// // /// 循环读取ERP零件信息 // /// // public static void ReadERPItem() // { // while (true) // { // //Thread.Sleep(10); // //OracleWord.oldidOfItem++; // //Thread st = new Thread(OracleWord.SearchItem); // //st.Start(); // OracleWord.SearchItem(); // } // } // /// // /// 循环读取ERP出库单信息 // /// // public static void ReadERPTask() // { // while (true) // { // //Thread.Sleep(1000); // OracleWord.SearchTask(); // } // } // /// // /// 循环输送线心跳 // /// // public static void ReadTranPLC() // { // SrmTranService srv = new SrmTranService(); // while (true) // { // try // { // Thread.Sleep(1000); // srv.GetHeart(); // } // catch // { // } // } // } // /// // /// 循环更新RGV数据 // /// // public static void ReadRgvPLC(object id) // { // RgvService srv = new RgvService(); // while (true) // { // try // { // Thread.Sleep(300); // srv.ReadPlc(Convert.ToInt32(id)); // } // catch // { // } // } // } // /// // /// 循环更新堆垛机数据 // /// // public static void ReadSrmPLC(object id) // { // SrmService srv = new SrmService(); // while (true) // { // try // { // Thread.Sleep(300); // srv.ReadPlc(Convert.ToInt32(id)); // } // catch // { // } // } // } // /// // /// 下发输送线线程 // /// // public static void SendTranTask() // { // SrmTranService srmService = new SrmTranService(); // while (true) // { // using (Model edm = new Model()) // { // //读取数据库输送线任务 // List tranTask = edm.TranTask.Where(x => x.ISRELEASED == 0).ToList(); // foreach (var task in tranTask) // { // //判断设备可行性 // if (srmService.TranReady(task.SOURCEPLACE) && srmService.TranReady(task.TOPLACE)) // { // //下发任务 // if (srmService.SendGoodsType(task.SOURCEPLACE, task.PALLETTYPE ?? 0)) // { // if (srmService.SendGoodsReady(task.SOURCEPLACE, task.TOPLACE, (task.ID % 32767) + 1,(task.FASTHERTASKID%32767)+1)==1) // { // WZ.Useful.Commons.LogTextHelper.WriteLine("输送线任务下发成功", "任务号:" + task.ID.ToString(), "主任务号:" + task.FASTHERTASKID.ToString()); // //修改数据 // task.ISRELEASED = 1; // task.HASFINISHED = 1; // edm.SaveChanges(); // Thread.Sleep(5000); // break; // } // else // { // WZ.Useful.Commons.LogTextHelper.WriteLine("输送线任务下发失败", "任务号:" + task.ID.ToString(), ""); // Thread.Sleep(1000); // break; // } // } // else // { // WZ.Useful.Commons.LogTextHelper.WriteLine("输送线规格下发失败", "任务号:" + task.ID.ToString(), ""); // Thread.Sleep(1000); // break; // } // } // } // } // Thread.Sleep(1000); // } // } // /// // /// 下发RGV任务 // /// // public static void SendRgvTask() // { // RgvService rgvService = new RgvService(); // SrmTranService tranService=new SrmTranService(); // while (true) // { // //读取数据库RGV任务 // using (Model edm = new Model()) // { // //RgvTask rgvTask = edm.RgvTask.FirstOrDefault(x => x.ISRELEASED == 0); // for (int i = 1; i < 5; i++) // { // //判断设备可行性 // if (rgvService.IsRgvReady(i)) // { // RgvTask rgvTask = edm.RgvTask.FirstOrDefault(x => x.ISRELEASED == 0 && x.USERGVID==i); // if (rgvTask == null) // { // continue; // } // RgvTask preTask = edm.RgvTask.FirstOrDefault(x => x.ID == rgvTask.PRETASK); // if (preTask != null && preTask.HASFINISHED != 1)//前置任务存在且未完成(前置任务字段现在可能没用,待考证) // { // continue; // } // if (rgvTask.TASKTYPE == 1)//搬运任务时 // { // TranLock centerTo = edm.TranLock.FirstOrDefault(x => x.TRANID == rgvTask.TOPLACE); // TranLock centerSource = edm.TranLock.FirstOrDefault(x => x.TRANID == rgvTask.SOURCEPLACE); // if (tranService.GetSrmConveyorStationHasGoods(rgvTask.TOPLACE) == 0) // { // continue; // } // if ((tranService.GetSrmConveyorStationHasGoods(rgvTask.TOPLACE) == 1 || centerTo.ISFULL == 1) && (rgvTask.TOPLACE == 17 || rgvTask.TOPLACE == 52))//避免重复放至中转台(任务目标库位有货则暂时不放) // { // continue; // } // if ((tranService.GetSrmConveyorStationHasGoods(rgvTask.SOURCEPLACE) == 2 || centerSource.ISFULL == 0) && (rgvTask.SOURCEPLACE == 17 || rgvTask.SOURCEPLACE == 52))//(取货时目标没货则暂不执行,仅限中转台) // { // continue; // } // } // //判断是否干涉 // if (!Helper.IsTouch(rgvTask.SOURCEPLACE, rgvTask.USERGVID) && !Helper.IsTouch(rgvTask.TOPLACE, rgvTask.USERGVID))//设备不干涉下 // { // //下发任务 // if (rgvService.SendRgvTask(rgvTask.USERGVID, (rgvTask.ID % 32767)+1, rgvTask.SOURCEPLACE, rgvTask.TOPLACE, rgvTask.TASKTYPE, rgvTask.MainTask.PALLETTYPE ?? 0,(rgvTask.FASTHERTASKID%32767)+1) == 1) // { // //修改数据 // rgvTask.ISRELEASED = 1; // if (edm.SaveChanges() > 0) // { // } // //输送线锁定 // int sourceLocal = edm.TranLock.FirstOrDefault(x => x.TRANID == rgvTask.SOURCEPLACE).LOCAL; // int toLocal = edm.TranLock.FirstOrDefault(x => x.TRANID == rgvTask.TOPLACE).LOCAL; // if (rgvTask.USERGVID == 2 || rgvTask.USERGVID == 4) // { // sourceLocal = sourceLocal + safeLength; // toLocal = toLocal + safeLength; // } // else // { // sourceLocal = sourceLocal - safeLength; // toLocal = toLocal - safeLength; // } // //锁定单侧 // if (Helper.LockTran(rgvTask.USERGVID, sourceLocal, toLocal)) // { // } // Thread.Sleep(5000); // } // } // } // } // } // Thread.Sleep(1000); // } // } // /// // /// 下发堆垛机任务 // /// // public static void SendSrmTask() // { // SrmService srmService = new SrmService(); // while (true) // { // using (Model edm = new Model()) // { // for (int i = 1; i < 10; i++) // { // //判断设备可行性 // if (srmService.IsReady(i)) // { // //读取数据库堆垛机任务 // SrmTask task = edm.SrmTask.FirstOrDefault(x => x.ISRELEASED == 0 && x.USESRMID == i); // if (task == null) // { // continue; // } // //下发任务 // if (srmService.SendSrmTask(i, (task.ID % 32767)+1, task.SOURCEPLACE, task.TOPLACE, task.PALLETTYPE ?? 0, (task.FASTHERTASKID % 32767)+1) == 1) // { // //修改数据 // task.ISRELEASED = 1; // if (edm.SaveChanges()>0) // { // Thread.Sleep(6000); // } // else // { // Thread.Sleep(1000); // edm.SaveChanges(); // } // } // } // } // } // Thread.Sleep(1000); // } // } // /// // /// 输送线任务完成(超高检测) // /// // public static void TranTaskFinish() // { // SrmTranService srmtranService = new SrmTranService(); // while (true) // { // List intList = new List { 47, 48, 61, 65, 32, 15 };//各个出入库口号 // foreach (var tranid in intList) // { // //读取完成信号 // if (srmtranService.IsPassed(tranid) == 1)//检测有误则记录 // { // ////查找对应数据库 // //using (Model edm = new Model()) // //{ // // int taskid = srmtranService.FinishTask(tranid); // // TranTask task = edm.TranTask.OrderByDescending(x=>x.ID).FirstOrDefault(x => (x.ID % 32767)+1 == taskid); // // //修改数据 // // task.MainTask.ERRORDEVICEID = tranid; // // task.MainTask.ERRORMSG = 2; // // task.MainTask.ISERROR = 1; // // //反馈WMS同时删除对应子任务 // // edm.SaveChanges(); // // Thread.Sleep(1000); // //} // } // } // Thread.Sleep(1000); // } // } // /// // /// RGV任务完成 // /// // public static void RgvTaskFinish() // { // RgvService rgvService = new RgvService(); // while (true) // { // //读取完成信号 // for (int i = 1; i < 5; i++) // { // if (rgvService.IsTaskFinish(i)) // { // int taskId = rgvService.FinishTask(i); // using (Model edm = new Model()) // { // //输送线更新锁定 // long local = rgvService.GetRgvPosation(i); // if (i == 1 | i == 3)//北侧安全,当前坐标需要额外减 // { // local = local - safeLength + AgvLength;//(当前坐标-AGV宽度一半=当前中心坐标)+安全距离 // } // else//南侧安全,当前坐标需要额外加 // { // local = local + safeLength - AgvLength; // } // //查找对应数据库 // RgvTask task = edm.RgvTask.OrderByDescending(x=>x.ID).FirstOrDefault(x => (x.ID % 32767)+1 == taskId); // //修改数据 // if (task != null) // { // //去中转台占用中转台 // if (task.TASKTYPE == 1) // { // if (task.TOPLACE == 17 || task.TOPLACE == 52) // { // TranLock t = edm.TranLock.FirstOrDefault(x => x.TRANID == task.TOPLACE); // t.ISFULL = 1; // } // else if (task.SOURCEPLACE == 17 || task.SOURCEPLACE == 52) // { // TranLock t = edm.TranLock.FirstOrDefault(x => x.TRANID == task.SOURCEPLACE); // t.ISFULL = 0; // } // } // //锁定单侧 // if (Helper.LockTran(i, local, local)) // { // task.HASFINISHED = 1; // //反馈mainTask // RgvTask nextTask = edm.RgvTask.FirstOrDefault(x=>x.PreRgvTask.ID==task.ID); // if (task.MainTask.TASKTYPE == 2 && nextTask==null) // { // task.MainTask.HASFINISHED = 1; // } // //任务完成复位完成信号 // if (edm.SaveChanges() > 0) // { // rgvService.SendRgvFinishConfirm(i); // } // } // } // else // { // WZ.Useful.Commons.LogTextHelper.WriteLine("任务完成触发,任务号" + taskId + "未找到,RGV:" + i + "时间:" + DateTime.Now, "", ""); // //rgvService.SendRgvFinishConfirm(i); // } // } // } // } // Thread.Sleep(1000); // } // } // /// // /// 堆垛机任务完成 // /// // public static void SrmTaskFinish() // { // SrmService srmService = new SrmService(); // while (true) // { // using (Model edm = new Model()) // { // //读取完成信号 // for (int i = 0; i < 10; i++) // { // if (srmService.IsTaskFinish(i) == 1) // { // int taskId = srmService.FinishTask(i); // //查找对应数据库 // SrmTask task = edm.SrmTask.OrderByDescending(x=>x.ID).FirstOrDefault(x => (x.ID % 32767)+1 == taskId); // if (task == null)//任务号有误,先复位,然后继续运行 // { // //logtxtWrite.logtxt.txtWrite("任务完成触发,任务号"+taskId+"未找到,堆垛机:"+i+"时间:"+DateTime.Now,0); // WZ.Useful.Commons.LogTextHelper.WriteLine("任务完成触发,任务号" + taskId + "未找到,堆垛机:" + i + "时间:" + DateTime.Now, "", ""); // //srmService.SendSrmTaskFinishConfirm(i); // continue; // } // //修改数据 // task.HASFINISHED = 1; // //反馈mainTask // if (task.MainTask.TASKTYPE == 1 || task.MainTask.TASKTYPE == 3) // { // task.MainTask.HASFINISHED = 1; // } // //任务完成复位完成信号 // if (edm.SaveChanges() > 0) // { // srmService.SendSrmTaskFinishConfirm(i); // } // } // } // } // Thread.Sleep(1000); // } // } // /// // /// 反馈任务结果 // /// // public static void Returnresult() // { // while (true) // { // using (Model edm = new Model()) // { // //获取完成且未推送的任务 // MainTask maintask = edm.MainTask.FirstOrDefault(x => x.HASPUSHED == 0 && x.HASFINISHED == 1); // } // Thread.Sleep(1000); // } // } // /// // /// 解析主任务 // /// // public static void ReadMainTask() // { // while (true) // { // try // { // //读取数据库主任务任务 // using (Model edm = new Model()) // { // MainTask mainTask = edm.MainTask.FirstOrDefault(x => x.HASREADED == 0); // if (mainTask != null) // { // //堆垛机任务 // SrmTask srmTask = new SrmTask(); // srmTask.MainTask = mainTask; // srmTask.HASFINISHED = 0; // srmTask.ISRELEASED = 0; // srmTask.PALLETTYPE = mainTask.PALLETTYPE; // if (mainTask.TASKTYPE == 1)//入库 // { // srmTask.USESRMID = int.Parse(mainTask.TOPLACE.Substring(0, 1)); // srmTask.SOURCEPLACE = Helper.GetSrmEnter(srmTask.USESRMID, mainTask.TASKTYPE, Helper.GetIsEast(int.Parse(mainTask.SOURCEPLACE))); // srmTask.TOPLACE = mainTask.TOPLACE.Substring(2, 8); // } // else if (mainTask.TASKTYPE == 2)//出库 // { // srmTask.USESRMID = int.Parse(mainTask.SOURCEPLACE.Substring(0, 1)); // srmTask.SOURCEPLACE = mainTask.SOURCEPLACE.Substring(2, 8); // srmTask.TOPLACE = Helper.GetSrmEnter(srmTask.USESRMID, mainTask.TASKTYPE, Helper.GetIsEast(int.Parse(mainTask.TOPLACE))); // } // else if (mainTask.TASKTYPE == 3)//移库 // { // srmTask.USESRMID = int.Parse(mainTask.TOPLACE.Substring(0, 1)); // srmTask.SOURCEPLACE = mainTask.SOURCEPLACE.Substring(2, 8); // srmTask.TOPLACE = mainTask.TOPLACE.Substring(2, 8); // } // edm.SrmTask.Add(srmTask); // if (mainTask.TASKTYPE != 3)//移库时只需动堆垛机 // { // int tranid = 0;//记录输送线出入库口 // if (mainTask.TASKTYPE == 1) // { // tranid = int.Parse(mainTask.SOURCEPLACE); // } // else if (mainTask.TASKTYPE == 2) // { // tranid = int.Parse(mainTask.TOPLACE); // } // if (mainTask.TASKTYPE == 1) // { // //输送线任务 // TranTask tranTask = new TranTask(); // tranTask.MainTask = mainTask; // tranTask.ISRELEASED = 0; // tranTask.HASFINISHED = 0; // tranTask.LENGTH = mainTask.LENGTH; // tranTask.WIDTH = mainTask.WIDTH; // tranTask.HEIGHT = mainTask.HEIGHT; // tranTask.PALLETTYPE = mainTask.PALLETTYPE; // //if (mainTask.TASKTYPE == 1) // //{ // tranTask.SOURCEPLACE = int.Parse(mainTask.SOURCEPLACE); // tranTask.TOPLACE = Helper.GetNextTran(tranTask.SOURCEPLACE); // //tranid = tranTask.SOURCEPLACE; // //} // //else if (mainTask.TASKTYPE == 2) // //{ // // tranTask.TOPLACE = int.Parse(mainTask.TOPLACE); // // tranTask.SOURCEPLACE = Helper.GetNextTran(tranTask.TOPLACE); // // tranid = tranTask.TOPLACE; // //} // edm.TranTask.Add(tranTask); // } // //RGV任务 // int srmTranid = Helper.GetTranEnter(srmTask.USESRMID, mainTask.TASKTYPE, Helper.GetIsEast(tranid)); // int enterTranId = Helper.GetNextTran(tranid); // //判断是否需中转 // int useRgv = 0; // if (Helper.NeedTwoRgv(srmTask.USESRMID, tranid, mainTask.TASKTYPE)) // { // int centerId = 0; // //定义东西中转台ID // if (Helper.GetIsEast(tranid)) // { // centerId = centerEastId; // } // else // { // centerId = centerWestId; // } // //if (mainTask.TASKTYPE == 1) // //{ // // //创建三条RGV任务 // // RgvTask preTask = null; // // bool result1 = Helper.AddRGVTask(edm, mainTask, enterTranId, centerId, 1, preTask, out useRgv, out preTask);//去中转台 // // //int safeTran = Helper.GetSafeTranId(useRgv); // // //bool result2 = Helper.AddRGVTask(edm, mainTask, centerId, safeTran, 2, preTaskId, out useRgv, out preTaskId);//离开干涉 // // bool result3 = Helper.AddRGVTask(edm, mainTask, centerId, srmTranid, 1, preTask, out useRgv, out preTask);//拿中转台 // // if (!result1 || !result3) // // { // // //设备故障,不生成任务并反馈(通常不会,之前判断两RGV都是好的才会中转) // // Helper.SetTaskOver(mainTask, useRgv); // // continue; // // } // //} // //else // //{ // // //创建三条RGV任务 // // RgvTask preTask = null; // // bool result1 = Helper.AddRGVTask(edm, mainTask, srmTranid, centerId, 1, preTask, out useRgv, out preTask);//去中转台 // // //int safeTran = Helper.GetSafeTranId(useRgv); // // //bool result2 = Helper.AddRGVTask(edm, mainTask, centerId, safeTran, 2, preTaskId, out useRgv, out preTaskId);//离开干涉 // // bool result3 = Helper.AddRGVTask(edm, mainTask, centerId, enterTranId, 1, preTask, out useRgv, out preTask);//拿中转台 // // if (!result1 || !result3) // // { // // //设备故障,不生成任务并反馈(通常不会,之前判断两RGV都是好的才会中转) // // Helper.SetTaskOver(mainTask, useRgv); // // continue; // // } // //} // } // else // { // RgvTask preTask = null; // //if (mainTask.TASKTYPE == 1) // //{ // // if (!Helper.AddRGVTask(edm, mainTask, enterTranId, srmTranid, 1, preTask, out useRgv, out preTask)) // // { // // //设备故障,不生成任务并反馈 // // Helper.SetTaskOver(mainTask, useRgv); // // continue; // // } // //} // //else // //{ // // if (!Helper.AddRGVTask(edm, mainTask, srmTranid, enterTranId, 1, preTask, out useRgv, out preTask)) // // { // // //设备故障,不生成任务并反馈 // // Helper.SetTaskOver(mainTask, useRgv); // // continue; // // } // //} // } // } // //置位解析完成 // mainTask.HASREADED = 1; // edm.SaveChanges(); // } // } // } // catch // { // } // Thread.Sleep(1000); // } // } //} }