From 83109bffe17f4cf877bb9546065723835a3c6b7d Mon Sep 17 00:00:00 2001 From: lss <Lss@HanInfo> Date: 星期三, 18 六月 2025 17:30:38 +0800 Subject: [PATCH] 货位禁用添加,国自安全交互流程变更 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs | 140 ++++++++++++++++++++++++++-------------------- 1 files changed, 78 insertions(+), 62 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs index ad6a450..ebc2d8b 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs @@ -202,7 +202,7 @@ "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; - + /// <summary> /// 鏍规嵁鐗╂枡鎵炬墭鐩� /// </summary> @@ -212,15 +212,50 @@ /// <returns></returns> internal static List<Location> GetLocByItemCode(string areaCode, string ItemCode, string lev) { - + List<Location> locs; - - var db = new SqlHelper<object>().GetInstance(); - var queryable = db.Queryable<Location>() - .LeftJoin<LocCntrRel>((a, b) => a.S_CODE == b.S_LOC_CODE) - .LeftJoin<CntrItemDetail>((a, b, c) => b.S_CNTR_CODE == c.S_CNTR_CODE) - .Where((a, b, c) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.S_AREA_CODE == areaCode); + + var db = new SqlHelper<object>().GetInstance(); + var queryable = db.Queryable<Location>() + .LeftJoin<LocCntrRel>((a, b) => a.S_CODE == b.S_LOC_CODE) + .LeftJoin<CntrItemDetail>((a, b, c) => b.S_CNTR_CODE == c.S_CNTR_CODE) + .Where((a, b, c) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.S_AREA_CODE == areaCode && a.C_ENABLE == "Y"); + //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆 + if (ItemCode.Trim().Length == 6) + { + queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE.StartsWith(ItemCode)); + + } + else + { + queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE == ItemCode); + } + //int targetIndex = LevelOrder.IndexOf(lev); + //// 鑾峰彇鎵�湁浣庝簬鎴栫瓑浜庣洰鏍囩瓑绾х殑绛夌骇 + //var validLevels = LevelOrder + //.Skip(targetIndex) // 璺宠繃楂樹簬鐩爣绛夌骇鐨勭瓑绾�+ //.ToList(); + + LogHelper.Info($"GetLocByItemCode=>鏍规嵁搴撳尯缂栫爜:{areaCode}锛岀墿鏂欑紪鐮�{ItemCode},鐗╂枡浼樺厛绾�{lev}锛岀墿鏂欑瓑绾ц绠楀嚭鏈夋墭鐩樿揣浣峽JsonConvert.SerializeObject(queryable.ToList())}"); + //鍒ゆ柇闇�笉闇�鐗╂枡绛夌骇鏌ユ壘锛屽苟浼樺厛鍑哄簱浣欐枡 + if (string.IsNullOrEmpty(lev)) + { + locs = queryable.Where((a, b, c) => c.S_BS_TYPE == "浣欐枡").ToList(); + } + else + { + locs = queryable.Where((a, b, c) => c.LEV == lev && c.S_BS_TYPE == "浣欐枡").ToList(); + } + // LogHelper.Info($"GetLocByItemCode=>鏌ユ壘浣欐枡,{JsonConvert.SerializeObject(locs)}"); + + //娌℃湁浣欐枡鍒欏鎵惧叏閮ㄧ墿鏂�+ if (locs.Count == 0) + { + queryable = db.Queryable<Location>() + .LeftJoin<LocCntrRel>((a, b) => a.S_CODE == b.S_LOC_CODE) + .LeftJoin<CntrItemDetail>((a, b, c) => b.S_CNTR_CODE == c.S_CNTR_CODE) + .Where((a, b, c) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.S_AREA_CODE == areaCode && a.C_ENABLE == "Y"); //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆 if (ItemCode.Trim().Length == 6) { @@ -231,55 +266,20 @@ { queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE == ItemCode); } - //int targetIndex = LevelOrder.IndexOf(lev); - //// 鑾峰彇鎵�湁浣庝簬鎴栫瓑浜庣洰鏍囩瓑绾х殑绛夌骇 - //var validLevels = LevelOrder - //.Skip(targetIndex) // 璺宠繃楂樹簬鐩爣绛夌骇鐨勭瓑绾�- //.ToList(); + LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(queryable.ToList())}"); - LogHelper.Info($"GetLocByItemCode=>鏍规嵁搴撳尯缂栫爜:{areaCode}锛岀墿鏂欑紪鐮�{ItemCode},鐗╂枡浼樺厛绾�{lev}锛岀墿鏂欑瓑绾ц绠楀嚭鏈夋墭鐩樿揣浣峽JsonConvert.SerializeObject(queryable.ToList())}"); - //鍒ゆ柇闇�笉闇�鐗╂枡绛夌骇鏌ユ壘锛屽苟浼樺厛鍑哄簱浣欐枡 + if (string.IsNullOrEmpty(lev)) { - locs = queryable.Where((a, b, c) => c.S_BS_TYPE == "浣欐枡").ToList(); + locs = queryable.ToList(); } else { - locs = queryable.Where((a, b, c) => c.LEV == lev && c.S_BS_TYPE == "浣欐枡").ToList(); + locs = queryable.Where((a, b, c) => c.LEV == lev).ToList(); } - // LogHelper.Info($"GetLocByItemCode=>鏌ユ壘浣欐枡,{JsonConvert.SerializeObject(locs)}"); + LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(locs)}"); + } - //娌℃湁浣欐枡鍒欏鎵惧叏閮ㄧ墿鏂�- if (locs.Count == 0) - { - queryable = db.Queryable<Location>() - .LeftJoin<LocCntrRel>((a, b) => a.S_CODE == b.S_LOC_CODE) - .LeftJoin<CntrItemDetail>((a, b, c) => b.S_CNTR_CODE == c.S_CNTR_CODE) - .Where((a, b, c) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.S_AREA_CODE == areaCode); - //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆 - if (ItemCode.Trim().Length == 6) - { - queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE.StartsWith(ItemCode)); - - } - else - { - queryable = queryable.Where((a, b, c) => c.S_ITEM_CODE == ItemCode); - } - LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(queryable.ToList())}"); - - - if (string.IsNullOrEmpty(lev)) - { - locs = queryable.ToList(); - } - else - { - locs = queryable.Where((a, b, c) => c.LEV == lev).ToList(); - } - LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(locs)}"); - } - return locs; } @@ -288,16 +288,16 @@ /// </summary> /// <param name="areaCode">搴撳尯缂栫爜</param> /// <returns></returns> - internal static Location GetLocByAreacode(string areaCode,string type) + internal static Location GetLocByAreacode(string areaCode, string type) { Location loc = new Location(); var db = new SqlHelper<object>().GetInstance(); string CntrCodeWith = ""; - if (type == "PM ") + if (type.Trim().Contains("MA")) { CntrCodeWith = "MA"; } - else if (type == "PN ") + else if (type.Trim().Contains("NA")) { CntrCodeWith = "NA"; } @@ -305,16 +305,16 @@ { LogHelper.Info($"鎵樼洏绫诲瀷{type}涓嶅湪瑙勫畾鑼冨洿"); } - var query = db.Queryable<Location>() - .LeftJoin<LocCntrRel>((a, b) => a.S_CODE == b.S_LOC_CODE) - .LeftJoin<CntrItemDetail>((a, b, c) => b.S_CNTR_CODE == c.S_CNTR_CODE) - .Where((a, b, c) => a.S_AREA_CODE == areaCode && a.N_CURRENT_NUM == 1 - && a.N_LOCK_STATE == 0 - && b.S_CNTR_CODE != null&&b.S_CNTR_CODE.Contains(CntrCodeWith) && c.S_ITEM_CODE == null - ); - loc = query.First(); - - + var query = db.Queryable<Location>() + .LeftJoin<LocCntrRel>((a, b) => a.S_CODE == b.S_LOC_CODE) + .LeftJoin<CntrItemDetail>((a, b, c) => b.S_CNTR_CODE == c.S_CNTR_CODE) + .Where((a, b, c) => a.S_AREA_CODE == areaCode && a.N_CURRENT_NUM == 1 + && a.N_LOCK_STATE == 0 + && b.S_CNTR_CODE != null && b.S_CNTR_CODE.Contains(CntrCodeWith) && c.S_ITEM_CODE == null && a.C_ENABLE == "Y" + ); + loc = query.First(); + + return loc; } @@ -621,16 +621,32 @@ { db.BeginTran(); var lcrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc).ToList(); + //if (!string.IsNullOrEmpty(location.S_NOTE) && lcrList.Count > 0) + //{ + // if (location.S_NOTE == "鍙犵洏" || location.S_NOTE.Trim() == "鐗囪兌鍫嗗彔浣�) + // { + // LogHelper.Info("鍙犵洏璐т綅鍒犻櫎鎵樼洏"); + // cntrs = lcrList.Select(a => a.S_CNTR_CODE).ToList(); + + // } + //} + if (lcrList.Count > 0) + { + cntrs = lcrList.Select(a => a.S_CNTR_CODE).ToList(); + } + LogHelper.Info($"BindingLoc锛氬紑濮嬭В缁戝鍣細{cntrs}"); var count = db.Deleteable<LocCntrRel>().Where(it => cntrs.Contains(it.S_CNTR_CODE.Trim()) && it.S_LOC_CODE.Trim() == loc).ExecuteCommand(); location.N_CURRENT_NUM = lcrList.Count - count; location.S_LOCK_STATE = "鏃�; location.N_LOCK_STATE = 0; db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); + LogHelper.Info($"BindingLoc锛氳В缁戝鍣細{cntrs}锛屾垚鍔�); db.CommitTran(); res = true; } catch (Exception ex) { + LogHelper.Info($"BindingLoc Error:{ex}"); db.RollbackTran(); } return res; -- Gitblit v1.9.1