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);
// }
// }
//}
}