From c4bcf24d506bdcd2e2b78bca63f0fbf08c356a86 Mon Sep 17 00:00:00 2001 From: lss <Lss@HanInfo> Date: 星期三, 04 六月 2025 17:26:59 +0800 Subject: [PATCH] 合肥佳通优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs | 237 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 128 insertions(+), 109 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 2246125..6a1287d 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs @@ -273,7 +273,7 @@ LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask"); if (WCSHelper.CreateTask(wcsTask)) { - LocationHelper.LockLoc(Start, 2); + LocationHelper.LockLoc(End, 2); LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); } @@ -281,61 +281,65 @@ 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 @@ -347,6 +351,7 @@ } else if (taskData.taskType == 5)//绉诲簱娴佺▼锛岀洿鎺ヤ娇鐢ㄨ捣鐐硅揣浣嶅拰缁堢偣璐т綅鐢熸垚浠诲姟锛屽苟缁戝畾鎵樼洏 { + note = "鍑哄簱"; //鍒涘缓鎵樼洏鐗╂枡缁戝畾淇℃伅锛屽苟璁$畻缁堢偣璐т綅 if (CreateCntrIteminfo(partData, taskData)) { @@ -740,6 +745,18 @@ string areacode = ""; 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(); @@ -1195,7 +1212,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; } @@ -1415,7 +1432,7 @@ Z_TYPE = 5 }; - LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask)); + LogHelper.Info("鍒涘缓鍛煎彨绌烘墭浠诲姟锛� + JsonConvert.SerializeObject(wcsTask)); if (WCSHelper.CreateTask(wcsTask)) { LocationHelper.LockLoc(Start, 2); @@ -1476,8 +1493,6 @@ try { - - #region 浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔� //浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔� //msts = WCSHelper.GetTaskBycntrcode(model.Rfid); @@ -1515,10 +1530,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); @@ -1564,49 +1580,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); - loc = FindEndcolByLocList(EndLocs); - 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 { @@ -1968,18 +1976,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 @@ -1989,12 +1998,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, @@ -2005,11 +2014,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, @@ -2117,7 +2126,6 @@ return result; } - /// <summary> /// 搴撲綅娓呯┖ /// </summary> @@ -2153,7 +2161,18 @@ 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(); + 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 @@ -2211,8 +2230,8 @@ { 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; + 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); @@ -2546,7 +2565,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) //{ // //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣� -- Gitblit v1.9.1