From fc6dd85a865c4cadae0b9a07d56e2988d2262f10 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期二, 22 七月 2025 17:28:52 +0800
Subject: [PATCH] 优化数据库事务帮助类 , 查询/日志生成类

---
 wms/DbTranHelper.cs |   87 +++++++++++++++++++++++++++++--------------
 1 files changed, 58 insertions(+), 29 deletions(-)

diff --git a/wms/DbTranHelper.cs b/wms/DbTranHelper.cs
index bbfb2da..6a7ea13 100644
--- a/wms/DbTranHelper.cs
+++ b/wms/DbTranHelper.cs
@@ -19,59 +19,75 @@
         /// <summary>
         /// 鏁版嵁搴撲簨鍔″鐞�( 鍒涘缓浠诲姟 )
         /// </summary>
-        /// <remarks>瑕佹眰: obj != null</remarks>
+        /// <remarks><b>[ 瑕佹眰 ]</b> obj 鈮�null<br/>
+        /// <b>[ 娉ㄦ剰 ]</b> 鎵�湁鐨勬暟鎹簱鎿嶄綔 , 閮戒細鍦ㄥ璞�= null 鏃堕�鎷╄烦杩�, 涓斾笉浼氭姤閿�, 闄や簡 TaskToInsert ;
+        /// <br/>濡傛灉瀛樺湪鏌愪釜蹇呴』瀹屾垚鐨勬暟鎹簱鎿嶄綔 , 闇�湪璋冪敤鏃剁‘淇濊瀵硅薄 鈮�null</remarks>
         /// <param name="obj"></param>
         /// <returns></returns>
