From 5b9da592f9bc117c88244f469418d5a5b29e4266 Mon Sep 17 00:00:00 2001 From: 海波 张 <2956280567@qq.com> Date: 星期三, 16 七月 2025 17:31:52 +0800 Subject: [PATCH] mes取消修改 --- dispatch/WcsTask.cs | 482 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 300 insertions(+), 182 deletions(-) diff --git a/dispatch/WcsTask.cs b/dispatch/WcsTask.cs index 311a48f..ef7dba2 100644 --- a/dispatch/WcsTask.cs +++ b/dispatch/WcsTask.cs @@ -5,6 +5,7 @@ using HH.WCS.ZhongCeJinTan.util; using HH.WCS.ZhongCeJinTan.wms; using Newtonsoft.Json; +using Org.BouncyCastle.Asn1.Ocsp; using S7.Net.Types; using System; using System.Collections.Generic; @@ -13,6 +14,7 @@ using System.Text; using System.Threading.Tasks; using System.Web.Services.Description; +using Top.Api; using static HH.WCS.ZhongCeJinTan.api.ApiModel; using static HH.WCS.ZhongCeJinTan.wms.WcsModel; @@ -39,79 +41,87 @@ string Traycode = mst.S_CNTR_CODE; var isFu = "0"; - var cntr = ContainerHelper.GetCntr(Traycode); - - if (cntr!=null) + try { - if (cntr.N_DETAIL_COUNT>0) + var cntr = ContainerHelper.GetCntr(Traycode); + + if (cntr != null) { - isFu = "1"; + if (cntr.N_DETAIL_COUNT > 0) + { + isFu = "1"; + } } - } - var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE); + var workFlow = TaskHelper.selectWorkFlowByType(mst.N_TYPE.ToString(), mst.TOOLSTYPE); - - if (workFlow != null) - { - if (workFlow.INOROUT.Contains("鍏ュ簱")) + + if (workFlow != null) { - Type = "1"; + if (workFlow.INOROUT.Contains("鍏ュ簱")) + { + Type = "1"; + } + + if (workFlow.INOROUT.Contains("鍑哄簱")) + { + Type = "2"; + var count = TaskHelper.GetConnectionTask(mst.S_END_LOC); + if (count >= 2) + { + return false; + } + + + } } - if (workFlow.INOROUT.Contains("鍑哄簱")) + if (mst.S_CNTR_CODE.Contains("KJZ")) { - Type = "2"; - var count = TaskHelper.GetConnectionTask(mst.S_END_LOC); - if (count>=2) + TrayType = "KJZ"; + } + + var interact = new + { + requestPk = mst.S_CODE,//浠诲姟鍙�+ contNo = Traycode,//鎵樼洏鍙�+ contType = TrayType,//鎵樼洏绫诲瀷 + trkType = Type,//浠诲姟绫诲瀷 + trkPrty = mst.N_PRIORITY,//浠诲姟浼樺厛绾�+ frmPos = mst.S_START_LOC,//璧峰浣嶇疆 + toPos = mst.S_END_LOC,//鐩殑鍦�+ isFull = isFu,//绌烘墭 婊℃墭 + groupNo = Item?.S_ITEM_NAME,//鎼�缁勫彿 + clientCode = "WMS",//鎿嶄綔浜�+ operationTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿 + }; + LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 鍦板潃淇℃伅:" + baseUrl + "receive", "绔嬪簱涓嬪彂浠诲姟"); + LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "绔嬪簱涓嬪彂浠诲姟"); + var result = apiHelper.Post(baseUrl + "receive", JsonConvert.SerializeObject(interact)); + LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "绔嬪簱涓嬪彂浠诲姟"); + if (!string.IsNullOrEmpty(result)) + { + var res = JsonConvert.DeserializeObject<WcsTaskReturn>(result); + if (res.code == "0") + { + TaskHelper.UpdateStatus(mst, "宸叉帹閫�); + return true; + } + else { return false; } - - - } - } - - if (mst.S_CNTR_CODE.Contains("KJZ")) - { - TrayType = "KJZ"; - } - - var interact = new - { - requestPk = mst.S_CODE,//浠诲姟鍙�- contNo = Traycode,//鎵樼洏鍙�- contType = TrayType,//鎵樼洏绫诲瀷 - trkType = Type,//浠诲姟绫诲瀷 - trkPrty = mst.N_PRIORITY,//浠诲姟浼樺厛绾�- frmPos = mst.S_START_LOC,//璧峰浣嶇疆 - toPos = mst.S_END_LOC,//鐩殑鍦�- isFull = isFu,//绌烘墭 婊℃墭 - groupNo = Item?.S_ITEM_NAME,//鎼�缁勫彿 - clientCode = "WMS",//鎿嶄綔浜�- operationTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿 - }; - LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 鍦板潃淇℃伅:" + baseUrl + "receive", "绔嬪簱涓嬪彂浠诲姟"); - LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "绔嬪簱涓嬪彂浠诲姟"); - var result = apiHelper.Post(baseUrl + "receive", JsonConvert.SerializeObject(interact)); - LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "绔嬪簱涓嬪彂浠诲姟"); - if (!string.IsNullOrEmpty(result)) - { - var res = JsonConvert.DeserializeObject<WcsTaskReturn>(result); - if (res.code == "0") - { - TaskHelper.UpdateStatus(mst, "宸叉帹閫�); - return true; } else { + LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 杩斿洖淇℃伅涓虹┖", "绔嬪簱涓嬪彂浠诲姟"); return false; } } - else + catch (Exception) { - LogHelper.Info("Wcs绔嬪簱涓嬪彂浠诲姟 杩斿洖淇℃伅涓虹┖", "绔嬪簱涓嬪彂浠诲姟"); - return false; + + throw; } } @@ -253,10 +263,12 @@ { result.msg = "Wcs涓嬪彂浠诲姟鎴愬姛"; result.code = "0"; + result.requestPk = model.requestPk; } else { result.msg = "Wcs涓嬪彂浠诲姟澶辫触"; result.code = "1"; + result.requestPk = model.requestPk; } return result; @@ -264,8 +276,9 @@ catch (Exception ex) { newDb.RollbackTran(); - result.msg = ex.Message; + result.msg = "Wcs涓嬪彂浠诲姟寮傚父"; result.code = "1"; + result.requestPk = model.requestPk; LogHelper.Info("Wcs涓嬪彂浠诲姟寮傚父" + ex.Message, "Wcs涓嬪彂浠诲姟"); return result; } @@ -593,7 +606,6 @@ try { - var taskNo = ""; if (string.IsNullOrEmpty(model.requestPk)) @@ -605,7 +617,7 @@ { taskNo = model.requestPk; } - var transportTask = newDb.Queryable<WMSTask>().Where(e => e.S_CODE == taskNo)?.First(); + var transportTask = newDb.Queryable<WMSTask>().Where(e => e.S_CODE == taskNo && e.S_SCHEDULE_TYPE.Contains("wcs"))?.First(); if (transportTask == null) { @@ -613,6 +625,13 @@ throw new Exception("鏈煡璇㈠埌瀵瑰簲鐨勪换鍔�); } + if (transportTask.S_B_STATE == "瀹屾垚" || transportTask.S_B_STATE == "鍙栨秷") + { + throw new Exception($"{transportTask}浠诲姟宸瞷transportTask.S_B_STATE}锛屼笉鍏佽鎿嶄綔"); + } + + + TaskHelper.WcsAddActionRecord(model.requestPk, model.noticeType, "WCS"); switch (model.noticeType) @@ -662,29 +681,29 @@ RfidChek.S_RESULT = "RFID鏍¢獙澶辫触"; if (WcsCancellTask(transportTask)) { - ContainerHelper.delCntr(transportTask.S_CNTR_CODE); - ContainerHelper.delCntrItem(transportTask.S_CNTR_CODE); + TaskHelper.Fail(transportTask); TaskProcess.OperateStatus(transportTask, 7); - + var agvTask = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv"); if (agvTask == null) { LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲{transportTask.S_OP_CODE}鐨刟gv浠诲姟", "Wcs浠诲姟鎵ц閫氱煡"); - throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE }鐨刟gv浠诲姟"); + throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴攞transportTask.S_OP_CODE}鐨刟gv浠诲姟"); } var workFlow = TaskHelper.selectWorkFlowByType(agvTask.N_TYPE.ToString(), agvTask.TOOLSTYPE); - - if (workFlow == null) - { - LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲浣滀笟娴佺▼", "Wcs浠诲姟鎵ц閫氱煡"); - throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴斾綔涓氭祦绋�); - } + + if (workFlow == null) + { + LogHelper.Info($"RFID鏍¢獙澶辫触锛屾病鎵惧埌瀵瑰簲浣滀笟娴佺▼", "Wcs浠诲姟鎵ц閫氱煡"); + throw new Exception($"RFID鏍¢獙澶辫触,娌℃壘鍒板搴斾綔涓氭祦绋�); + } //鏌ユ壘缁堢偣 var endList = LocationHelper.GetAllLocList1(workFlow.ERRORAREA); - var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY); + //var end = LocationHelper.FindBalanceEndcolByLocList(endList, workFlow.ERRORAREA,workFlow.ROADWAY); + var end = LocationHelper.FindEndcolByLoc(endList, workFlow.ERRORAREA); LogHelper.Info($"RFID鏍¢獙澶辫触涓嬪彂寮傚父缁堢偣淇℃伅" + JsonConvert.SerializeObject(end), "Wcs浠诲姟鎵ц閫氱煡"); @@ -693,21 +712,33 @@ LogHelper.Info($"RFID鏍¢獙澶辫触涓嬪彂浠诲姟澶辫触锛岀粓鐐瑰簱鍖簕workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�, "Wcs浠诲姟鎵ц閫氱煡"); throw new Exception($"RFID鏍¢獙澶辫触缁堢偣搴撳尯{workFlow.ERRORAREA},娌℃壘鍒扮粓鐐�); } + LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1); agvTask.S_START_LOC = agvTask.S_END_LOC; agvTask.S_START_AREA = agvTask.S_END_AREA; + agvTask.S_START_AREA_NAME = agvTask.S_END_AREA_NAME; agvTask.S_END_LOC = end.S_CODE; agvTask.S_END_AREA = end.S_AREA_CODE; + agvTask.S_END_AREA_NAME = end.S_AREA_Name; agvTask.S_TYPE = workFlow.FLOWNAME; + newDb.BeginTran(); - var I = newDb.Updateable(agvTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA,it.S_END_LOC,it.S_END_AREA,it.S_TYPE,it.S_B_STATE }).ExecuteCommand(); + var I = newDb.Updateable(agvTask).UpdateColumns(it => new { it.S_START_LOC, it.S_START_AREA, it.S_END_LOC, it.S_END_AREA, it.S_TYPE, it.S_B_STATE, it.S_START_AREA_NAME, it.S_END_AREA_NAME }).ExecuteCommand(); if (I == 0) { throw new Exception("淇敼浠诲姟琛ㄥけ璐�); } newDb.CommitTran(); + + var agvTask1 = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv"); + TaskHelper.opMesTask(agvTask1, 3); + ContainerHelper.delCntr(transportTask.S_CNTR_CODE); + ContainerHelper.delCntrItem(transportTask.S_CNTR_CODE); + } + else { + LogHelper.Info($"RFID鏍¢獙澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触", "Wcs浠诲姟鎵ц閫氱煡"); + throw new Exception($"RFID鏍¢獙澶辫触锛岄�鐭cs鍙栨秷浠诲姟澶辫触"); } } - newDb.BeginTran(); var R = newDb.Insertable(RfidChek).ExecuteCommand(); if (R == 0) @@ -715,25 +746,35 @@ throw new Exception("娣诲姞RFID鏍¢獙琛ㄥけ璐�); } newDb.CommitTran(); - } break; - //9鍙栬揣鏃犺揣 - case "9": - LogHelper.Info($"浠诲姟鍙穥transportTask.S_CODE},鍙栬揣鏃犺揣,鍙栨秷浠诲姟", "Wcs浠诲姟鎵ц閫氱煡"); - if (WcsCancellTask(transportTask)) { - LogHelper.Info($"浠诲姟鍙穥transportTask.S_CODE},鍙栨秷浠诲姟鎴愬姛锛岃捣鐐箋transportTask.S_START_LOC}璁句负寮傚父", "Wcs浠诲姟鎵ц閫氱煡"); - TaskHelper.Fail(transportTask); - TaskProcess.OperateStatus(transportTask, 7); - LocationHelper.updateLocLock(transportTask.S_START_LOC, 4, "寮傚父閿�); - var agvTask = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv"); - if (agvTask!=null) + //鍙栬揣瀹屾垚 + case "5": + TaskHelper.UpdateStatus(transportTask, "鍙栬揣瀹屾垚"); + LocationHelper.UnBindingLoc(transportTask.S_START_LOC, transportTask.S_CNTR_CODE.Split(',').ToList()); + break; + + //7鍙栨秷 + case "7": + LogHelper.Info($"浠诲姟鍙穥transportTask.S_CODE},鍙栨秷浠诲姟鎴愬姛", "Wcs浠诲姟鎵ц閫氱煡"); + TaskHelper.Fail(transportTask); + TaskProcess.OperateStatus(transportTask, 7); + + if (transportTask.S_TYPE.Contains("鍑哄簱")) + { + var agvTask1 = TaskHelper.GetTaskByWorkNo(transportTask.S_OP_CODE, "agv"); + if (agvTask1 != null) { - TaskHelper.Fail(agvTask); - NDCApi.CancelOrder(agvTask.S_CODE.Trim()); - TaskProcess.CacheBitCancelUpdate(agvTask); + TaskHelper.Fail(agvTask1); + NDCApi.CancelOrder(agvTask1.S_CODE.Trim()); + TaskProcess.CacheBitCancelUpdate(agvTask1); } } + else { + ContainerHelper.delCntr(transportTask.S_CNTR_CODE); + ContainerHelper.delCntrItem(transportTask.S_CNTR_CODE); + } + break; default: break; @@ -741,14 +782,18 @@ result.msg = "閫氱煡鎴愬姛"; result.code = "0"; + result.requestPk = model.requestPk; } catch (Exception ex) { - newDb.RollbackTran(); - result.msg = ex.Message; - result.code = "1"; + + LogHelper.Info("Wcs浠诲姟鎵ц閫氱煡寮傚父" + ex.Message, "Wcs浠诲姟鎵ц閫氱煡"); + result.msg = "Wcs浠诲姟鎵ц閫氱煡寮傚父"; + result.code = "1"; + result.requestPk = model.requestPk; + newDb.RollbackTran(); return result; } return result; @@ -800,14 +845,16 @@ newDb.CommitTran(); result.code = "0"; result.msg = "鎴愬姛"; + result.requestPk = model.requestPk; LogHelper.Info("Wcs鎶ヨ涓婃姤杩斿洖"+ JsonConvert.SerializeObject(result), "鎶ヨ涓婃姤"); return result; } catch (Exception ex) { newDb.RollbackTran(); - result.msg = ex.Message; + result.msg = "Wcs鎶ヨ淇℃伅寮傚父"; result.code = "1"; + result.requestPk = model.requestPk; LogHelper.Info("Wcs鎶ヨ淇℃伅寮傚父" + ex.Message, "鎶ヨ涓婃姤"); return result; } @@ -925,14 +972,16 @@ result.code = "0"; result.msg = "鎴愬姛"; + result.requestPk = model.requestPk; LogHelper.Info("Wcs宸烽亾鍙敤涓婃姤杩斿洖" + JsonConvert.SerializeObject(result), "宸烽亾鍙敤涓婃姤"); return result; } catch (Exception ex) { newDb.RollbackTran(); - result.msg = ex.Message; + result.msg = "Wcs宸烽亾鍙敤涓婃姤寮傚父"; result.code = "1"; + result.requestPk = model.requestPk; LogHelper.Info("Wcs宸烽亾鍙敤涓婃姤寮傚父" + ex.Message, "宸烽亾鍙敤涓婃姤"); return result; } @@ -952,86 +1001,112 @@ string bit = ""; var Meshod = ""; var newDb = new SqlHelper<object>().GetInstance(); - var tac = newDb.Queryable<WcsSafety>().Where(a => a.TaskNo == mst.S_CODE && a.Sign == state).ToList(); - if (tac.Count() > 0) - { - LogHelper.Info("鏌ヨ鍒板畨鍏ㄨ姹備俊鍙疯褰曡〃宸茬粡瀛樺湪鏁版嵁,姝ゆ淇″彿涓嶄笅杈剧粰绔嬪簱", "agv鎵ц閫氱煡"); - return true; - } - switch (state) - { - case 1101: - Type = "1"; - bit = mst.S_START_LOC; - Meshod = "AgvRequest"; - break; - case 1102: - Type = "1"; - bit = mst.S_START_LOC; - Meshod = "Complete"; - break; - case 1103: - Type = "2"; - bit = mst.S_END_LOC; - Meshod = "AgvRequest"; - break; - case 1104: - Type = "2"; - bit = mst.S_END_LOC; - Meshod = "Complete"; - break; - case 7: - Type = "5"; - bit = mst.S_END_LOC; - Meshod = "AgvRequestCancel"; - break; - } - - - - var interact = new + try { - requestPk = mst.S_CODE,//浠诲姟鍙�- trkType = Type,//浠诲姟绫诲瀷 - method = Meshod,//API鍚嶇О - stnNo = bit,//鐩殑鍦扮珯鍙板彿 - carNo = forkliftNo,// 杞﹀彿 - clientCode = "WMS",//鎿嶄綔浜�- operationTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿 - }; - LogHelper.Info("agv鎵ц閫氱煡 鍦板潃淇℃伅:" + baseUrl + "agvCallback", "agv鎵ц閫氱煡"); - LogHelper.Info("agv鎵ц閫氱煡 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "agv鎵ц閫氱煡"); - var result = apiHelper.Post(baseUrl + "agvCallback", JsonConvert.SerializeObject(interact)); - LogHelper.Info("agv鎵ц閫氱煡 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "agv鎵ц閫氱煡"); - if (!string.IsNullOrEmpty(result)) - { - var res = JsonConvert.DeserializeObject<WcsTaskCallBack>(result); - if (res.code == "0") + var tac = newDb.Queryable<WcsSafety>().Where(a => a.TaskNo == mst.S_CODE && a.Sign == state).ToList(); + if (tac.Count() > 0) { - WcsSafety Sign = new WcsSafety(); - Sign.TaskNo = mst.S_CODE; - Sign.Sign = state; - newDb.BeginTran(); - var B = newDb.Insertable(Sign).ExecuteCommand(); - if (B == 0) - { - newDb.RollbackTran(); - } - newDb.CommitTran(); - LogHelper.Info("agv鎵ц閫氱煡鎴愬姛:", "agv鎵ц閫氱煡"); + LogHelper.Info("鏌ヨ鍒板畨鍏ㄨ姹備俊鍙疯褰曡〃宸茬粡瀛樺湪鏁版嵁,姝ゆ淇″彿涓嶄笅杈剧粰绔嬪簱", "agv鎵ц閫氱煡"); return true; + } + switch (state) + { + case 1101: + Type = "1"; + bit = mst.S_START_LOC; + Meshod = "AgvRequest"; + break; + case 1102: + Type = "1"; + bit = mst.S_START_LOC; + Meshod = "Complete"; + break; + case 1103: + Type = "2"; + bit = mst.S_END_LOC; + Meshod = "AgvRequest"; + break; + case 1104: + Type = "2"; + bit = mst.S_END_LOC; + Meshod = "Complete"; + break; + case 7: + Type = "5"; + if (mst.S_TYPE.Contains("鍑哄簱")) + { + bit = mst.S_START_LOC; + } + else + { + bit = mst.S_END_LOC; + } + + //閫�簱鍙栨秷鍙慳gv璧风偣 + if (LocationHelper.GetErroArea(mst.S_END_AREA)) + { + bit = mst.S_START_LOC; + } + + + Meshod = "AgvRequestCancel"; + break; + } + + + + + var interact = new + { + requestPk = mst.S_CODE,//浠诲姟鍙�+ trkType = Type,//浠诲姟绫诲瀷 + method = Meshod,//API鍚嶇О + stnNo = bit,//鐩殑鍦扮珯鍙板彿 + carNo = forkliftNo,// 杞﹀彿 + clientCode = "WMS",//鎿嶄綔浜�+ operationTime = DateTime.Now.ToString()//鎿嶄綔鏃堕棿 + }; + LogHelper.Info("agv鎵ц閫氱煡 鍦板潃淇℃伅:" + baseUrl + "agvCallback", "agv鎵ц閫氱煡"); + LogHelper.Info("agv鎵ц閫氱煡 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "agv鎵ц閫氱煡"); + var result = apiHelper.Post(baseUrl + "agvCallback", JsonConvert.SerializeObject(interact)); + LogHelper.Info("agv鎵ц閫氱煡 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "agv鎵ц閫氱煡"); + if (!string.IsNullOrEmpty(result)) + { + var res = JsonConvert.DeserializeObject<WcsTaskCallBack>(result); + if (res.code == "0") + { + WcsSafety Sign = new WcsSafety(); + Sign.TaskNo = mst.S_CODE; + Sign.Sign = state; + newDb.BeginTran(); + var B = newDb.Insertable(Sign).ExecuteCommand(); + if (B == 0) + { + newDb.RollbackTran(); + } + newDb.CommitTran(); + LogHelper.Info("agv鎵ц閫氱煡鎴愬姛:", "agv鎵ц閫氱煡"); + return true; + } + else + { + return false; + } } else { + LogHelper.Info("agv鎵ц閫氱煡鎴愬姛 杩斿洖淇℃伅涓虹┖", "agv鎵ц閫氱煡"); return false; } } - else + catch (Exception) { - LogHelper.Info("agv鎵ц閫氱煡鎴愬姛 杩斿洖淇℃伅涓虹┖", "agv鎵ц閫氱煡"); - return false; + + throw; } + + } @@ -1158,41 +1233,73 @@ throw new Exception($"鏈煡璇㈠埌浠诲姟鍙穥model.taskNo}鐨勪换鍔�); } - if (task.S_B_STATE.Contains("瀹屾垚")|| task.S_B_STATE.Contains("鍙栨秷") || task.S_B_STATE.Contains("澶辫触")) + if (task.S_TYPE.Contains("鍑哄簱")) + { + //鍙栬揣鏃犺揣 + LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栬揣鏃犺揣,鍙栨秷浠诲姟", "鏀捐揣鏈夎揣"); + if (WcsCancellTask(task)) + { + LogHelper.Info($"浠诲姟鍙穥task.S_CODE},鍙栨秷浠诲姟鎴愬姛锛岃捣鐐箋task.S_START_LOC}璁句负寮傚父", "鏀捐揣鏈夎揣"); + TaskHelper.Fail(task); + TaskProcess.OperateStatus(task, 7); + LocationHelper.updateLocLock(task.S_START_LOC, 4, "寮傚父閿�); + var agvTask = TaskHelper.GetTaskByWorkNo(task.S_OP_CODE, "agv"); + if (agvTask != null) + { + if (agvTask.S_B_STATE!="鏈墽琛�) + { + NDCApi.CancelOrder(agvTask.S_CODE.Trim()); + } + TaskHelper.Fail(agvTask); + TaskProcess.CacheBitCancelUpdate(agvTask); + } + } + + } + else { + //鍗歌揣鏈夎揣 + if (task.S_B_STATE.Contains("瀹屾垚") || task.S_B_STATE.Contains("鍙栨秷") || task.S_B_STATE.Contains("澶辫触")) { throw new Exception($"浠诲姟鍙穥model.taskNo}锛屼换鍔$姸鎬侊細{task.S_B_STATE}锛屼笉鑳芥敼閬�); } - var endLoc = LocationHelper.GetLocOne(task.S_END_LOC); + var endLoc = LocationHelper.GetLocOne(task.S_END_LOC); - var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "鏃� && a.N_CURRENT_NUM == 0 && a.C_ENABLE=="Y").OrderBy(b=>b.N_COL).First(); + var end = newDb.Queryable<Location>().Where(a => a.S_AREA_CODE == endLoc.S_AREA_CODE && a.N_ROW == endLoc.N_ROW && a.N_COL > endLoc.N_COL && a.S_LOCK_STATE == "鏃� && a.N_CURRENT_NUM == 0 && a.C_ENABLE == "Y").OrderBy(b => b.N_COL).First(); - LogHelper.Info($"Wcs鏀捐揣鏈夎揣瀵绘壘鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀捐揣鏈夎揣"); + LogHelper.Info($"Wcs鏀捐揣鏈夎揣瀵绘壘鏂扮粓鐐逛俊鎭� + JsonConvert.SerializeObject(end), "鏀捐揣鏈夎揣"); - if (end!=null) - { - newDb.BeginTran(); - endLoc.N_LOCK_STATE = 4; - endLoc.S_LOCK_STATE = "寮傚父閿�; - newDb.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand(); - task.S_END_LOC = end.S_CODE; - newDb.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); - newDb.CommitTran(); - LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1); - result.msg = end.S_CODE; - result.code = "0"; + if (end != null) + { + newDb.BeginTran(); + endLoc.N_LOCK_STATE = 4; + endLoc.S_LOCK_STATE = "寮傚父閿�; + newDb.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand(); + task.S_END_LOC = end.S_CODE; + newDb.Updateable(task).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); + newDb.CommitTran(); + LocationHelper.LockLoc(end.S_CODE, "鍏ュ簱閿�, 1); + result.msg = end.S_CODE; + result.code = "0"; + result.requestPk = model.requestPk; + } + else + { + throw new Exception($"鏈煡璇㈠埌搴撳尯{endLoc.S_AREA_CODE}鏈夌鍚堢殑璐т綅"); + } } - else - { - throw new Exception($"鏈煡璇㈠埌搴撳尯{endLoc.S_AREA_CODE}鏈夌鍚堢殑璐т綅"); - } + result.msg = "Wcs鏀捐揣鏈夎揣/鍙栬揣鏃犺揣澶勭悊鎴愬姛"; + result.code = "0"; + result.requestPk = model.requestPk; + return result; } catch (Exception ex) { newDb.RollbackTran(); - result.msg = ex.Message; + result.msg = "Wcs鏀捐揣鏈夎揣寮傚父"; result.code = "1"; + result.requestPk = model.requestPk; LogHelper.Info("Wcs鏀捐揣鏈夎揣寮傚父" + ex.Message, "鏀捐揣鏈夎揣"); return result; } @@ -1208,7 +1315,6 @@ public static WcsWarningReurn agvResponse(agvResponseParme model) { var result = new WcsWarningReurn(); var newDb = new SqlHelper<object>().GetInstance(); - try { newDb.BeginTran(); @@ -1230,20 +1336,20 @@ newDb.CommitTran(); result.code = "0"; result.msg = "鎴愬姛"; + result.requestPk = model.requestPk; LogHelper.Info("Wcs閫氱煡纭杩斿洖" + JsonConvert.SerializeObject(result), "閫氱煡纭"); return result; } catch (Exception ex) { newDb.RollbackTran(); - result.msg = ex.Message; + result.msg = "Wcs閫氱煡纭寮傚父"; result.code = "1"; + result.requestPk = model.requestPk; LogHelper.Info("Wcs閫氱煡纭寮傚父" + ex.Message, "閫氱煡纭"); return result; } } - - } @@ -1260,6 +1366,18 @@ public string status { get; set; } } + + /// <summary> + /// mes姹囨姤浠诲姟杩斿洖 + /// </summary> + public class MesTaskReturn + { + public string code { get; set; } + public string msg { get; set; } + public bool success { get; set; } + public DateTime lastTime { get; set; } + } + /// <summary> /// Mes鎺ュ彛杩斿洖 /// </summary> -- Gitblit v1.9.1