From 3e870a218efe18db4eeb099632aac12a947a9e92 Mon Sep 17 00:00:00 2001 From: lss <Lss@HanInfo> Date: 星期二, 24 六月 2025 17:41:21 +0800 Subject: [PATCH] 优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs | 143 ++++++++++++++++++++++++++++++++--------------- 1 files changed, 96 insertions(+), 47 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 4a3662a..dfba0f1 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs @@ -880,6 +880,7 @@ return result; } + loc = StorageCompute(itemcode, areacode); if (loc != null) @@ -1024,6 +1025,10 @@ { areacode = whcode.PMK; cntrType = "PM"; + } + else if (model.PartNumber.StartsWith("32")) + { + areacode = whcode.ZCW2; } else { @@ -1220,8 +1225,8 @@ if (startloc.N_LAYER == 3) { //鍙犵洏璐т綅璁$畻鍙犵洏璐т綅 - // var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE && a.C_ENABLE == "Y").ToList(); - var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE ).ToList(); + // var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE && a.C_ENABLE == "Y").ToList(); + var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList(); if (dploc.Count > 0) { // LogHelper.Info($"鑾峰彇鍙犵洏璐т綅:{JsonConvert.SerializeObject(dploc)}"); @@ -1252,7 +1257,7 @@ else if (startloc.S_NOTE == "PB") { //鎵惧潡鑳跺爢鍙犲尯 - // var KjDploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鐗囪兌鍫嗗彔浣� && a.S_WH_CODE.Trim() == startloc.S_WH_CODE && a.C_ENABLE == "Y").ToList(); + // var KjDploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鐗囪兌鍫嗗彔浣� && a.S_WH_CODE.Trim() == startloc.S_WH_CODE && a.C_ENABLE == "Y").ToList(); var KjDploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鐗囪兌鍫嗗彔浣� && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList(); if (KjDploc.Count > 0) { @@ -1446,11 +1451,24 @@ { lock (_lockcallfixture) { + + #region 鏍规嵁浠撳簱缂栫爜鍒ゆ柇搴撳尯 骞惰绠楀嚭搴撹揣浣� var endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == End).First(); //鏍规嵁浠撳簱 璁$畻搴撳尯 if (endloc != null) { + #region 鏍¢獙缁堢偣鏄惁鍙� + if (endloc.N_CURRENT_NUM >= 1 || endloc.N_LOCK_STATE != 0) + { + result.code = "1"; + result.msg = $"缁堢偣璐т綅锛歿End}涓嶅彲鐢�; + LogHelper.Info($"Putin==> {result.msg}"); + AddErrorInfo("璐т綅涓嶅彲鐢�, result.msg, Source); + return result; + } + #endregion + var whcode = Settings.wareLoc.Where(a => a.AreaCode == endloc.S_WH_CODE).FirstOrDefault(); if (whcode != null) { @@ -1608,34 +1626,7 @@ { lock (_lockItemBack) { - #region 浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�- //浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�- //msts = WCSHelper.GetTaskBycntrcode(model.Rfid); - //if (msts.Count() > 0) - //{ - // msts.RemoveAll(a => string.IsNullOrEmpty(a.S_CNTR_CODE)); - // mst = msts.OrderByDescending(a => a.T_CREATE).FirstOrDefault(); - //} - //if (mst != null) - //{ - // areacode = mst.S_START_AREA; - //} - //else - //{ - // result.code = "1"; - // result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鏈壘鍒版墭鐩樺嚭搴撲换鍔�; - // AddErrorInfo("鏌ユ壘浠诲姟澶辫触", result.msg); - // return result; - //} - //if (string.IsNullOrEmpty(areacode)) - //{ - // LogHelper.Info($"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�); - // result.code = "1"; - // result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�; - // AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg); - // return result; - //} - #endregion + #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚� var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); @@ -1683,17 +1674,18 @@ // loc = emptyRow(areacode); //} } + else if (model.PartNumber.StartsWith("32")) + { + areacode = whcode.ZCW2; + } else { - - if (model.PartNumber.StartsWith("3")) { areacode = whcode.ZCW; } else { - result.code = "1"; result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�; LogHelper.Info($"ItemBack锛歿result.msg}"); @@ -1838,9 +1830,6 @@ } #endregion } - - - return result; } @@ -2102,7 +2091,7 @@ var startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == model.Data.start_loc_code).First(); - // var endloc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.Data.end_loc_code && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").First(); + // var endloc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.Data.end_loc_code && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").First(); var endloc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.Data.end_loc_code && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).First(); @@ -2358,8 +2347,8 @@ } } - - + + return result; } @@ -2555,15 +2544,24 @@ /// <returns></returns> internal static Location StorageCompute(string itemcode, string areacode) { + //Location result = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).First(); var db = new SqlHelper<object>().GetInstance(); - // Location result = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0 ).First(); - Location result = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").First(); + Location result = new Location(); + var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).ToList(); + if (list.Count > 0) + { + FindEndcolByLocListLock(list); + + } //鏌ヨ鎵�湁鏈夋墭鐩樼殑鎺掓病閿佺殑鎺�- // var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM > 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList(); - // if (list.Count > 0) + + // var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList(); + //if (list.Count > 0) //{ + // for (int i = 0; i < list.Count; i++) // { + // LogHelper.Info($"鏈夋墭鐩樻帓鍙穥list[i].N_ROW}锛岀墿鏂欑紪鐮亄itemcode},搴撳尯{areacode}"); // //鏌ヨ璐т綅缁戝畾鎵樼洏 // var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == list[i].S_CODE).First(); @@ -2826,9 +2824,9 @@ { Location other = null; //褰撳墠鎺掓病鏈夐攣骞朵笖鏈夌┖浣嶇疆 - //鍏堟壘婊′綅锛岀劧鍚庡悗闈竴灞傝涔堟槸绌猴紝瑕佷箞涓嶅瓨鍦�- /// other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").FirstOrDefault(); - other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 ).FirstOrDefault(); + + // other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").FirstOrDefault(); + other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).FirstOrDefault(); //if (full == null) //{ // //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣�@@ -2864,6 +2862,57 @@ } /// <summary> + /// 鎵剧粓鐐圭┖璐т綅璁$畻鎺掗攣 + /// </summary> + /// <param name="locations"></param> + /// <returns></returns> + internal static Location FindEndcolByLocListLock(List<Location> locations) + { + try + { + var db = new SqlHelper<object>().GetInstance(); + Location end = null; + //鏍规嵁缁堢偣璐т綅鎵剧┖闂茶揣浣�+ var rows = locations.Select(a => a.N_ROW).Distinct().ToList(); + for (int i = 0; i < rows.Count; i++) + { + var rowList = locations.Where(r => r.N_ROW == rows[i]).ToList(); + if (rowList.Count(a => a.S_LOCK_STATE != "鏃�) == 0 && rowList.Count(a => a.N_CURRENT_NUM == 0) > 0) + { + Location other = null; + //褰撳墠鎺掓病鏈夐攣骞朵笖鏈夌┖浣嶇疆 + //鍏堟壘婊′綅锛岀劧鍚庡悗闈竴浣嶈涔堟槸绌猴紝瑕佷箞涓嶅瓨鍦�+ var full = rowList.OrderByDescending(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 1).FirstOrDefault(); + if (full == null) + { + //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣�+ other = rowList.OrderBy(a => a.N_COL).FirstOrDefault(); + } + else + { + other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_COL > full.N_COL).FirstOrDefault(); + } + + if (other != null) + { + end = other; + break; + + } + + } + } + return end; + } + catch (Exception) + { + + throw; + } + + } + + /// <summary> /// 鎵捐捣鐐规弧璐т綅 /// </summary> /// <param name="locations"></param> -- Gitblit v1.9.1