From 9ddec4808631025d36d3c5a816d55ef77a29d4c7 Mon Sep 17 00:00:00 2001 From: lss <2538410689@qq.com> Date: 星期三, 16 七月 2025 17:30:30 +0800 Subject: [PATCH] 111 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs | 126 +++++++++++++++++++++++++++++++++++++++--- 1 files changed, 117 insertions(+), 9 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 ebc2d8b..2e43d3e 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/wms/LocationHelper.cs @@ -210,7 +210,7 @@ /// <param name="lev">鐗╂枡绛夌骇</param> /// <param name="ItemCode">鐗╂枡缂栫爜</param> /// <returns></returns> - internal static List<Location> GetLocByItemCode(string areaCode, string ItemCode, string lev) + internal static List<Location> GetLocByItemCode(string areaCode, string ItemCode, string lev, string powderType) { List<Location> locs; @@ -220,7 +220,7 @@ 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"); + .Where((a, b, c) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.S_AREA_CODE == areaCode); //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆 if (ItemCode.Trim().Length == 6) { @@ -237,7 +237,7 @@ //.Skip(targetIndex) // 璺宠繃楂樹簬鐩爣绛夌骇鐨勭瓑绾� //.ToList(); - LogHelper.Info($"GetLocByItemCode=>鏍规嵁搴撳尯缂栫爜:{areaCode}锛岀墿鏂欑紪鐮�{ItemCode},鐗╂枡浼樺厛绾�{lev}锛岀墿鏂欑瓑绾ц绠楀嚭鏈夋墭鐩樿揣浣峽JsonConvert.SerializeObject(queryable.ToList())}"); + LogHelper.Info($"GetLocByItemCode=>鏍规嵁搴撳尯缂栫爜:{areaCode}锛岀墿鏂欑紪鐮�{ItemCode},鐗╂枡浼樺厛绾�{lev}锛屾満鍙板瀷鍙�{powderType}锛岀墿鏂欑瓑绾ц绠楀嚭鏈夋墭鐩樿揣浣峽JsonConvert.SerializeObject(queryable.ToList())}"); //鍒ゆ柇闇�笉闇�鐗╂枡绛夌骇鏌ユ壘锛屽苟浼樺厛鍑哄簱浣欐枡 if (string.IsNullOrEmpty(lev)) { @@ -247,7 +247,14 @@ { locs = queryable.Where((a, b, c) => c.LEV == lev && c.S_BS_TYPE == "浣欐枡").ToList(); } - // LogHelper.Info($"GetLocByItemCode=>鏌ユ壘浣欐枡,{JsonConvert.SerializeObject(locs)}"); + if (string.IsNullOrEmpty(powderType)) + { + locs = queryable.Where((a, b, c) => c.S_BS_TYPE == "浣欐枡").ToList(); + } + else + { + locs = queryable.Where((a, b, c) => (c.S_FLTYPE == powderType||string.IsNullOrEmpty(c.S_FLTYPE)) && c.S_BS_TYPE == "浣欐枡").ToList(); + } //娌℃湁浣欐枡鍒欏鎵惧叏閮ㄧ墿鏂� if (locs.Count == 0) @@ -255,7 +262,7 @@ 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"); + .Where((a, b, c) => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0 && a.S_AREA_CODE == areaCode ); //鍏綅鐮佸尮閰嶅墠鍏綅锛屽叾浠栫殑鍏ㄩ儴閰嶇疆 if (ItemCode.Trim().Length == 6) { @@ -276,6 +283,14 @@ else { locs = queryable.Where((a, b, c) => c.LEV == lev).ToList(); + } + if (string.IsNullOrEmpty(powderType)) + { + locs = queryable.ToList(); + } + else + { + locs = queryable.Where((a, b, c) => c.S_FLTYPE == powderType || string.IsNullOrEmpty(c.S_FLTYPE)).ToList(); } LogHelper.Info($"GetLocByItemCode=>鏃犱綑鏂�鏌ユ壘鍏ㄩ儴{JsonConvert.SerializeObject(locs)}"); } @@ -310,7 +325,7 @@ .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" + && b.S_CNTR_CODE != null && b.S_CNTR_CODE.Contains(CntrCodeWith) && c.S_ITEM_CODE == null ); loc = query.First(); @@ -332,7 +347,7 @@ Dictionary<int, string> dics = new Dictionary<int, string>(); foreach (var deviceInfo in devices) { - int mst = db.Queryable<WCSTask>().Where(a => a.S_TYPE.Contains("鐢垫") && state.Contains(a.S_B_STATE)).Count(); + int mst = db.Queryable<WCSTask>().Where(a => a.S_TYPE.Contains("鐢垫") && state.Contains(a.S_B_STATE) && a.S_END_LOC == deviceInfo.TN_Location).Count(); dics.Add(mst, deviceInfo.TN_Location); } if (dics.Count > 0) @@ -619,6 +634,7 @@ var location = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First(); try { + LogHelper.Info($"BindingLoc锛氬紑濮嬭В缁戝鍣細{JsonConvert.SerializeObject(cntrs)}"); 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) @@ -634,13 +650,12 @@ { 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}锛屾垚鍔�); + LogHelper.Info($"BindingLoc锛氳В缁戝鍣細{JsonConvert.SerializeObject(cntrs)}鎴愬姛"); db.CommitTran(); res = true; } @@ -653,6 +668,99 @@ } /// <summary> + /// 搴撲綅娓呯┖ + /// </summary> + /// <param name="loc"></param> + /// <param name="cntrs"></param> + /// <returns></returns> + public static bool Clear(string loc, List<string> cntrs) + { + var res = false; + var db = new SqlHelper<object>().GetInstance(); + + try + { + var location = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First(); + if (location == null) + { + LogHelper.Info($"Clear锛氳揣浣嶏細{loc}璐т綅琛ㄦ煡璇㈤敊璇紝璇峰亣鏌ヨ揣浣嶈〃"); + return res; + } + LogHelper.Info($"Clear锛氬紑濮嬭В缁戝鍣細{JsonConvert.SerializeObject(cntrs)}"); + db.BeginTran(); + var lcrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc).ToList(); + if (lcrList.Count > 0) + { + cntrs = lcrList.Select(a => a.S_CNTR_CODE).ToList(); + } + var count = db.Deleteable<LocCntrRel>().Where(it => cntrs.Contains(it.S_CNTR_CODE.Trim()) && it.S_LOC_CODE.Trim() == loc).ExecuteCommand(); + LogHelper.Info($"Clear锛氬紑濮嬪垹闄ゅ鍣細{JsonConvert.SerializeObject(cntrs)}"); + db.Deleteable<Container>().Where(it => cntrs.Contains(it.S_CODE)).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($"Clear锛氬紑濮嬪垹闄ゅ鍣ㄧ墿鏂欙細{JsonConvert.SerializeObject(cntrs)}"); + var CntrItem = db.Queryable<CntrItemDetail>().Where(a => cntrs.Contains(a.S_CNTR_CODE.Trim())).First(); + if (CntrItem != null) + { + db.Deleteable<CntrItemDetail>().Where(it => cntrs.Contains(it.S_CNTR_CODE)).ExecuteCommand(); + } + else + { + LogHelper.Info($"Clear=銆嬫墭鐩�{JsonConvert.SerializeObject(cntrs)}鏃犵墿鏂欐暟鎹�); + + } + LogHelper.Info($"BindingLoc锛氳В缁戝鍣細{JsonConvert.SerializeObject(cntrs)}鎴愬姛"); + db.CommitTran(); + res = true; + } + catch (Exception ex) + { + LogHelper.Info($"BindingLoc Error:{ex}"); + db.RollbackTran(); + } + return res; + } + /// <summary> + /// 瑙i攣璐т綅锛屽垹闄よ揣浣嶆墭鐩�+ /// </summary> + /// <param name="loc"></param> + /// <returns></returns> + public static bool UnlockLocDeleteCntrs(string loc) + { + var res = false; + var db = new SqlHelper<object>().GetInstance(); + List<string> cntrs = null; int count = 0; + var location = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First(); + try + { + db.BeginTran(); + var lcrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc).ToList(); + if (lcrList.Count > 0) + { + cntrs = lcrList.Select(a => a.S_CNTR_CODE).ToList(); + LogHelper.Info($"UnlockLocDeleteCntrs锛氳揣浣峽loc}锛氭煡璇㈢粦瀹氭墭鐩榹cntrs}"); + LogHelper.Info($"UnlockLocDeleteCntrs锛氬紑濮嬪垹闄ゅ鍣細{JsonConvert.SerializeObject(cntrs)}"); + 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.S_LOCK_STATE, it.N_LOCK_STATE, it.N_CURRENT_NUM }).ExecuteCommand(); + db.CommitTran(); + res = true; + } + catch (Exception ex) + { + db.RollbackTran(); + } + return res; + } + /// <summary> /// 瑙i攣璐т綅 /// </summary> /// <param name="loc"></param> -- Gitblit v1.9.1