From 3a56820d028e98ac3c4bd315aa76181d7d6720cd Mon Sep 17 00:00:00 2001 From: 海波 张 <2956280567@qq.com> Date: 星期一, 28 七月 2025 17:29:57 +0800 Subject: [PATCH] 金坛二合一出库修改 --- wms/LocationHelper.cs | 110 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 78 insertions(+), 32 deletions(-) diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs index ab8777d..6fdf323 100644 --- a/wms/LocationHelper.cs +++ b/wms/LocationHelper.cs @@ -12,6 +12,7 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; +using System.Web.Services.Description; using Top.Api; using WebSocketSharp.Frame; using static HH.WCS.ZhongCeJinTan.api.ApiModel; @@ -105,6 +106,19 @@ return result; } + internal static List<string> GetConnectionListNoYN(string S_AREA_CODE) + { + var db = new SqlHelper<object>().GetInstance(); + var ConnectionList = db.Queryable<Location>().Where(s => s.S_AREA_CODE == S_AREA_CODE ).OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).ToList(); + List<string> result = new List<string>(); + foreach (var item in ConnectionList) + { + result.Add(item.S_CODE); + } + return result; + } + + /// <summary> /// 鑾峰彇璐т綅淇℃伅,鍙傛暟搴撳尯缂栧彿 /// </summary> @@ -163,7 +177,17 @@ var db = new SqlHelper<object>().GetInstance(); return db.Queryable<WMSTask>().Where(a => ( a.S_START_LOC.Contains(jbLoc)&& a.S_SCHEDULE_TYPE.Contains(type) && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "澶辫触" && a.S_B_STATE != "宸插畬鎴� && a.S_B_STATE != "鏈墽琛�)).OrderBy(b=>b.T_CREATE).First(); - + } + + /// <summary> + /// 杩斿洖鍑哄簱agv浠诲姟 + /// </summary> + internal static WMSTask GetConnectionTask(string jbLoc, string type,DateTime time) + { + var db = new SqlHelper<object>().GetInstance(); + + return db.Queryable<WMSTask>().Where(a => (a.S_START_LOC.Contains(jbLoc) && a.S_SCHEDULE_TYPE.Contains(type) && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "澶辫触" && a.S_B_STATE != "宸插畬鎴� && a.S_B_STATE != "鏈墽琛�&&a.T_CREATE<time)).OrderBy(b => b.T_CREATE).First(); + } /// <summary> @@ -325,8 +349,13 @@ //鑾峰彇string鎺ラ┏浣嶉泦鍚� var connectionList = LocationHelper.GetConnectionList(CONNECTION); + + var connectionListNoYN = LocationHelper.GetConnectionListNoYN(CONNECTION); + //涓嶅彲鐢ㄦ帴椹充綅闆嗗悎 - var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionList); + var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionListNoYN); + + List<Location> jblist = new List<Location>(); @@ -341,7 +370,7 @@ List<Location> difference = flaseConnectionList .Where(loc1 => !balanceConnectionList.Any(loc2 => loc2.S_CODE == loc1.S_CODE)) .ToList(); - + jblist = difference; @@ -404,8 +433,13 @@ { if (rowList.Count(a => a.N_ROADWAY == item2.CONNEC_ROADWAY) > 0) { - flag2 = true; - break; + var ConnectionY = db.Queryable<Location>().Where(s => s.S_AREA_CODE == CONNECTION && s.C_ENABLE == "Y" && s.CONNEC_ROADWAY == item2.CONNEC_ROADWAY).First(); + if (ConnectionY == null) + { + flag2 = true; + break; + } + } } @@ -463,8 +497,10 @@ //鑾峰彇string鎺ラ┏浣嶉泦鍚� var connectionList = LocationHelper.GetConnectionList(CONNECTION); + var connectionListNoYN = LocationHelper.GetConnectionListNoYN(CONNECTION); + //涓嶅彲鐢ㄦ帴椹充綅闆嗗悎 - var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionList); + var flaseConnectionList = LocationHelper.GetConnectionListByst(connectionListNoYN); List<Location> jblist = new List<Location>(); @@ -539,8 +575,12 @@ { if (rowList.Count(a => a.N_ROADWAY == item2.CONNEC_ROADWAY) > 0) { - flag2 = true; - break; + var ConnectionY = db.Queryable<Location>().Where(s => s.S_AREA_CODE == CONNECTION && s.C_ENABLE == "Y" && s.CONNEC_ROADWAY == item2.CONNEC_ROADWAY).First(); + if (ConnectionY == null) + { + flag2 = true; + break; + } } } @@ -682,7 +722,7 @@ foreach (var item in v) { //鍙栧緱宸烽亾鍒楄〃涓彲鐢ㄨ揣浣嶆渶澶氱殑宸烽亾 骞惰幏鍙栧贩閬撲腑鎵�湁璐т綅 - location_roadray = lstTrueLocation.Where(o => o.N_ROADWAY == item.roadWay).ToList(); + location_roadray = lstTrueLocation.Where(o => o.N_ROADWAY == item.roadWay).OrderBy(b => b.N_ROW).OrderBy(b=>b.N_COL).OrderBy(b => b.N_LAYER).ToList(); if (location_roadray != null && location_roadray.Count > 0) { @@ -714,7 +754,7 @@ foreach (var item in v) { //鍙栧緱宸烽亾鍒楄〃涓彲鐢ㄨ揣浣嶆渶澶氱殑宸烽亾 骞惰幏鍙栧贩閬撲腑鎵�湁璐т綅 - var loclist = lstTrueLocation.Where(o => o.N_ROADWAY == item.roadWay).OrderBy(b => b.N_ROW).OrderBy(b=>b.N_COL).ToList(); + var loclist = lstTrueLocation.Where(o => o.N_ROADWAY == item.roadWay).OrderBy(b => b.N_ROW).OrderBy(b=>b.N_COL).OrderBy(b => b.N_LAYER).ToList(); foreach (var item1 in loclist) { @@ -749,7 +789,7 @@ { var ConnectionList = 0; - var loclist = lstTrueLocation.Where(o => o.N_ROADWAY == item.N_ROADWAY && o.N_CURRENT_NUM>0).OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).ToList(); + var loclist = lstTrueLocation.Where(o => o.N_ROADWAY == item.N_ROADWAY && o.N_CURRENT_NUM>0).OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).OrderBy(b => b.N_LAYER).ToList(); foreach (var item1 in loclist) { var tp = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == item1.S_CODE).First(); @@ -779,7 +819,7 @@ foreach (var item in result) { - var loclist = lstTrueLocation.Where(o => o.N_ROADWAY == item.loc.N_ROADWAY && o.N_CURRENT_NUM==0 ).OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).ToList(); + var loclist = lstTrueLocation.Where(o => o.N_ROADWAY == item.loc.N_ROADWAY && o.N_CURRENT_NUM==0 && o.S_LOCK_STATE=="鏃�).OrderBy(b => b.N_ROW).OrderBy(b => b.N_COL).OrderBy(b => b.N_LAYER).ToList(); foreach (var item1 in loclist) { location_roadray.Add(item1); @@ -995,14 +1035,12 @@ /// </summary> /// <param name="locations"></param> /// <returns></returns> - internal static Location FindStartcolByLoclistAndcntr(List<Location> locations,string startArea, string CONNECTION = "") { + internal static Location FindStartcolByLoclistAndcntr(List<Location> locations,string startArea, string CONNECTION = "",string cntrType="") { var db = new SqlHelper<object>().GetInstance(); try { - - var connectionList = LocationHelper.GetConnectionList(CONNECTION); - + var connectionList = LocationHelper.GetConnectionListByN(CONNECTION); var balanceConnectionList = LocationHelper.GetConnectionListByst(connectionList); @@ -1011,7 +1049,7 @@ //鏌ユ壘涓嶅彲鐢ㄥ贩閬� var rowdwa = db.Queryable<RoadWayEnable>().Where(x => x.areaCode == startArea && x.status == "0").ToList(); - + LogHelper.Info($"绌烘墭鑷姩鍑哄簱鎺掗櫎涓嶅彲鐢ㄨ揣浣嶅紑濮嬶細{locations.Count}", "绌烘墭鍑哄簱"); for (int i = 0; i < rowsStart.Count; i++) { var rowList = locations.Where(r => r.N_ROW == rowsStart[i]).ToList().OrderByDescending(a => a.N_COL); @@ -1032,7 +1070,7 @@ foreach (var item2 in balanceConnectionList) { - if (rowList.Count(a => a.N_ROADWAY != item2.CONNEC_ROADWAY) > 0) + if (rowList.Count(a => a.N_ROADWAY == item2.CONNEC_ROADWAY) > 0) { flag2 = true; break; @@ -1042,7 +1080,7 @@ if (flag || flag2) { - continue; + locations.RemoveAll(a => a.N_ROW == rowsStart[i]); } //褰撳墠鎺掓湁閿佸苟涓旀病鏈夋弧璐т綅锛屾帓闄�@@ -1051,6 +1089,8 @@ locations.RemoveAll(a => a.N_ROW == rowsStart[i]); } } + LogHelper.Info($"绌烘墭鑷姩鍑哄簱鎺掗櫎涓嶅彲鐢ㄨ揣浣嶇粨鏉燂細{locations.Count}", "绌烘墭鍑哄簱"); + foreach (var item in locations) { if (item.N_CURRENT_NUM == 0) @@ -1058,12 +1098,14 @@ continue; } var tp = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == item.S_CODE).First(); + LogHelper.Info($"绌烘墭鑷姩鍑哄簱itemCode:{item.S_CODE},itemLock:{item.S_LOCK_STATE} ,tp淇℃伅" + JsonConvert.SerializeObject(tp), "绌烘墭鍑哄簱"); if (tp != null && item.S_LOCK_STATE == "鏃�) { var tp1 = db.Queryable<Container>().Where(s => s.S_CODE == tp.S_CNTR_CODE).First(); - if (tp1 != null && tp1.N_DETAIL_COUNT==0) + LogHelper.Info($"绌烘墭鑷姩鍑哄簱,cntrType:{cntrType},tp1淇℃伅" +JsonConvert.SerializeObject(tp1), "绌烘墭鍑哄簱"); + if (tp1 != null && tp1.N_DETAIL_COUNT==0 && tp1.S_TYPE== cntrType) { start = item; break; @@ -1254,6 +1296,8 @@ var db = new SqlHelper<object>().GetInstance(); try { + + LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟杩涘叆FindStartcolByLoclistAndItem", "Mes浠诲姟涓嬪彂"); Location start = null; var rowsStart = locations.Select(a => a.N_ROW).Distinct().ToList(); @@ -1263,10 +1307,6 @@ var balanceConnectionList = LocationHelper.GetConnectionListByst(connectionList); - - - - LogHelper.Info($"ZCSendTask鍑哄簱浠诲姟鎺掗櫎涓嶅彲鐢ㄥ贩閬撳紑濮�, "Mes浠诲姟涓嬪彂"); //浣滀笟娴佺▼鐨勫贩閬�@@ -1790,7 +1830,7 @@ internal static bool GetErroArea(string area) { var db = new SqlHelper<object>().GetInstance(); - var erroArea = db.Queryable<Area>().Where(a => a.S_NAME.Contains("寮傚父") && a.S_CODE.Contains(area)).First(); + var erroArea = db.Queryable<Area>().Where(a => a.S_NAME.Contains("寮傚父") && a.S_CODE==area).First(); if (erroArea == null) { @@ -1812,6 +1852,8 @@ var res = false; var db = new SqlHelper<object>().GetInstance(); var model = db.Queryable<Location>().Where(a => a.S_CODE == loc).First(); + LogHelper.Info($"閿佽揣浣嶅弬鏁帮細loc:{loc},lockState:{lockState},lockNo:{lockNo}", "涓婇攣"); + LogHelper.Info($"閿佽揣浣嶄俊鎭�+JsonConvert.SerializeObject(model), "涓婇攣"); if (model != null && model.S_LOCK_STATE.Trim() == "鏃�) { model.S_LOCK_STATE = lockState; model.N_LOCK_STATE = lockNo; @@ -1826,7 +1868,8 @@ /// <param name="loc"></param> /// <returns></returns> public static bool UnLockLoc(string loc) { - LogHelper.Info("UnLockLoc:" + loc); + + LogHelper.Info($"UnLockLoc瑙i攣璐т綅鍙傛暟锛歭oc:{loc},lockState:鏃�lockNo:0", "瑙i攣"); var res = false; var db = new SqlHelper<object>().GetInstance(); var model = db.Queryable<Location>().Where(a => a.S_CODE == loc).First(); @@ -1834,10 +1877,10 @@ model.S_LOCK_STATE = "鏃�; model.N_LOCK_STATE = 0; res = db.Updateable(model).UpdateColumns(it => new { it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0; - LogHelper.Info("UnLockLoc:瑙i攣缁撴灉" + res); + LogHelper.Info("UnLockLoc:瑙i攣缁撴灉" + res, "瑙i攣"); } else { - LogHelper.Info("UnLockLoc 澶辫触"); + LogHelper.Info($"UnLockLoc锛宭oc:{loc} 澶辫触", "瑙i攣"); } return res; } @@ -1994,7 +2037,7 @@ /// <returns></returns> public static bool UnBindingLoc(string loc, List<string> cntrs) { - LogHelper.Info($"UnBindingLoc淇℃伅:loc锛歿loc},cntrs:{cntrs}"); + LogHelper.Info($"UnBindingLoc淇℃伅:loc锛歿loc},cntrs:{cntrs}","瑙i攣"); var res = false; var db = new SqlHelper<object>().GetInstance(); var location = db.Queryable<Location>().Where(a => a.S_CODE == loc).First(); @@ -2004,8 +2047,7 @@ var lcrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == loc).ToList(); var count = db.Deleteable<LocCntrRel>().Where(it => cntrs.Contains(it.S_CNTR_CODE) && it.S_LOC_CODE == loc).ExecuteCommand(); - LogHelper.Info($"lcrList淇℃伅" + JsonConvert.SerializeObject(lcrList)); - LogHelper.Info($"count淇℃伅" + JsonConvert.SerializeObject(count)); + location.N_CURRENT_NUM = lcrList.Count - count; location.S_LOCK_STATE = "鏃�; @@ -2013,6 +2055,7 @@ db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); db.CommitTran(); + LogHelper.Info($"UnBindingLoc瑙i攣閿佽揣浣嶅弬鏁帮細loc:{loc},lockState:鏃�lockNo:0", "瑙i攣"); res = true; } catch (Exception ex) @@ -2030,6 +2073,7 @@ /// <returns></returns> public static bool BindingLoc(string loc, List<string> cntrs) { + LogHelper.Info($"BindingLoc淇℃伅:loc锛歿loc},cntrs:{cntrs}", "瑙i攣"); var res = false; var db = new SqlHelper<object>().GetInstance(); var location = db.Queryable<Location>().Where(a => a.S_CODE == loc).First(); @@ -2048,10 +2092,12 @@ location.N_CURRENT_NUM = lcrList.Count + count; location.N_LOCK_STATE = 0; location.S_LOCK_STATE = "鏃�; - + db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE }).ExecuteCommand(); db.CommitTran(); + LogHelper.Info($"BindingLoc瑙i攣閿佽揣浣嶅弬鏁帮細loc:{loc},lockState:鏃�lockNo:0", "瑙i攣"); + res = true; } catch (Exception ex) -- Gitblit v1.9.1