From e1a97fc8b29f063e96e3ebbae2f07ee95b276069 Mon Sep 17 00:00:00 2001 From: lss <Lss@HanInfo> Date: 星期四, 05 六月 2025 17:25:31 +0800 Subject: [PATCH] 合肥佳通优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs | 565 +++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 418 insertions(+), 147 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs index 8d12ee2..c86d343 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs @@ -11,8 +11,11 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection.Emit; +using System.ServiceModel; using System.Threading; using System.Threading.Tasks; +using System.Web.UI.WebControls; using static HH.WCS.JiaTong.api.ApiModel; using static HH.WCS.JiaTong.api.OtherModel; using static HH.WCS.JiaTong.LISTA.process.HttpModel; @@ -155,30 +158,26 @@ } else if (taskData.taskType == 2)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛岃捣鐐归渶瑕佹湁鎵樼洏 { + note = "鍏ュ簱"; startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First(); if (startloc != null) { + Start = startloc.S_CODE; var CntrRel = LocationHelper.GetLocCntrRel(startloc.S_CODE).FirstOrDefault(); if (CntrRel != null) { - Start = startloc.S_CODE; CntrCode = CntrRel.S_CNTR_CODE; } - else - { - result.code = "1"; - result.msg = $"鏍规嵁璧风偣{Start},鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�; - AddErrorInfo("鎵樼洏鏌ユ壘澶辫触", result.msg, Source); - return result; - } + //else + //{ + // result.code = "1"; + // result.msg = $"鏍规嵁璧风偣{Start},鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�; + // AddErrorInfo("鎵樼洏鏌ユ壘澶辫触", result.msg, Source); + // return result; + //} } - //鍒ゆ柇鏄惁鏄┖鎵樺洖搴�- var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == CntrCode).First(); - if (CntrItem == null) - { - note = "绌烘墭鍥炲簱";//浜曟澗绌烘墭鍥炲簱锛岄渶瑕佷笌鍙犵洏鏈哄畨鍏ㄤ氦浜�- } + endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.dropStation).First(); if (endloc != null) { @@ -194,8 +193,8 @@ } else if (taskData.taskType == 3)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛� { + note = "鍑哄簱"; //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅 - startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == taskData.pickStation).First(); if (startloc != null) { @@ -274,69 +273,87 @@ LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask"); if (WCSHelper.CreateTask(wcsTask)) { - LocationHelper.LockLoc(Start, 2); + // LocationHelper.LockLoc(End, 2); LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; } } else if (startArea.N_FLOOR != endArea.N_FLOOR) { //妤煎眰鐢垫鍒嗛厤 - var endloc1 = Settings.elevatorLoc.Find(a => a.Floor == startArea.N_FLOOR); - var startloc1 = Settings.elevatorLoc.Find(a => a.Floor == endArea.N_FLOOR); + var elevatorLoc = LocationHelper.GetElevatorLoc(); - //鍒涘缓wcs鍒嗘浠诲姟 - var wcsTask = new WCSTask - { - S_CODE = WCSHelper.GenerateTaskNo(), - S_TYPE = "鐢垫1", - S_EQ_NO = taskData.taskNum, - S_START_LOC = Start, - S_END_LOC = endloc1.Location[0], - N_CNTR_COUNT = 1, - S_START_WH = startloc.S_WH_CODE, - S_START_AREA = startloc.S_AREA_CODE, - S_END_WH = endloc.S_WH_CODE, - S_END_AREA = endloc.S_AREA_CODE, - N_SCHEDULE_TYPE = 1, - S_CNTR_CODE = CntrCode, - N_PRIORITY = taskData.priority, - N_START_LAYER = 1, - N_END_LAYER = 1, - S_WMS_NO = taskData.wmsTaskNo, - Z_TYPE = n_type, - S_MES_NO = taskData.mesTaskNo - }; - var wcsTask1 = new WCSTask - { - S_CODE = WCSHelper.GenerateTaskNo(), - S_TYPE = "鐢垫2", - S_EQ_NO = taskData.taskNum, - S_START_LOC = startloc1.Location[0], - S_END_LOC = End, - N_CNTR_COUNT = 1, - S_START_WH = startloc.S_WH_CODE, - S_START_AREA = startloc.S_AREA_CODE, - S_END_WH = endloc.S_WH_CODE, - S_END_AREA = endloc.S_AREA_CODE, - N_SCHEDULE_TYPE = 1, - S_CNTR_CODE = CntrCode, - N_PRIORITY = taskData.priority, - S_WMS_NO = taskData.wmsTaskNo, - N_START_LAYER = 1, - N_END_LAYER = 1, - Z_TYPE = n_type, - S_MES_NO = taskData.mesTaskNo + if (elevatorLoc != null) + { //鍒涘缓wcs鍒嗘浠诲姟 + var wcsTask = new WCSTask + { + S_CODE = WCSHelper.GenerateTaskNo(), + S_TYPE = "鐢垫1", + S_EQ_NO = taskData.taskNum, + S_START_LOC = Start, + S_END_LOC = elevatorLoc.S_CODE, + N_CNTR_COUNT = 1, + S_START_WH = startloc.S_WH_CODE, + S_START_AREA = startloc.S_AREA_CODE, + S_END_WH = elevatorLoc.S_WH_CODE, + S_END_AREA = elevatorLoc.S_AREA_CODE, + N_SCHEDULE_TYPE = 1, + S_CNTR_CODE = CntrCode, + N_PRIORITY = taskData.priority, + N_START_LAYER = 1, + N_END_LAYER = 1, + S_WMS_NO = taskData.wmsTaskNo, + Z_TYPE = n_type, + S_MES_NO = taskData.mesTaskNo + }; + var wcsTask1 = new WCSTask + { + S_CODE = WCSHelper.GenerateTaskNo(), + S_TYPE = "鐢垫2", + S_EQ_NO = taskData.taskNum, + S_START_LOC = elevatorLoc.S_CODE, + S_END_LOC = End, + N_CNTR_COUNT = 1, + S_START_WH = elevatorLoc.S_WH_CODE, + S_START_AREA = elevatorLoc.S_AREA_CODE, + S_END_WH = endloc.S_WH_CODE, + S_END_AREA = endloc.S_AREA_CODE, + N_SCHEDULE_TYPE = 1, + S_CNTR_CODE = CntrCode, + N_PRIORITY = taskData.priority, + S_WMS_NO = taskData.wmsTaskNo, + N_START_LAYER = 1, + N_END_LAYER = 1, + Z_TYPE = n_type, + S_MES_NO = taskData.mesTaskNo - }; + }; + LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask"); + if (WCSHelper.CreateTask(wcsTask) && WCSHelper.CreateTask(wcsTask1)) + { - LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask"); - if (WCSHelper.CreateTask(wcsTask) && WCSHelper.CreateTask(wcsTask1)) - { - - LocationHelper.LockLoc(endloc.S_CODE, 1); - LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + // LocationHelper.LockLoc(Start, 1); + //LocationHelper.LockLoc(End, 2); + LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; + } } + + + } } else @@ -348,6 +365,7 @@ } else if (taskData.taskType == 5)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛屽苟缁戝畾鎵樼洏 { + note = "鍑哄簱"; //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅 if (CreateCntrIteminfo(partData, taskData)) { @@ -388,6 +406,7 @@ //鏆傚瓨浣嶅洖搴� else if (taskData.taskType == 6)//鍏ュ簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟 { + note = "鍏ュ簱"; //鏍规嵁鎵樼洏鍙锋壘璐т綅 var CntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE == partData.rfid).First(); if (CntrRel != null) @@ -547,9 +566,16 @@ LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask"); if (WCSHelper.CreateTask(wcsTask)) { - LocationHelper.LockLoc(Start, 2); - LocationHelper.LockLoc(End, 1); + // LocationHelper.LockLoc(Start, 2); + //LocationHelper.LockLoc(End, 1); LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; } } else @@ -741,6 +767,18 @@ try { + #region 鍏ュ簱妫�煡鎵樼洏鐗╂枡琛ㄦ湁鏃犳暟鎹�+ var cntritem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); + if (cntritem == null) + { + result.code = "1"; + result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}鏃犵粦瀹氱墿鏂欐暟鎹�; + LogHelper.Info($"ItemBack锛歿result.msg}"); + AddErrorInfo("鎵樼洏缁戝畾鐗╂枡鏁版嵁涓虹┖", result.msg, Source); + return result; + } + #endregion + #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚�濡傛灉娌$粦瀹氭墭鐩樺垯缁戝畾鎵樼洏 var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); if (CntrLoc != null) @@ -806,6 +844,7 @@ result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�; LogHelper.Info($"Putin==> {result.msg}"); AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; } //鍒ゆ柇鏈夋棤鐩稿悓鐗╂枡鎺�@@ -826,6 +865,7 @@ result.msg = $"搴撳尯:{areacode}鏃犲彲鐢ㄨ揣浣�; LogHelper.Info($"Putin==> {result.msg}"); AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; } } else @@ -835,6 +875,7 @@ result.msg = $"浠诲姟璧风偣:{Start}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃"; LogHelper.Info($"Putin==> {result.msg}"); AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source); + return result; } #endregion @@ -870,9 +911,16 @@ LogHelper.Info("鍒涘缓鍏ュ钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask)); if (WCSHelper.CreateTask(wcsTask)) { - LocationHelper.LockLoc(Start, 2); - LocationHelper.LockLoc(End, 1); + //LocationHelper.LockLoc(Start, 2); + //LocationHelper.LockLoc(End, 1); LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; } } else @@ -939,6 +987,7 @@ result.msg = $"鏍规嵁鏈哄彴缂栫爜锛歿model.WorkCenter}鏈壘鍒板搴旇揣浣�; LogHelper.Info($"Putin==> {result.msg}"); AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; } //鏍规嵁浠撳簱 璁$畻搴撳尯 var whcode = Settings.wareLoc.Where(a => a.AreaCode == locJt.S_WH_CODE).FirstOrDefault(); @@ -973,6 +1022,7 @@ result.msg = $"鏍规嵁缁堢偣搴撳尯浠撳簱缂栫爜锛歿locJt.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�; LogHelper.Info($"Putin==> {result.msg}"); AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; } #endregion @@ -991,6 +1041,14 @@ { End = Endloc.S_CODE; } + else + { + result.code = "1"; + result.msg = $"Computeloc==銆嬫牴鎹満鍙扮紪鐮侊細{model.WorkCenter},宸ヨ绫诲瀷锛歿cntrType} 鏈壘鍒扮┖璐т綅鏁版嵁锛岃妫�煡璐т綅琛�; + LogHelper.Info($"ItemBack锛歿result.msg}"); + AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; + } } else { @@ -999,6 +1057,7 @@ result.msg = $"浠诲姟鐗╂枡:{itemcode}鎵句笉鍒板搴斿簱瀛�; LogHelper.Info($"ItemBack锛歿result.msg}"); AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; } #endregion @@ -1035,8 +1094,15 @@ if (WCSHelper.CreateTask(wcsTask)) { LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); - LocationHelper.LockLoc(Start, 2); - LocationHelper.LockLoc(End, 1); + //LocationHelper.LockLoc(Start, 2); + //LocationHelper.LockLoc(End, 1); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; } } else @@ -1181,7 +1247,7 @@ var whcode = Settings.wareLoc.Where(a => a.AreaCode == startloc.S_WH_CODE).FirstOrDefault(); if (whcode != null) { - if (startloc.S_NOTE == "PM" || string.IsNullOrEmpty(startloc.S_NOTE)) + if ( string.IsNullOrEmpty(startloc.S_NOTE)) { areacode = whcode.PMK; } @@ -1192,6 +1258,7 @@ result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�; LogHelper.Info($"Putin==> {result.msg}"); AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; } #endregion @@ -1257,15 +1324,22 @@ N_END_LAYER = endlayer, Z_TYPE = 5 }; - LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask)); + LogHelper.Info("鍒涘缓绌烘墭鍥炲簱浠诲姟锛� + JsonConvert.SerializeObject(wcsTask)); if (WCSHelper.CreateTask(wcsTask)) { - LocationHelper.LockLoc(startloc.S_CODE, 2); - LocationHelper.LockLoc(loc.S_CODE, 1); + //LocationHelper.LockLoc(startloc.S_CODE, 2); + //LocationHelper.LockLoc(loc.S_CODE, 1); // 绌烘墭鍥炲簱鍒ゆ柇鎵樼洏鏈夋棤缁戝畾鐗╂枡淇℃伅 濡傛灉鏈夊垯鍒犻櫎 var itemcntr = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); if (itemcntr != null) { db.Deleteable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).ExecuteCommand(); } LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; } } else @@ -1333,11 +1407,12 @@ result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿endloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�; LogHelper.Info($"Putin==> {result.msg}"); AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; } //璁$畻鍑哄簱鎵樼洏 - startloc = airlift(areacode, itemcode); + startloc = LocationHelper.GetLocByAreacode(areacode); if (startloc != null) { var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == startloc.S_CODE).First(); @@ -1365,7 +1440,7 @@ result.msg = $"浠诲姟璧风偣:{End}鎵句笉鍒板搴旇揣浣嶏紝璇锋鏌ヨ揣浣嶈〃"; LogHelper.Info($"callfixture:{result.msg}"); AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source); - + return result; } #endregion @@ -1399,12 +1474,19 @@ Z_TYPE = 5 }; - LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask)); + LogHelper.Info("鍒涘缓鍛煎彨绌烘墭浠诲姟锛� + JsonConvert.SerializeObject(wcsTask)); if (WCSHelper.CreateTask(wcsTask)) { - LocationHelper.LockLoc(Start, 2); - LocationHelper.LockLoc(End, 1); + //LocationHelper.LockLoc(Start, 2); + //LocationHelper.LockLoc(End, 1); LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; } } else @@ -1460,8 +1542,6 @@ try { - - #region 浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔� //浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔� //msts = WCSHelper.GetTaskBycntrcode(model.Rfid); @@ -1499,10 +1579,11 @@ if (whcode != null) { //绮夋枡鐩存帴鍥炲簱锛屽叾浠栫墿鏂欓渶瑕佸幓瀵瑰簲鐨勬殏瀛樺尯 + #region 鏍规嵁鐗╂枡鍒ゆ柇鍥炲簱搴撳尯 if (model.PartNumber.StartsWith("4X")) { areacode = whcode.PMK; - loc = StorageCompute(itemcode, areacode); + //loc = StorageCompute(itemcode, areacode); //if (loc == null) //{ // loc = emptyRow(areacode); @@ -1548,48 +1629,41 @@ AddErrorInfo("鐗╂枡缂栫爜鏍煎紡閿欒", result.msg, Source); return result; } - var EndLocs = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == areacode).ToList(); - if (EndLocs.Count > 0) - { - loc = EndLocs.Find(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0); - if (loc != null) - { - End = loc.S_CODE; - } - else - { - result.code = "1"; - result.msg = $"缁堢偣搴撳尯锛歿areacode}鏃犲彲鐢ㄨ揣浣�; - AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); - return result; - } - } - else - { - result.code = "1"; - result.msg = $"鏍规嵁缁堢偣搴撳尯锛歿areacode},鏈壘鍒板搴旇揣浣�; - AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); - return result; - } - //loc = StorageCompute(itemcode, areacode); - //if (loc == null) - //{ - // loc = emptyRow(areacode); - //} + } + #endregion + + + var EndLocs = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == areacode).ToList(); + //鏌ユ壘璐т綅搴撳尯 + if (EndLocs.Count > 0) + { + //loc = EndLocs.Find(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0); + loc = FindEndcolByLocList(EndLocs); + + + } + else + { + result.code = "1"; + result.msg = $"鏍规嵁缁堢偣搴撳尯锛歿areacode},鏈壘鍒板搴旇揣浣�; + AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; + } + if (loc != null) { End = loc.S_CODE; } else { - result.code = "1"; result.msg = $"搴撳尯:{areacode}鏃犲彲鐢ㄨ揣浣�; AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source); return result; } + } else { @@ -1598,6 +1672,7 @@ result.msg = $"鏍规嵁璧风偣浠撳簱缂栫爜锛歿startloc.S_WH_CODE}鏈壘鍒板搴旈厤缃枃浠�; LogHelper.Info($"Putin==> {result.msg}"); AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; } } @@ -1645,8 +1720,8 @@ LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask)); if (WCSHelper.CreateTask(wcsTask)) { - LocationHelper.LockLoc(Start, 2); - LocationHelper.LockLoc(End, 1); + //LocationHelper.LockLoc(Start, 2); + //LocationHelper.LockLoc(End, 1); //鍒涘缓浠诲姟鎴愬姛 鏇存柊浣欐枡淇℃伅 var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); if (CntrItem != null) @@ -1659,6 +1734,13 @@ db.Updateable(CntrItem).UpdateColumns(a => new { a.F_WEIGHT, a.S_BS_TYPE }).ExecuteCommand(); } LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; } } else @@ -1872,9 +1954,16 @@ LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask"); if (WCSHelper.CreateTask(wcsTask)) { - LocationHelper.LockLoc(Start, 2); - LocationHelper.LockLoc(End, 1); + //LocationHelper.LockLoc(Start, 2); + //LocationHelper.LockLoc(End, 1); LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; } } else @@ -1950,18 +2039,19 @@ // var startArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == startloc.S_AREA_CODE).First(); //var endArea = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == endloc.S_AREA_CODE).First(); - string dtcode = "DT-01"; - //妤煎眰鐢垫鍒嗛厤 - var Diantiloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == dtcode).First(); - if (Diantiloc == null) - { - result.code = "1"; - result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹揣浣嶇紪鐮�{dtcode}鏈壘鍒扮數姊揣浣�; - AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source); - return result; - } + //string dtcode = "DT-01"; + ////妤煎眰鐢垫鍒嗛厤 + //var Diantiloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == dtcode).First(); + //if (Diantiloc == null) + //{ + // result.code = "1"; + // result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹揣浣嶇紪鐮�{dtcode}鏈壘鍒扮數姊揣浣�; + // AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source); + // return result; + //} - //鏍规嵁鐢垫鏁伴噺鍒ゆ柇閫佸線鍝釜鐢垫 锛堝叿浣撶數姊祦绋嬫牴鎹幇鍦虹數姊暟閲忥級 + //鏍规嵁浠诲姟鏁伴噺鍒ゆ柇閫佸線鍝釜鐢垫 锛堝叿浣撶數姊祦绋嬫牴鎹幇鍦虹數姊暟閲忥級 + var elevatorLoc = LocationHelper.GetElevatorLoc(); //鍒涘缓wcs鍒嗘浠诲姟 var wcsTask = new WCSTask @@ -1971,12 +2061,12 @@ S_TYPE = "鐢垫1", S_EQ_NO = model.Data.task_no, S_START_LOC = startloc.S_CODE, - S_END_LOC = Diantiloc.S_CODE, + S_END_LOC = elevatorLoc.S_CODE, N_CNTR_COUNT = 1, S_START_WH = startloc.S_WH_CODE, S_START_AREA = startloc.S_AREA_CODE, - S_END_WH = endloc.S_WH_CODE, - S_END_AREA = endloc.S_AREA_CODE, + S_END_WH = elevatorLoc.S_WH_CODE, + S_END_AREA = elevatorLoc.S_AREA_CODE, N_SCHEDULE_TYPE = 1, S_CNTR_CODE = cntr.S_CNTR_CODE, N_END_LAYER = 1, @@ -1987,11 +2077,11 @@ S_CODE = WCSHelper.GenerateTaskNo(), S_TYPE = "鐢垫2", S_EQ_NO = model.Data.task_no, - S_START_LOC = Diantiloc.S_CODE, + S_START_LOC = elevatorLoc.S_CODE, S_END_LOC = endloc.S_CODE, N_CNTR_COUNT = 1, - S_START_WH = startloc.S_WH_CODE, - S_START_AREA = startloc.S_AREA_CODE, + S_START_WH = elevatorLoc.S_WH_CODE, + S_START_AREA = elevatorLoc.S_AREA_CODE, S_END_WH = endloc.S_WH_CODE, S_END_AREA = endloc.S_AREA_CODE, N_SCHEDULE_TYPE = 1, @@ -2004,9 +2094,16 @@ if (WCSHelper.CreateTask(wcsTask) && WCSHelper.CreateTask(wcsTask1)) { - LocationHelper.LockLoc(startloc.S_CODE, 2); - LocationHelper.LockLoc(endloc.S_CODE, 1); + //LocationHelper.LockLoc(startloc.S_CODE, 2); + //LocationHelper.LockLoc(endloc.S_CODE, 1); LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } + else + { + result.code = "1"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); + return result; } } @@ -2099,8 +2196,74 @@ return result; } - /// <summary> + /// 搴撲綅娓呯┖ + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + internal static Result ClearLocCntr(ClearTask model) + { + Result result = new Result() { code = "200", msg = "搴撲綅娓呴櫎鎴愬姛" }; + string Source = "MES"; + if (model == null) + { + result.code = "1"; + result.msg = "鍙傛暟涓簄ull"; + AddErrorInfo("鍙傛暟涓虹┖", result.msg, Source); + return result; + } + string loc = model.LocationNum; + var db = new SqlHelper<object>().GetInstance(); + try + { + var location = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First(); + if (location != null) + { + var loccntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc).First(); + + if (loccntr != null) + { + + string cntrcode = loccntr.S_CNTR_CODE; + var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntrcode).First(); + if (CntrItem != null) + { + if (LocationHelper.UnBindingLoc(loc, new List<string>() { cntrcode })) + { + LogHelper.Info($"娓呴櫎鎵樼洏璐т綅鍏崇郴鎴愬姛"); + } + } + else + { + LogHelper.Info($"ClearLocCntr 鎵樼洏{cntrcode}鏃犵墿鏂欑粦瀹氬叧绯�); + } + + } + else + { + LogHelper.Info($"ClearLocCntr 璐т綅{loc}鏃犳墭鐩樿揣浣嶇粦瀹氬叧绯�); + } + } + else + { + result.code = "1"; + result.msg = $"鏍规嵁璐т綅:{loc}鎵句笉鍒拌揣浣嶅叧绯�; + AddErrorInfo("璐т綅涓虹┖", result.msg, Source); + return result; + } + } + catch (Exception ex) + { + LogHelper.Info($"ClearLocCntr Error锛歿ex}"); + db.Ado.CommitTran(); + result.code = "1"; + result.msg = $"Error锛歿ex}"; + return result; + + } + + return result; + } /// <summary> /// 搴撲綅娓呯┖ /// </summary> /// <param name="model"></param> @@ -2133,9 +2296,20 @@ if (CntrItem != null) { - LocationHelper.UnBindingLoc(loc, new List<string>() { "cntrcode" }); - // db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand(); - db.Deleteable<CntrItemDetail>().Where(it => it.S_CNTR_CODE.Trim() == cntrcode).ExecuteCommand(); + LocationHelper.UnBindingLoc(loc, new List<string>() { cntrcode }); + // db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand(); + if (db.Deleteable<CntrItemDetail>().Where(it => it.S_CNTR_CODE == cntrcode).ExecuteCommand() > 0) + { + LogHelper.Info($"ClearLoc 搴撲綅娓呴櫎鎴愬姛"); + } + else + { + LogHelper.Info($"ClearLoc 搴撲綅娓呴櫎澶辫触"); + result.code = "1"; + result.msg = "搴撲綅娓呴櫎澶辫触"; + AddErrorInfo("搴撲綅娓呴櫎澶辫触", result.msg, Source); + return result; + } } else @@ -2169,7 +2343,99 @@ return result; } + /// <summary> + /// 璁惧鐘舵�涓婃姤 + /// </summary> + /// <returns></returns> + internal static DeviceInfoModel Device() + { + var db = new SqlHelper<HangChaAGV>().GetInstance(); + DeviceInfoModel device = new DeviceInfoModel(); + List<DeviceInfos> deviceInfos = new List<DeviceInfos>();//鍙犵洏鏈烘姤閿欎俊鎭�+ List<AgvInfos> agvInfos = new List<AgvInfos>();//agv鎶ラ敊淇℃伅 + + //鑾峰彇鍐呭瓨涓彔鐩樻満鐨勬姤閿欎俊鎭�+ foreach (var dpjInfo in DeviceProcess.DpjInfoDirectory) + { + deviceInfos.Add(new DeviceInfos() { Device = dpjInfo.Value.DeviceName, DeviceInfo = dpjInfo.Value.ErrorInfo }); + } + device.DeviceInfos = deviceInfos; + //鑾峰彇杞﹁締鎶ヨ淇℃伅 + var agvDeviceInfo = db.Queryable<HangChaAGV>().ToList(); + if (agvDeviceInfo.Count > 0) + { + device.AgvQty = agvDeviceInfo.Count; + device.AgvErrorQty = agvDeviceInfo.FindAll(a => a.agvErrCode != "0" || a.agvErrCode != "0" || a.faildCode != "0").Count; + device.AgvChargeQty = agvDeviceInfo.FindAll(a => a.agvErrCode == "1").Count; + device.AgvRunQty = agvDeviceInfo.FindAll(a => a.agvErrCode == "1").Count; + foreach (var agv in agvDeviceInfo) + { + string agvErrorInfo = GetAgvAlarmSendCodeTwo(agv.agvErrCode, agv.errCode2, agv.faildCode); + agvInfos.Add(new AgvInfos() { AgvNo = agv.agvNo, AgvInfo = agvErrorInfo }); + } + } + device.AgvInfos = agvInfos; + + return device; + } + + /// <summary> + /// agv灏忚溅鏁呴殰鐮佸鐞�+ /// </summary> + /// <param name="errCode1">閿欒鐮�</param> + /// <param name="errCode2">閿欒鐮�</param> + /// <param name="faildCode">閿欒鐮�</param> + /// <returns></returns> + private static string GetAgvAlarmSendCodeTwo(string errCode1, string errCode2, string faildCode) + { + string result = ""; + //灏嗘姤璀︿俊鎭暣鍚�+ string binSW1 = Convert.ToString(int.Parse(errCode1), 2).PadLeft(22, '0'); + string binSW2 = Convert.ToString(int.Parse(errCode1), 2).PadLeft(20, '0'); + string binFc = Convert.ToString(int.Parse(errCode1), 2).PadLeft(16, '0'); + var arr1 = binSW1.ToArray(); + var arr2 = binSW2.ToArray(); + var arr3 = binFc.ToArray(); + + for (int i = 0; i <= arr1.Length; i++) + { + if (arr1[i] == '1') + { + var ErrorInfo = Settings.agvErrorCode1.Where(a => a.ErrorCode == i).FirstOrDefault(); + if (ErrorInfo != null) + { + result = result + "," + $"{ErrorInfo.ErrorInfo}"; + } + + } + } + for (int i = 0; i <= arr2.Length; i++) + { + if (arr1[i] == '1') + { + var ErrorInfo = Settings.agvErrorCode2.Where(a => a.ErrorCode == i).FirstOrDefault(); + if (ErrorInfo != null) + { + result = result + "," + $"{ErrorInfo.ErrorInfo}"; + } + + } + } + for (int i = 0; i <= arr3.Length; i++) + { + if (arr1[i] == '1') + { + var ErrorInfo = Settings.agvFaildCode.Where(a => a.ErrorCode == i).FirstOrDefault(); + if (ErrorInfo != null) + { + result = result + "," + $"{ErrorInfo.ErrorInfo}"; + } + + } + } + return result; + } #endregion #region 鍚堣偉浣抽�涓氬姟鏂规硶 @@ -2297,7 +2563,12 @@ #endregion var loc = LocationHelper.GetLocByItemCode(areacode, itemcode, level); LogHelper.Info($"airlift=>鏍规嵁搴撳尯缂栫爜:{areacode}锛岀墿鏂欑紪鐮�{itemcode},鐗╂枡绛夌骇璁$畻鍑烘湁鎵樼洏璐т綅{JsonConvert.SerializeObject(loc)}"); - result = FindStartcolByLoclist(loc); + // result = FindStartcolByLoclist(loc); + if (loc.Count > 0) + { + result = loc.OrderByDescending(a => a.N_COL).First(); + } + LogHelper.Info($"airlift=>鍙敤璐т綅涓猴細{JsonConvert.SerializeObject(result)}"); return result; } @@ -2358,7 +2629,7 @@ lock (_lockLocation) { - var loc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == jtcode.Trim() && a.S_NOTE == cntrType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).First(); + var loc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == jtcode.Trim() && a.S_NOTE == cntrType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0&&a.S_LOCK_STATE=="鏃�).First(); if (loc != null) { End = loc; @@ -2415,7 +2686,7 @@ /// </summary> /// <param name="locations"></param> /// <returns></returns> - internal static Location FindEndcolByLocList(List<Location> locations, string itemcode) + internal static Location FindEndcolByLocList(List<Location> locations) { try { @@ -2431,7 +2702,7 @@ Location other = null; //褰撳墠鎺掓病鏈夐攣骞朵笖鏈夌┖浣嶇疆 //鍏堟壘婊′綅锛岀劧鍚庡悗闈竴灞傝涔堟槸绌猴紝瑕佷箞涓嶅瓨鍦�- other = rowList.OrderByDescending(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0).FirstOrDefault(); + other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0).FirstOrDefault(); //if (full == null) //{ // //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣�@@ -2508,9 +2779,9 @@ } } + + #endregion - - internal static CodeInfo GetCodeInfo(string code, string org) { -- Gitblit v1.9.1