From fc6dd85a865c4cadae0b9a07d56e2988d2262f10 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期二, 22 七月 2025 17:28:52 +0800 Subject: [PATCH] 优化数据库事务帮助类 , 查询/日志生成类 --- core/WCSCore.cs | 51 ++++++++++++++++++--------------------------------- 1 files changed, 18 insertions(+), 33 deletions(-) diff --git a/core/WCSCore.cs b/core/WCSCore.cs index 801e745..6938961 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -445,6 +445,8 @@ public static void HandleClientRequest(System.Net.Sockets.TcpClient client) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + using (client) using (NetworkStream stream = client.GetStream()) { try { @@ -466,10 +468,11 @@ // B. 濡傛灉鏄瘡鏉′骇绾垮悇涓�釜瀹㈡埛绔�鏇寸畝鍗�鐩存帴鏍规嵁IP鍦板潃纭畾缁堢偣璐т綅 // TODO 鍏蜂綋閫昏緫寰呭悗缁‘瀹氭椂琛ュ畬 - var success = CreateInboundTask(startLocCode, message.CntrCode).Value; + (ok, msg) = CreateInboundTask(startLocCode, message.CntrCode); + LogHelper.Info(msg); // 鍙戦�鍝嶅簲 - string response = success ? "ACK: 鏈哄櫒浜哄凡璋冨害" : "NAK: 璋冨害澶辫触"; + string response = ok ? "ACK: 鏈哄櫒浜哄凡璋冨害" : "NAK: 璋冨害澶辫触"; byte[] responseData = Encoding.UTF8.GetBytes(response); stream.Write(responseData, 0, responseData.Length); } @@ -485,7 +488,7 @@ /// <param name="startLocCode"></param> /// <param name="cntrCode"></param> /// <returns></returns> - public static Result<bool> CreateInboundTask(string startLocCode, string cntrCode) { + public static (bool, string) CreateInboundTask(string startLocCode, string cntrCode) { var db = new SqlHelper<object>().GetInstance(); var taskInfo = Settings.GetTaskInfo(ETask.M婊℃墭涓嬬嚎鍏ュ簱); @@ -501,9 +504,9 @@ .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") //.Where(l => l.N_CURRENT_NUM == 0) // 缁戝畾鍓� .First(); - + if (startLoc == null) { - return NewResult(false, $"娌℃湁鎵惧埌璧风偣璐т綅'{startLocCode}',鎴栦笉婊¤冻瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0"); + return (false, $"娌℃湁鎵惧埌璧风偣璐т綅'{startLocCode}'!!瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0"); } var locCntrRelOld = db.Queryable<TN_Loc_Container>() @@ -524,58 +527,50 @@ .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�:绌鸿揣浣� .OrderBy(l => l.N_LAYER) .First(); - + if (endLoc == null) { - return NewResult(false, $"娌℃湁鎵惧埌鍚堥�鐨勩�缁堢偣璐т綅銆�闇�婊¤冻瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0"); + return (false, $"娌℃湁鎵惧埌鍚堥�鐨刐缁堢偣璐т綅]!!瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0"); } var cntId = locCntrRel.S_CNTR_CODE; - var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - - WCSHelper.LockStartLoc(startLoc); // 璧风偣鍑哄簱閿�- WCSHelper.LockEndLoc(endLoc); // 缁堢偣鍏ュ簱閿�+ var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName); using (var tran = db.Ado.UseTran()) { if (locCntrRelOld != null) { if (db.Deleteable(locCntrRelOld).ExecuteCommand() <= 0 && db.Updateable<TN_Location>().SetColumns(l => l.N_CURRENT_NUM == 0).Where(l => l.S_CODE == locCntrRelOld.S_LOC_CODE).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewResult(false, $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯昏〃澶辫触:璐т綅缂栫爜{locCntrRelOld.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRelOld.S_CNTR_CODE}"); + return (false, $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯昏〃澶辫触:璐т綅缂栫爜{locCntrRelOld.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRelOld.S_CNTR_CODE}"); } } if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewResult(false, $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�璐т綅缂栫爜{locCntrRel.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRel.S_CNTR_CODE}"); + return (false, $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�璐т綅缂栫爜{locCntrRel.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRel.S_CNTR_CODE}"); } if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewResult(false, $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊璧风偣璐т綅{startLoc.S_CODE}閿佺姸鎬佸け璐�); + return (false, $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊璧风偣璐т綅{startLoc.S_CODE}閿佺姸鎬佸け璐�); } if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewResult(false, $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊缁堢偣璐т綅{endLoc.S_CODE}閿佺姸鎬佸け璐�); + return (false, $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊缁堢偣璐т綅{endLoc.S_CODE}閿佺姸鎬佸け璐�); } if (db.Insertable(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewResult(false, $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"); + return (false, $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"); } tran.CommitTran(); - return NewResult(true, $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"); + return (true, $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"); } } catch (Exception ex) { - return NewResult(false, ex.Message); + return (false, ex.Message); } - } - - private static Result<bool> NewResult(bool res, string msg, bool log = true) { - if (log) { LogHelper.Info(msg); } - return new Result<bool>(res, msg); } } @@ -585,15 +580,5 @@ //public string ItemCode { get; set; } //public string BatchNo { get; set; } public string CntrCode { get; set; } - } - - public class Result<T> { - public T Value { get; set; } - public string Content { get; set; } - - public Result(T value, string content) { - Value = value; - Content = content; - } } } -- Gitblit v1.9.1