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 | 76 ++++++++++++++++++++++++++++++++++---- 1 files changed, 68 insertions(+), 8 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 f3af6b8..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) @@ -1626,7 +1627,7 @@ lock (_lockItemBack) { - + #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚� var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); if (CntrLoc != null) @@ -1685,7 +1686,6 @@ } else { - result.code = "1"; result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�; LogHelper.Info($"ItemBack锛歿result.msg}"); @@ -2544,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(); @@ -2815,8 +2824,8 @@ { 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 && 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) //{ @@ -2853,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