From 63e94e068622d4ef843cee0d19d4f2d231316304 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 25 七月 2025 17:20:38 +0800 Subject: [PATCH] 完善查询语句, 日志记录的封装 --- process/TaskProcess.cs | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 163 insertions(+), 5 deletions(-) diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index 4151c3f..314d728 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -23,12 +23,12 @@ if (load) { Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚,璧风偣瑙g粦瀹瑰櫒{mst.S_CNTR_CODE}"); LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚,璧风偣瑙g粦瀹瑰櫒{mst.S_CNTR_CODE}"); - LocationHelper.UnbindLocCntr(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList()); + UnbindLocCntr(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList()); } else { Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚,缁堢偣缁戝畾瀹瑰櫒{mst.S_CNTR_CODE}"); LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚,缁堢偣缁戝畾瀹瑰櫒{mst.S_CNTR_CODE}"); - LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); + BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); } } @@ -42,13 +42,13 @@ //鏍规嵁瀹㈡埛鐜板満瑕佹眰,濡傛灉鍙栬揣瀹屾垚浠诲姟澶辫触浜哄伐鎷夊埌缁堢偣,鎴戜滑灏卞綋鍗歌揣瀹屾垚澶勭悊;濡傛灉鏄汉宸ユ媺璧板埌鍏跺畠鍖哄煙,鎴戜滑灏辫В閿佺粓鐐�鍒犻櫎鎵樼洏銆� //缁堢偣缁戝畾 BufferLocUpdate(mst, false); - LocationHelper.UnLockLoc(mst.S_END_LOC); + UnLockLoc(mst.S_END_LOC); } else { //璧风偣缁堢偣瑙i攣 - LocationHelper.UnLockLoc(mst.S_START_LOC); - LocationHelper.UnLockLoc(mst.S_END_LOC); + UnLockLoc(mst.S_START_LOC); + UnLockLoc(mst.S_END_LOC); } @@ -99,6 +99,164 @@ } } + /// <summary> + /// 鍙栬揣瀹岃В閿佽捣鐐�鍗歌揣瀹岃В閿佺粓鐐�鍙楠岄攣鐨勬潵婧�涔熷彲浠ヤ笉鏍¢獙 + /// </summary> + /// <param name="loc"></param> + /// <returns></returns> + public static bool UnLockLoc(string loc) { + LogHelper.Info("UnLockLoc:" + loc); + var res = false; + var db = new SqlHelper<object>().GetInstance(); + var model = db.Queryable<TN_Location>().Where(a => a.S_CODE == loc).First(); + if (model != null) { + model.S_LOCK_STATE = "鏃�; + model.N_LOCK_STATE = 0; + model.S_LOCK_OP = ""; + model.T_MODIFY = System.DateTime.Now; + res = db.Updateable(model).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() > 0; + LogHelper.Info("UnLockLoc:瑙i攣缁撴灉" + res); + } + else { + LogHelper.Info("UnLockLoc 澶辫触" + loc); + } + return res; + } + + /// <summary> + /// 璐т綅瑙g粦瀹瑰櫒 + /// </summary> + /// <param name="loc"></param> + /// <param name="cntrs"></param> + /// <returns></returns> + public static string UnbindLocCntr(string loc, List<string> cntrs) { + var db = new SqlHelper<object>().GetInstance(); + var logs = $"璐т綅:{loc},瀹瑰櫒:{JsonConvert.SerializeObject(cntrs)}"; + try { + var lcrList = db.Queryable<TN_Loc_Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE) && a.S_LOC_CODE == loc).ToList(); + if (lcrList.Count == 0) { + LogHelper.Info($"璐т綅鏃犻渶瑙g粦瀹瑰櫒,鍦ㄦ暟鎹簱涓湭鎵惧埌{JsonConvert.SerializeObject(cntrs)}鐩稿叧鐨勮揣浣嶅鍣ㄥ叧绯昏〃淇℃伅"); + } + cntrs = lcrList.Select(a => a.S_CNTR_CODE).ToList(); + + var log = JsonConvert.SerializeObject(cntrs); + var location = db.Queryable<TN_Location>().First(a => a.S_CODE == loc); + if (location != null) { + location.N_CURRENT_NUM = 0; + location.S_LOCK_STATE = "鏃�; + location.N_LOCK_STATE = 0; + + using (var tran = db.Ado.UseTran()) { + if (db.Deleteable<TN_Loc_Container>().Where(it => cntrs.Contains(it.S_CNTR_CODE) && it.S_LOC_CODE == loc).ExecuteCommand() > 0) { + LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔�{log}"); + } + else { + tran.RollbackTran(); + + LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�{log}"); + + return "璐т綅瑙g粦瀹瑰櫒澶辫触," + logs; + } + + log = JsonConvert.SerializeObject(location); + if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0) { + tran.CommitTran(); + + LogHelper.Info($"鏇存柊璐т綅琛ㄦ垚鍔�{log}"); + } + else { + tran.RollbackTran(); + + LogHelper.Info($"鏇存柊璐т綅琛ㄥけ璐�{log}"); + + return "璐т綅瑙g粦瀹瑰櫒澶辫触," + logs; + } + } + } + else { + LogHelper.Info($"鍦ㄦ暟鎹簱涓湭鎵惧埌璇ヨ揣浣�鏃犻渶鏇存柊,璐т綅:{loc}"); + } + return "璐т綅瑙g粦瀹瑰櫒鎴愬姛," + logs; + } + catch (Exception ex) { + LogHelper.Info($"鍙戠敓浜嗗紓甯�璐т綅瑙g粦瀹瑰櫒澶辫触,{ex.Message}"); + return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs; + } + } + + /// <summary> + /// 璐т綅缁戝畾瀹瑰櫒 + /// </summary> + /// <param name="loc"></param> + /// <param name="cntrs"></param> + /// <returns></returns> + public static string BindingLoc(string loc, List<string> cntrs) { + var db = new SqlHelper<object>().GetInstance(); + var logs = $"璐т綅:{loc},瀹瑰櫒:{JsonConvert.SerializeObject(cntrs)}"; + try { + // 鍒犻櫎宸茬粡缁戝畾杩囩殑瀹瑰櫒璁板綍 + var lcrList = db.Queryable<TN_Loc_Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE) && a.S_LOC_CODE == loc).ToList(); + if (lcrList.Count > 0) { + cntrs = cntrs.Except(lcrList.Select(a => a.S_CNTR_CODE).ToList()).ToList(); + } + + var bindLocCntList = new List<TN_Loc_Container>(); + foreach (var item in cntrs) { + // 閽堝瀹瑰櫒绫诲瀷娣诲姞鐨勬柊閫昏緫 + var cntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == item).First(); + + if (cntr == null) { + LogHelper.Info($"璐т綅瑙g粦鏃�瀹瑰櫒{item}娌℃湁鍦ㄥ鍣ㄤ俊鎭〃涓煡鍒�涓嶈褰曞鍣ㄧ被鍨�); + bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item }); + } + else { + bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item, S_CNTR_TYPE = cntr.S_TYPE }); + } + } + + var log = JsonConvert.SerializeObject(bindLocCntList); + + using (var tran = db.Ado.UseTran()) { + if (db.Insertable(bindLocCntList).ExecuteCommand() <= 0) { + db.RollbackTran(); + LogHelper.Info($"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�{log}"); + return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs; + } + LogHelper.Info($"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔�{log}"); + + var location = db.Queryable<TN_Location>().First(a => a.S_CODE == loc); + if (location != null) { + location.N_CURRENT_NUM += cntrs.Count; + location.S_LOCK_STATE = "鏃�; + location.N_LOCK_STATE = 0; + log = JsonConvert.SerializeObject(location); + + if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0) { + db.CommitTran(); + + LogHelper.Info($"鏇存柊璐т綅琛ㄦ垚鍔�{log}"); + } + else { + db.RollbackTran(); + + LogHelper.Info($"鏇存柊璐т綅琛ㄥけ璐�{log}"); + + return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs; + } + } + else { + db.RollbackTran(); + LogHelper.Info($"鏈壘鍒拌璐т綅{loc},鎴栬�宸查攣瀹�{log}"); + } + } + return "璐т綅缁戝畾瀹瑰櫒鎴愬姛," + logs; + } + catch (Exception ex) { + LogHelper.Info($"鍙戠敓浜嗗紓甯�璐т綅缁戝畾瀹瑰櫒澶辫触,"); + return "璐т綅缁戝畾瀹瑰櫒澶辫触," + ex.Message; + } + } + private static object locLocker = new object(); -- Gitblit v1.9.1