From 0c6f09c80809eeaf4576a6bb506776ffbd9d34a9 Mon Sep 17 00:00:00 2001 From: lss <2538410689@qq.com> Date: 星期三, 25 六月 2025 17:29:24 +0800 Subject: [PATCH] 库存优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs | 115 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 89 insertions(+), 26 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 9f74766..024a2c7 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs @@ -1195,34 +1195,45 @@ { lock (_lockEmpty) { - #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚�- //var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); - //if (CntrLoc != null) - //{ - // if (CntrLoc.S_LOC_CODE != Start) - // { - // LogHelper.Info($"ItemBack锛氬垱寤轰换鍔″け璐ワ紝鎵樼洏:{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}"); - // result.code = "1"; - // result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}"; - // AddErrorInfo("鎵樼洏缁戝畾浣嶇疆涓嶅悓", result.msg); - // return result; - // } - //} - //else - //{ - // LogHelper.Info($"ItemBack锛氬垱寤轰换鍔″け璐ワ紝鎵樼洏:{model.Rfid}鏈壘鍒扮粦瀹氳揣浣�); - // result.code = "1"; - // result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}鏈壘鍒扮粦瀹氳揣浣�; - // AddErrorInfo("鏌ユ壘鎵樼洏璐т綅澶辫触", result.msg); - // return result; - //} - #endregion + #region 鏍规嵁璐т綅妤煎眰鍒ゆ柇锛�妤煎幓寰�彔鐩樹綅 鍏朵粬鐨勫洖搴� var startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == Start).First(); if (startloc != null) { - if (startloc.N_LAYER == 3) + if (!string.IsNullOrEmpty(startloc.S_NOTE1)) + { + //鍙犵洏璐т綅璁$畻鍙犵洏璐т綅 + // 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_NOTE1.Trim() == startloc.S_NOTE1 + "鍙犵洏" && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList(); + if (dploc.Count > 0) + { + // LogHelper.Info($"鑾峰彇鍙犵洏璐т綅:{JsonConvert.SerializeObject(dploc)}"); + loc = dploc.FindAll(a => a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM < 6).OrderByDescending(a => a.N_CURRENT_NUM).FirstOrDefault(); + if (loc == null) + { + LogHelper.Info($"{startloc.S_NOTE1}鍙犵洏浣嶏紝閮藉凡缁忔湁閿佹垨鑰呭凡缁忓彔婊★紝璇锋鏌ヨ揣浣嶇姸鎬�); + result.code = "1"; + result.msg = $"{startloc.S_NOTE1}鍙犵洏璐т綅涓嶅彲鐢紝缁堢偣搴撳尯娌℃湁鍙敤璐т綅锛岃妫�煡閿佺姸鎬佸拰鏁伴噺"; + AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; + } + else + { + endlayer = loc.N_CURRENT_NUM + 1; + } + } + else + { + // LogHelper.Info($"鏍规嵁璐т綅妤煎眰锛歿startloc.N_LAYER}锛屼粨搴撶紪鐮侊細{startloc.S_WH_CODE}锛岃揣浣嶅娉細鍙犵洏锛屾湭鎵惧埌鍙犵洏璐т綅"); + result.code = "1"; + result.msg = $"{startloc.S_NOTE1}鍙犵洏璐т綅涓嶅彲鐢紝鏈壘鍒板彲鍙犵洏璐т綅"; + LogHelper.Info($"鏍规嵁璐т綅澶囨敞锛歿startloc.S_NOTE1}鍙犵洏锛岃揣浣嶄粨搴�{startloc.S_WH_CODE}锛屾壘涓嶅埌鍙犵洏璐т綅"); + AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source); + return result; + } + } + else 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(); @@ -2550,8 +2561,7 @@ 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) { - FindEndcolByLocList(list); - + result= FindEndcolByLocList(list); } //鏌ヨ鎵�湁鏈夋墭鐩樼殑鎺掓病閿佺殑鎺� @@ -2819,12 +2829,14 @@ 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(); + LogHelper.Info($"褰撳墠鎺�{rows[i]},鑾峰緱璐т綅{JsonConvert.SerializeObject(rowList)}"); if (rowList.Count(a => a.N_CURRENT_NUM == 0) > 0) { 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(); //if (full == null) @@ -2862,6 +2874,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