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