using System; using System.Collections.Generic; using System.Linq; using System.Text; using SqlSugar; using WCS.Data; using WCS.Data.Models; using WCS.Data.Utils; using WCS.PLC; namespace WCS.Workflow { public class WCS_ExtendedBLL : IWCS { public static readonly string Conv_1124 = "1124"; public static readonly string Conv_1092 = "1092";//4#车间 public static readonly string Conv_1099 = "1099";//5#车间 public static readonly string Conv_1504 = "1504";//6#车间 public static readonly string Conv_1518 = "1518";//7#车间 public static readonly string Conv_1112 = "1112"; public static readonly string Conv_1115 = "1115"; public static readonly string Conv_1107 = "1107"; public static readonly string Conv_1110 = "1110"; public static readonly string Conv_1114 = "1114"; public static readonly string Conv_1109 = "1109"; public static readonly string Conv_1102 = "1102"; public static readonly string Conv_1105 = "1105"; public static readonly string Conv_1104 = "1104"; public static readonly string Conv_1094 = "1094"; public static readonly string Conv_1098 = "1098"; public static readonly string Conv_1097 = "1097"; public readonly string Conv_1155 = "1155"; public readonly string Conv_1156 = "1156"; public readonly string Conv_1157 = "1157"; public readonly string Conv_1158 = "1158"; public readonly string conveyorplc = "conveyor02"; public readonly string pvc_6_Back = "Pvc_6_Back"; public readonly string pvc_7_Back = "Pvc_7_Back"; public void CoatingRoomTrafficControl(string equNo, string rgvUpPosNo = "", string barcode = "") { if (equNo.Contains("rgv")) { if (rgvUpPosNo == Conv_1092)//4号车间 { CheckUpTask_4_5(rgvUpPosNo, Conv_1097, Conv_1094, Conv_1098, equNo, "4"); } else if (rgvUpPosNo == Conv_1099)//5号车间 { CheckUpTask_4_5(rgvUpPosNo, Conv_1104, Conv_1102, Conv_1105, equNo, "5"); } else if (rgvUpPosNo == Conv_1504)//6号车间 { CheckUpTask_6_7(rgvUpPosNo, Conv_1107, Conv_1109, Conv_1110, equNo, "6", pvc_6_Back); } else if (rgvUpPosNo == Conv_1518)//7号车间 { CheckUpTask_6_7(rgvUpPosNo, Conv_1112, Conv_1114, Conv_1115, equNo, "7", pvc_7_Back); } else if (rgvUpPosNo == Conv_1155 || rgvUpPosNo == Conv_1156 || rgvUpPosNo == Conv_1157 || rgvUpPosNo == Conv_1158)//三楼包装出口 { var conv = ConveyorHelper.GetConveyorSignal(conveyorplc, rgvUpPosNo); if (conv.DB521_Tasknum > 0 || conv.CvDB51_PH_Status || conv.DB521_Request) { throw new Exception(string.Format("三楼包装区RGV[{0}]出口[{1}]存在托盘(任务号,光电信号,请求信号),不能出库到该位置。", equNo, rgvUpPosNo)); } if (SugarBase.DB.Queryable().Any(v => v.TASK_POSIDFROM == rgvUpPosNo && v.TASK_POSIDCUR == rgvUpPosNo)) { throw new Exception(string.Format("三楼包装区RGV[{0}]出口[{1}]存在入库任务,不能出库到该位置。", equNo, rgvUpPosNo)); } } } else { CheckIsExistOutTask(equNo, barcode); } } private void CheckUpTask_4_5(string upPosConvNo, string agvConvPosNo, string scanningConvNo, string cachePosNo, string rgvNo, string workshopNo) { //判断出口是否存在入库的任务 if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 1 && v.TASK_POSIDNEXT == upPosConvNo)) { throw new Exception(string.Format("车间[{0}]下料位置[{1}]存在入库任务,RGV[{2}]无法执行到该位置的出库任务", workshopNo, upPosConvNo, rgvNo)); } var conv = ConveyorHelper.GetConveyorSignal(conveyorplc, upPosConvNo); //判断下料点是否存在入库任务请求,光电和任务 if (conv.DB521_Request || conv.CvDB51_PH_Status || conv.DB521_Tasknum > 0) { throw new Exception(string.Format("车间[{0}]下料位置[{1}]存在电控信号(请求,光电,任务号),RGV[{2}]无法执行到该位置的出库任务", workshopNo, upPosConvNo, rgvNo)); } var conv_scann = ConveyorHelper.GetConveyorSignal(conveyorplc, scanningConvNo); //判断扫描位置是否存在光电信号 if (conv_scann.CvDB51_PH_Status || conv_scann.DB521_Request || conv_scann.DB521_Tasknum > 0) { throw new Exception(string.Format("车间[{0}]扫码位置[{1}]存在电控信号(请求,光电,任务号),RGV[{2}]无法执行出库任务", workshopNo, scanningConvNo, rgvNo)); } //判断是否存在原膜托盘的出库任务 var taskSet = SugarBase.DB.Queryable().Where(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == agvConvPosNo || v.TASK_POSIDNEXT == cachePosNo || v.TASK_POSIDNEXT == upPosConvNo)).ToList(); if (taskSet.Count >= 2 && taskSet.Any(v => v.TASK_BOXBARCODE.Substring(0, 3) == "TPC")) { string[] orderArr = new string[] { agvConvPosNo, scanningConvNo, cachePosNo, upPosConvNo }; taskSet = taskSet.OrderByDescending(e => { var index = 0; index = Array.IndexOf(orderArr, e.TASK_POSIDCUR); if (index != -1) { return index; } else { return int.MaxValue; } }).ToList(); //检测从二个开始任务列表中是否存在TPC托盘 for (int i = 1; i < taskSet.Count; i++) { if (taskSet[i].TASK_BOXBARCODE.Substring(0, 3) == "TPC") { throw new Exception(string.Format("到车间[{0}]出口[{1}]存在多个任务并且有原膜托盘任务,RGV[{2}]无法执行出库任务", workshopNo, agvConvPosNo, rgvNo)); } } } string Pvc_ = "Pvc_" + workshopNo; //判断是否存在AGV的入库任务 if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 1 && v.TASK_POSIDFROM.Contains(Pvc_) && (v.TASK_WKSTATUS == (int)WkStatus.任务已下发AGV || v.TASK_WKSTATUS == (int)WkStatus.AGV任务完成))) { if (taskSet.Count >= 1) { throw new Exception(string.Format("车间[{0}]出口[{1}]存在AGV入库任务,RGV[{2}]无法执行出库任务", workshopNo, agvConvPosNo, rgvNo)); } } //判断是否存在异常退回的任务 if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 6 && v.TASK_POSIDTO == agvConvPosNo)) { throw new Exception(string.Format("车间[{0}]出口[{1}]存在入库任务,RGV[{2}]无法执行出库任务", workshopNo, agvConvPosNo, rgvNo)); } } /// /// 检测出库位置状态 /// /// RGV下料点 /// agv对接工位 /// 扫描位置 /// 出库缓存位置或入库位置 /// private void CheckUpTask_6_7(string upPosConvNo, string requestagvPos, string scanningRequestPos, string onMatManualPos, string rgvNo, string workshopNo,string conv_back) { string plc_name = "conveyor02"; //查询Agv对接口输送线信息 var conv_agv = ConveyorHelper.GetConveyorSignal(plc_name, requestagvPos); if (conv_agv.DB521_Request || conv_agv.DB521_Goodsend == Convert.ToInt32(upPosConvNo)) { throw new Exception(string.Format("车间[{0}]出口[{1}]存在电控信号(请求,目标地址为RGV下料位置),RGV[{2}]无法执行到下料位置[{3}]的出库任务", workshopNo,requestagvPos, rgvNo, upPosConvNo)); } //查询扫码位置 var conv_scanning = ConveyorHelper.GetConveyorSignal(plc_name, scanningRequestPos); if (conv_scanning.DB521_Request || conv_scanning.DB521_Goodsend == Convert.ToInt32(upPosConvNo)) { throw new Exception(string.Format("车间[{0}]扫码入口[{1}]存在电控信号(请求,目标地址为RGV下料位置),RGV[{2}]无法执行到下料位置[{3}]的出库任务", workshopNo, scanningRequestPos, rgvNo, upPosConvNo)); } //判断出口是否存在入库的任务 if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 1 && (v.TASK_POSIDFROM == requestagvPos || v.TASK_POSIDFROM == scanningRequestPos || v.TASK_POSIDFROM == conv_back) && (v.TASK_WKSTATUS <= 1 || v.TASK_POSIDNEXT == upPosConvNo))) { throw new Exception(string.Format("车间[{0}]出口[{1}]扫码入口[{2}]存在入库任务,RGV[{3}]无法执行到下料位置[{4}]的出库任务", workshopNo, requestagvPos, scanningRequestPos, rgvNo, upPosConvNo)); } //判断是否存在原膜托盘的出库任务 var taskSet = SugarBase.DB.Queryable().Where(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == requestagvPos || v.TASK_POSIDNEXT == onMatManualPos || v.TASK_POSIDNEXT == upPosConvNo)).ToList(); if (taskSet.Count >= 2 && taskSet.Any(v => v.TASK_BOXBARCODE.Substring(0, 3) == "TPC")) { //var task_dtl = SugarBase.DB.Queryable().Where(v => taskSet.Any(t => t.TASK_NO == v.TASKNO)).OrderBy(v => v.EXECUTEDATE).First(); //if (taskSet.First(v => v.TASK_NO == task_dtl.TASKNO).TASK_BOXBARCODE.Substring(0, 3) == "TPC") //{ // return false; //} if (taskSet.Any(v => v.TASK_POSIDNEXT == onMatManualPos)) { throw new Exception(string.Format("车间[{0}]缓存位置[{1}]存在出库任务,RGV[{2}]无法执行到下料位置[{3}]的出库任务", workshopNo, onMatManualPos, rgvNo, upPosConvNo)); } } if (taskSet.Count == 1) { //查询人工上熟化架位置是否存在任务 var conv_Manual = ConveyorHelper.GetConveyorSignal(plc_name, onMatManualPos); if (conv_Manual.DB521_Tasknum > 0 && conv_Manual.DB521_Tasknum < 10000 || conv_Manual.DB521_Request) { throw new Exception(string.Format("车间[{0}]人工上料位置[{1}]存在电控信号(请求,任务号),RGV[{2}]无法执行出库任务", workshopNo, onMatManualPos, rgvNo)); } } } /// /// 检测是否存在出库任务 /// private void CheckIsExistOutTask(string convNo, string barcode = "") { if (convNo == Conv_1112)//7#AGV对接工位 { if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1518 || v.TASK_POSIDNEXT == Conv_1115 || v.TASK_POSIDNEXT == Conv_1112) && v.TASK_POSIDCUR != Conv_1115)) { throw new Exception(string.Format("车间[7]输送线[{0}]请求,存在出库任务,交通管制无法入库,请等待。", convNo)); } } else if (convNo == Conv_1107)//6#AGV对接工位 { if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1504 || v.TASK_POSIDNEXT == Conv_1110 || v.TASK_POSIDNEXT == Conv_1107) && v.TASK_POSIDCUR != Conv_1110)) { throw new Exception(string.Format("车间[6]输送线[{0}]请求,存在出库任务,交通管制无法入库,请等待。", convNo)); } } else if (convNo == Conv_1114)//7#扫描位置 { if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1518 || v.TASK_POSIDNEXT == Conv_1115 || v.TASK_POSIDNEXT == Conv_1112) && (v.TASK_POSIDCUR != Conv_1112))) { if (Current.TaskSet.Any(v => v.TASK_BOXBARCODE == barcode)) throw new Exception(string.Format("条码[{0}]存在任务,不能生成异常任务", barcode)); //生成退回异常任务 string msg = string.Format("车间[7]输送线[{0}]条码[{1}]无法入库,单通道存在出库任务。", convNo, barcode); //LogMessageHelper.RecordLogMessage(msg); string errormsg = TryCachHelper.TryTranExecute((db) => { BaseWorkflow.AddLedErrorMsg(db, Conv_1114, msg, 0); //wms任务异常需要生成退回托盘任务 var wcstask = new WCS_TASK(); wcstask.TASK_WMSNO = "wcs_" + DateTime.Now.ToString("yyyyMMddhhmmss"); wcstask.TASK_COMTYPE = (int)ComTypeEnum.托盘异常退回; wcstask.TASK_SYSTYPE = "WCS"; wcstask.TASK_POSIDFROM = Conv_1114;//起点地址 wcstask.TASK_POSIDCUR = Conv_1114; wcstask.TASK_POSIDNEXT = Conv_1114; wcstask.TASK_POSIDMOVE = ""; wcstask.TASK_PRIORITY = 1; wcstask.TASK_WKSTATUS = 1; wcstask.TASK_WHID = "PVC原膜立库"; wcstask.TASK_ADDUSERNO = "WCS"; wcstask.TASK_ADDDATETIME = DateTime.Now; wcstask.TASK_EDITUSERNO = "WCS"; wcstask.TASK_EDITDATETIME = DateTime.Now; wcstask.TASK_NOTES = ""; wcstask.TASK_RGVNO = ""; wcstask.TASK_BOXBARCODE = barcode; wcstask.TASK_POSIDTO = Conv_1115; //wcstask.TASK_NOTES = errormsg; int id = SugarBase.DB.Insertable(wcstask).ExecuteReturnIdentity(); if (id <= 0) { throw new Exception(string.Format("条码[{0}]添加WCS任务失败", barcode)); } else { wcstask.TASK_NO = id; } CommonData.AddWCS_TASK_DTL(db, wcstask.TASK_NO, wcstask.TASK_NO, wcstask.TASK_POSIDCUR, wcstask.TASK_POSIDTO, msg); }); if (string.IsNullOrWhiteSpace(errormsg)) { throw new Exception(msg); } else { throw new Exception(errormsg); } } } else if (convNo == Conv_1109)//6#扫描位置 { if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1504 || v.TASK_POSIDNEXT == Conv_1110 || v.TASK_POSIDNEXT == Conv_1107) && (v.TASK_POSIDCUR != Conv_1107))) { if (Current.TaskSet.Any(v => v.TASK_BOXBARCODE == barcode)) throw new Exception(string.Format("条码[{0}]存在任务,不能生成异常任务", barcode)); //生成退回异常任务 string msg = string.Format("车间[6]输送线[{0}]条码[{1}]无法入库,单通道存在出库任务。", convNo, barcode); //LogMessageHelper.RecordLogMessage(msg); string errormsg = TryCachHelper.TryTranExecute((db) => { BaseWorkflow.AddLedErrorMsg(db, convNo, msg, 0); //wms任务异常需要生成退回托盘任务 var wcstask = new WCS_TASK(); wcstask.TASK_WMSNO = "wcs_" + DateTime.Now.ToString("yyyyMMddhhmmss"); wcstask.TASK_COMTYPE = (int)ComTypeEnum.托盘异常退回; wcstask.TASK_SYSTYPE = "WCS"; wcstask.TASK_POSIDFROM = convNo;//起点地址 wcstask.TASK_POSIDCUR = convNo; wcstask.TASK_POSIDNEXT = convNo; wcstask.TASK_POSIDMOVE = ""; wcstask.TASK_PRIORITY = 1; wcstask.TASK_WKSTATUS = 1; wcstask.TASK_WHID = "PVC原膜立库"; wcstask.TASK_ADDUSERNO = "WCS"; wcstask.TASK_ADDDATETIME = DateTime.Now; wcstask.TASK_EDITUSERNO = "WCS"; wcstask.TASK_EDITDATETIME = DateTime.Now; wcstask.TASK_NOTES = ""; wcstask.TASK_RGVNO = ""; wcstask.TASK_BOXBARCODE = barcode; wcstask.TASK_POSIDTO = Conv_1110; //wcstask.TASK_NOTES = errormsg; int id = SugarBase.DB.Insertable(wcstask).ExecuteReturnIdentity(); if (id <= 0) { throw new Exception(string.Format("条码[{0}]添加WCS任务失败", barcode)); } else { wcstask.TASK_NO = id; } CommonData.AddWCS_TASK_DTL(db, wcstask.TASK_NO, wcstask.TASK_NO, wcstask.TASK_POSIDCUR, wcstask.TASK_POSIDTO, msg); }); if (string.IsNullOrWhiteSpace(errormsg)) { throw new Exception(msg); } else { throw new Exception(errormsg); } } } else if (convNo == Conv_1115)//7#人工上料位置 { var tasks_1115 = SugarBase.DB.Queryable().Where(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1518 || v.TASK_POSIDNEXT == Conv_1115 || v.TASK_POSIDNEXT == Conv_1112) && v.TASK_POSIDCUR != Conv_1112).ToList(); if (tasks_1115.Any(v => (v.TASK_POSIDCUR == Conv_1112 && v.TASK_BOXBARCODE.Contains("SH")) == false)) { throw new Exception(string.Format("车间[7]输送线[{0}]请求,存在出库任务,交通管制无法入库,请等待。", convNo)); } } else if (convNo == Conv_1110)//6#人工上料位置 { var tasks_1110 = SugarBase.DB.Queryable().Where(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1504 || v.TASK_POSIDNEXT == Conv_1110 || v.TASK_POSIDNEXT == Conv_1107) && (v.TASK_POSIDCUR != Conv_1109)).ToList(); if (tasks_1110.Any(v => (v.TASK_POSIDCUR == Conv_1107 && v.TASK_BOXBARCODE.Contains("SH")) == false)) { throw new Exception(string.Format("车间[6]输送线[{0}]请求,存在出库任务,交通管制无法入库,请等待。", convNo)); } } else if (convNo == Conv_1102)//5#扫描位置 { if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1099 || v.TASK_POSIDNEXT == Conv_1105) && v.TASK_POSIDCUR != Conv_1105)) { if (Current.TaskSet.Any(v => v.TASK_BOXBARCODE == barcode && v.TASK_WKSTATUS > 1 && v.TASK_WKSTATUS != 12)) throw new Exception(string.Format("条码[{0}]存在任务,不能生成异常任务", barcode)); if(!SugarBase.DB.Queryable().Any(v=>v.TASK_BOXBARCODE==barcode && v.TASK_COMTYPE == 6)) { //生成退回异常任务 string msg = string.Format("车间[5]输送线[{0}]条码[{1}]无法入库,单通道存在出库任务。", convNo, barcode); //LogMessageHelper.RecordLogMessage(msg); string errormsg = TryCachHelper.TryTranExecute((db) => { BaseWorkflow.AddLedErrorMsg(db, convNo, msg, 0); //wms任务异常需要生成退回托盘任务 var wcstask = new WCS_TASK(); wcstask.TASK_WMSNO = "wcs_" + DateTime.Now.ToString("yyyyMMddhhmmss"); wcstask.TASK_COMTYPE = (int)ComTypeEnum.托盘异常退回; wcstask.TASK_SYSTYPE = "WCS"; wcstask.TASK_POSIDFROM = convNo;//起点地址 wcstask.TASK_POSIDCUR = convNo; wcstask.TASK_POSIDNEXT = convNo; wcstask.TASK_POSIDMOVE = ""; wcstask.TASK_PRIORITY = 1; wcstask.TASK_WKSTATUS = 1; wcstask.TASK_WHID = "PVC原膜立库"; wcstask.TASK_ADDUSERNO = "WCS"; wcstask.TASK_ADDDATETIME = DateTime.Now; wcstask.TASK_EDITUSERNO = "WCS"; wcstask.TASK_EDITDATETIME = DateTime.Now; wcstask.TASK_NOTES = ""; wcstask.TASK_RGVNO = ""; wcstask.TASK_BOXBARCODE = barcode; wcstask.TASK_POSIDTO = Conv_1104; //wcstask.TASK_NOTES = errormsg; int id = SugarBase.DB.Insertable(wcstask).ExecuteReturnIdentity(); if (id <= 0) { throw new Exception(string.Format("条码[{0}]添加WCS任务失败", barcode)); } else { wcstask.TASK_NO = id; } CommonData.AddWCS_TASK_DTL(db, wcstask.TASK_NO, wcstask.TASK_NO, wcstask.TASK_POSIDCUR, wcstask.TASK_POSIDTO, msg); }); if (string.IsNullOrWhiteSpace(errormsg)) { throw new Exception(msg); } else { throw new Exception(errormsg); } } } } else if (convNo == Conv_1094)//4#扫描位置 { if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1092 || v.TASK_POSIDNEXT == Conv_1098) && v.TASK_POSIDCUR != Conv_1098)) { if (Current.TaskSet.Any(v => v.TASK_BOXBARCODE == barcode && v.TASK_WKSTATUS > 1 && v.TASK_WKSTATUS != 12)) throw new Exception(string.Format("条码[{0}]存在任务,不能生成异常任务", barcode)); if (!SugarBase.DB.Queryable().Any(v => v.TASK_BOXBARCODE == barcode && v.TASK_COMTYPE == 6)) { //生成退回异常任务 string msg = string.Format("车间[4]输送线[{0}]条码[{1}]无法入库,单通道存在出库任务。", convNo, barcode); //LogMessageHelper.RecordLogMessage(msg); string errormsg = TryCachHelper.TryTranExecute((db) => { BaseWorkflow.AddLedErrorMsg(db, convNo, msg, 0); //wms任务异常需要生成退回托盘任务 var wcstask = new WCS_TASK(); wcstask.TASK_WMSNO = "wcs_" + DateTime.Now.ToString("yyyyMMddhhmmss"); wcstask.TASK_COMTYPE = (int)ComTypeEnum.托盘异常退回; wcstask.TASK_SYSTYPE = "WCS"; wcstask.TASK_POSIDFROM = convNo;//起点地址 wcstask.TASK_POSIDCUR = convNo; wcstask.TASK_POSIDNEXT = convNo; wcstask.TASK_POSIDMOVE = ""; wcstask.TASK_PRIORITY = 1; wcstask.TASK_WKSTATUS = 1; wcstask.TASK_WHID = "PVC原膜立库"; wcstask.TASK_ADDUSERNO = "WCS"; wcstask.TASK_ADDDATETIME = DateTime.Now; wcstask.TASK_EDITUSERNO = "WCS"; wcstask.TASK_EDITDATETIME = DateTime.Now; wcstask.TASK_NOTES = ""; wcstask.TASK_RGVNO = ""; wcstask.TASK_BOXBARCODE = barcode; wcstask.TASK_POSIDTO = Conv_1097; //wcstask.TASK_NOTES = errormsg; int id = SugarBase.DB.Insertable(wcstask).ExecuteReturnIdentity(); if (id <= 0) { throw new Exception(string.Format("条码[{0}]添加WCS任务失败", barcode)); } else { wcstask.TASK_NO = id; } CommonData.AddWCS_TASK_DTL(db, wcstask.TASK_NO, wcstask.TASK_NO, wcstask.TASK_POSIDCUR, wcstask.TASK_POSIDTO, msg); }); if (string.IsNullOrWhiteSpace(errormsg)) { throw new Exception(msg); } else { throw new Exception(errormsg); } } } } else if (convNo == Conv_1097)//4#AGV对接位置 { if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1092 || v.TASK_POSIDNEXT == Conv_1098 || v.TASK_POSIDNEXT == Conv_1097) && v.TASK_POSIDCUR != Conv_1098 && v.TASK_POSIDCUR != Conv_1104)) { throw new Exception(string.Format("车间[4]输送线[{0}]请求,存在出库任务,交通管制无法入库,请等待。", convNo)); } } else if (convNo == Conv_1104)//5#AGV对接位置 { if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 2 && (v.TASK_POSIDNEXT == Conv_1099 || v.TASK_POSIDNEXT == Conv_1105 || v.TASK_POSIDNEXT == Conv_1104) && v.TASK_POSIDCUR != Conv_1105 && v.TASK_POSIDCUR != Conv_1104)) { throw new Exception(string.Format("车间[5]输送线[{0}]请求,存在出库任务,交通管制无法入库,请等待。", convNo)); } } else if (convNo == Conv_1155 || convNo == Conv_1156 || convNo == Conv_1157 || convNo == Conv_1158) { if (SugarBase.DB.Queryable().Any(v => v.TASK_COMTYPE == 2 && v.TASK_POSIDNEXT == convNo)) { throw new Exception(string.Format("输送线[{0}]条码[{1}]不能入库,存在出库到该位置的任务。", convNo, barcode)); } } } } }