123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483 |
- 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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().Any(v => v.TASK_COMTYPE == 6 && v.TASK_POSIDTO == agvConvPosNo))
- {
- throw new Exception(string.Format("车间[{0}]出口[{1}]存在入库任务,RGV[{2}]无法执行出库任务", workshopNo, agvConvPosNo, rgvNo));
- }
- }
- /// <summary>
- /// 检测出库位置状态
- /// </summary>
- /// <param name="upPosConvNo">RGV下料点</param>
- /// <param name="requestagvPos">agv对接工位</param>
- /// <param name="requestManualPos">扫描位置</param>
- /// <param name="onMatManualPos">出库缓存位置或入库位置</param>
- /// <returns></returns>
- 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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK_DTL>().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));
- }
- }
- }
- /// <summary>
- /// 检测是否存在出库任务
- /// </summary>
- private void CheckIsExistOutTask(string convNo, string barcode = "")
- {
- if (convNo == Conv_1112)//7#AGV对接工位
- {
- if (SugarBase.DB.Queryable<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().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<WCS_TASK>().Any(v => v.TASK_COMTYPE == 2 && v.TASK_POSIDNEXT == convNo))
- {
- throw new Exception(string.Format("输送线[{0}]条码[{1}]不能入库,存在出库到该位置的任务。", convNo, barcode));
- }
- }
- }
- }
- }
|