-        public static (bool Success, string Message) DoDbTranTask(DbTranTaskObj obj) {
+        public static (bool, string) CreateTask(CreateTaskObj obj) {
             var db = new SqlHelper<object>().GetInstance();
             try {
                 using (var tran = db.Ado.UseTran()) {
-                    // 瀛樺湪[鏃瀹瑰櫒鍏宠仈淇℃伅:鍒犻櫎[鏃[瀹瑰櫒璐у搧鏄庣粏][璐т綅瀹瑰櫒鍏崇郴],鏇存柊[璐т綅][瀹瑰櫒鏁伴噺]
+                    // 鏇存柊[瀹瑰櫒琛╙(涓氬姟闇�)
+                    if (obj.ContainerToUpdate != null && db.Updateable(obj.ContainerToUpdate).UpdateColumns(c => new { c.S_SPEC, c.S_SOURCE, c.T_MODIFY }).ExecuteCommand() <= 0) {
+                        return (false, $"鏇存柊[瀹瑰櫒][瑙勬牸(鐗╂枡缂栫爜)]澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.ContainerToUpdate)}\n");
+                    }
+
+                    // 鏇存柊[瀹瑰櫒璐у搧鏄庣粏](涓氬姟闇�)
+                    if (obj.CgDetailToUpdate != null && db.Updateable(obj.CgDetailToUpdate).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE, it.T_MODIFY }).ExecuteCommand() <= 0) {
+                        tran.RollbackTran();
+                        return (false, $"鏇存柊[瀹瑰櫒璐у搧鏄庣粏][鐗╂枡鐘舵�]澶辫触!!鐗╂枡鍙�'{obj.CgDetailToUpdate}',鐗╂枡鐘舵�=>'{obj.CgDetailToUpdate.S_ITEM_STATE}'");
+                    }
+
+                    #region 鍒犻櫎[鏃瀹瑰櫒缁戝畾淇℃伅
                     if (obj.Old != null) {
                         if (obj.Old.CgDetail != null && db.Deleteable(obj.Old.CgDetail).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            return (false, $"鍒犻櫎[鏃х墿鏂欎俊鎭痌澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.Old.CgDetail)}\n");
+                            return (false, $"鍒犻櫎[鏃у鍣ㄨ揣鍝佹槑缁哴澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.Old.CgDetail)}\n");
                         }
                         if (obj.Old.LocCntrRel != null && db.Deleteable(obj.Old.LocCntrRel).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            return (false, $"鍒犻櫎[鏃ц揣浣嶅鍣ㄥ叧绯籡澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.Old.LocCntrRel)}\n");
+                            return (false, $"鍒犻櫎[鏃ц揣浣嶅鍣ㄧ粦瀹歖澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.Old.LocCntrRel)}\n");
                         }
                         if (obj.Old.Location != null && db.Updateable(obj.Old.Location).UpdateColumns(l => new { l.N_CURRENT_NUM, l.T_MODIFY }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             return (false, $"鏇存柊[鏃ц揣浣峕[褰撳墠瀹瑰櫒鏁伴噺]澶辫触!!璐т綅='{obj.Old.Location.S_CODE}',鏁伴噺=>{obj.Old.Location.N_CURRENT_NUM}");
                         }
                     }
+                    #endregion
 
-                    // 鏇存柊[瀹瑰櫒琛╙(涓氬姟闇�)
-                    if (obj.ContainerToUpdate != null && db.Updateable(obj.ContainerToUpdate).UpdateColumns(c => new { c.S_SPEC, c.S_SOURCE, c.T_MODIFY }).ExecuteCommand() <= 0) {
-                        return (false, $"鏇存柊[瀹瑰櫒琛╙澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.ContainerToUpdate)}\n");
+                    #region 娣诲姞[鏂癩瀹瑰櫒缁戝畾淇℃伅
+                    if (obj.New != null) {
+                        if (obj.New.CgDetail != null && db.Insertable(obj.New.CgDetail).ExecuteCommand() <= 0) {
+                            tran.RollbackTran();
+                            return (false, $"鎻掑叆[鏂板鍣ㄨ揣鍝佹槑缁哴澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.New.CgDetail)}\n");
+                        }
+                        if (obj.New.LocCntrRel != null && db.Insertable(obj.New.LocCntrRel).ExecuteCommand() <= 0) {
+                            tran.RollbackTran();
+                            return (false, $"鎻掑叆[鏃ц揣浣嶅鍣ㄧ粦瀹歖澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.New.LocCntrRel)}\n");
+                        }
+                        // 鏂拌揣浣嶄俊鎭�甯稿氨鏄�StartLoc , 鍦�StartLocToUpdate 涓鐞嗗嵆鍙�                     }
+                    #endregion
 
-                    // 鏇存柊[瀹瑰櫒璐у搧鏄庣粏](涓氬姟闇�)
-                    if (obj.CgDetailToUpdate != null && db.Updateable(obj.CgDetailToUpdate).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE, it.T_MODIFY }).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return (false, $"鏇存柊[鐗╂枡鏄庣粏琛╙澶辫触!!鐗╂枡鍙�'{obj.CgDetailToUpdate}',鐗╂枡鐘舵�=>'{obj.CgDetailToUpdate.S_ITEM_STATE}'");
-                    }
-
-                    // 瀛樺湪[鏂癩[璐т綅瀹瑰櫒缁戝畾鍏崇郴]:鎻掑叆[璐т綅瀹瑰櫒鍏崇郴琛╙
-                    if (obj.LocCntrRelToInsert != null && db.Insertable(obj.LocCntrRelToInsert).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return (false, $"鎻掑叆[瀹瑰櫒璐т綅缁戝畾琛╙澶辫触!!鏁版嵁:\n\n{JsonConvert.SerializeObject(obj.LocCntrRelToInsert)}\n");
-                    }
-
-                    // 鏇存柊[璧风偣][缁堢偣][閿佺姸鎬乚,鍒涘缓[浠诲姟]
+                    #region 鍒涘缓浠诲姟 + 璐т綅閿�                     if (obj.StartLocToUpdate != null && db.Updateable(obj.StartLocToUpdate).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 (false, $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!!璧风偣='{obj.StartLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.StartLocToUpdate.S_LOCK_STATE}'");
+                        return (false, $"鏇存柊[璧风偣璐т綅][閿佺姸鎬乚澶辫触!!璧风偣='{obj.StartLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.StartLocToUpdate.S_LOCK_STATE}'");
                     }
                     if (obj.EndLocToUpdate != null && db.Updateable(obj.EndLocToUpdate).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        return (false, $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!!缁堢偣='{obj.EndLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.EndLocToUpdate.S_LOCK_STATE}'");
+                        return (false, $"鏇存柊[缁堢偣璐т綅][閿佺姸鎬乚澶辫触!!缁堢偣='{obj.EndLocToUpdate.S_CODE}',閿佺姸鎬�>'{obj.EndLocToUpdate.S_LOCK_STATE}'");
                     }
-                    if (obj.TaskToInsert != null && db.Insertable(obj.TaskToInsert).ExecuteCommand() <= 0) {
+                    if (obj.TaskToInsert == null) {
+                        tran.RollbackTran();
+                        throw new ArgumentException("鏁版嵁搴撲簨鍔″鐞�寰呮彃鍏ョ殑[浠诲姟]涓虹┖!!"); // 寰呮彃鍏ョ殑浠诲姟涓嶅瓨鍦�鐩存帴鎶涘嚭寮傚父
+                    }
+                    if (db.Insertable(obj.TaskToInsert).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
                         return (false, $"鐢熸垚浠诲姟'{obj.TaskToInsert.S_TYPE}'澶辫触!!浠诲姟鍙�'{obj.TaskToInsert.S_CODE}',瀹瑰櫒鍙�'{obj.TaskToInsert.S_CNTR_CODE}',璧风偣='{obj.TaskToInsert.S_START_LOC}',缁堢偣='{obj.TaskToInsert.S_END_LOC}'");
                     }
+                    #endregion
 
                     // 鎻愪氦鏁版嵁搴撴洿鏀�                     tran.CommitTran();
@@ -84,14 +100,27 @@
         }
     }
 
-    public class DbTranTaskObj {
-        public LocCntrCg Old { get; set; } = null;
-        public TN_Container ContainerToUpdate { get; set; } = null;
-        public TN_CG_Detail CgDetailToUpdate { get; set; } = null;
-        public TN_Loc_Container LocCntrRelToInsert { get; set; } = null;
+    public class CreateTaskObj {
+
+        #region 璧风偣璐т綅 / 缁堢偣璐т綅 / 浠诲姟
         public TN_Location StartLocToUpdate { get; set; } = null;
         public TN_Location EndLocToUpdate { get; set; } = null;
         public TN_Task TaskToInsert { get; set; } = null;
+        #endregion
+
+        #region 瀹瑰櫒缁戝畾淇℃伅 ( 鏃�/ 鏂�)
+        /// <summary>
+        /// [ 鏃�] 瀹瑰櫒缁戝畾淇℃伅 ( 璐т綅 / 璐т綅瀹瑰櫒 / 瀹瑰櫒璐у搧 )
+        /// </summary>
+        public LocCntrCg Old { get; set; } = null;
+        /// <summary>
+        /// [ 鏂�] 瀹瑰櫒缁戝畾淇℃伅 ( 璐т綅 / 璐т綅瀹瑰櫒 / 瀹瑰櫒璐у搧 )
+        /// </summary>
+        public LocCntrCg New { get; set; } = null; 
+        #endregion
+
+        public TN_Container ContainerToUpdate { get; set; } = null;
+        public TN_CG_Detail CgDetailToUpdate { get; set; } = null;
     }
 
 }

--
Gitblit v1.9.1