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

---
 api/ApiHelper.cs |  315 +++++++++++++---------------------------------------
 1 files changed, 80 insertions(+), 235 deletions(-)

diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index 8708fea..35fe089 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -26,6 +26,7 @@
         /// <returns></returns>
         public static SimpleResult GoodpackOffline(GoodpackOfflineInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+
             var taskInfo = ETask.M婊$涓嬬嚎鍏ュ簱.Info();
             const string preLog = "API:婊$涓嬬嚎鍏ュ簱:";
             const string cntrType = "濂借繍绠�;
@@ -43,7 +44,7 @@
                 }
 
                 // 鏌ヨ璧风偣璐т綅:鏁伴噺=0
-                var startLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && l.S_CODE == model.StartLoc && taskInfo.StartAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First();
+                var startLoc = QueryHelper.GetLoc(db, 0, model.StartLoc, taskInfo.StartAreas, 0).First();
                 if (startLoc == null) {
                     return NewSimpleResult(2, preLog + $"娌℃湁鎵惧埌璧风偣璐т綅'{model.StartLoc}'!瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=0,鎵�湪搴撳尯={LogObject(taskInfo.StartAreas)}");
                 }
@@ -52,7 +53,7 @@
                 var old = WCSHelper.GetLocCntrCg(cgDetail.S_CNTR_CODE, skipCgDetail: true);
 
                 // 缁戝畾璐т綅瀹瑰櫒,璧风偣璐т綅褰撳墠鏁伴噺=1
-                var locCntrRel = WCSHelper.BindLocCntr(ref startLoc, cgDetail.S_CNTR_CODE);
+                var locCntrRel = WCSHelper.BindLocCntr(startLoc, cgDetail.S_CNTR_CODE);
                 locCntrRel.S_CNTR_TYPE = cntrType;
 
                 // 鏌ヨ缁堢偣璐т綅
@@ -62,44 +63,16 @@
                     return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=0,鎵�湪搴撳尯={LogObject(taskInfo.EndAreas)}");
                 }
 
-                // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟
                 var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
-                
-                using (var tran = db.Ado.UseTran()) {
-                    // 鍒犻櫎/鏇存柊鏃璐т綅/瀹瑰櫒/鐗╂枡]淇℃伅
-                    if (old.LocCntrRel != null && db.Deleteable(old.LocCntrRel).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃ц揣浣嶅鍣ㄥ叧绯籡澶辫触!鏁版嵁:{LogObject(old.LocCntrRel)}");
-                    }
-                    if (old.Location != null && db.Updateable(old.Location).UpdateColumns(l => new { l.N_CURRENT_NUM, l.T_MODIFY }).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鏇存柊[鏃ц揣浣峾褰撳墠瀹瑰櫒鏁伴噺]澶辫触!璐т綅='{old.Location.S_CODE}',鏁伴噺=>{old.Location.N_CURRENT_NUM}");
-                    }
 
-                    // 鎻掑叆鏂扮粦瀹氱殑[璐т綅-瀹瑰櫒]琛�-                    if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鎻掑叆[瀹瑰櫒璐т綅缁戝畾琛╙澶辫触!鏁版嵁:{LogObject(locCntrRel)}");
-                    }
-
-                    // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟
-                    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 NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{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 NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                    }
-                    if (db.Insertable(task).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                    }
-
-                    // 鎻愪氦鏁版嵁搴撴洿鏀�-                    tran.CommitTran();
-                    return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                }
+                var (ok, msg) = DbTranHelper.CreateTask(new CreateTaskObj {
+                    Old = old,
+                    New = new LocCntrCg { LocCntrRel = locCntrRel },
+                    StartLocToUpdate = startLoc,
+                    EndLocToUpdate = endLoc,
+                    TaskToInsert = task,
+                });
+                return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
                 return NewSimpleResult(ex, preLog);
@@ -113,6 +86,7 @@
         /// <returns></returns>
         public static SimpleResult EmptyInboundPallet(EmptyInboundInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+
             var taskInfo = ETask.K绌烘墭鍏ュ簱.Info();
             const string preLog = "API:绌烘墭鍏ュ簱:";
             const string cntrType = "鎵樼洏";
@@ -137,7 +111,7 @@
                 var old = WCSHelper.GetLocCntrCg(model.CntrCode);
 
                 // 缁戝畾璐т綅瀹瑰櫒,璧风偣璐т綅褰撳墠鏁伴噺=1
-                var locCntrRel = WCSHelper.BindLocCntr(ref startLoc, cntr.S_CODE);
+                var locCntrRel = WCSHelper.BindLocCntr(startLoc, cntr.S_CODE);
                 locCntrRel.S_CNTR_TYPE = cntrType;
 
                 // 鏌ヨ缁堢偣璐т綅
@@ -150,45 +124,14 @@
                 // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟
                 var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
 
-                using (var tran = db.Ado.UseTran()) {
-                    if (old.CgDetail != null && db.Deleteable(old.CgDetail).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃х墿鏂欎俊鎭痌澶辫触!鏁版嵁:{LogObject(old.CgDetail)}");
-                    }
-
-                    if (old.LocCntrRel != null && db.Deleteable(old.LocCntrRel).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃ц揣浣嶅鍣ㄥ叧绯籡澶辫触!鏁版嵁:{LogObject(old.LocCntrRel)}");
-                    }
-
-                    if (old.Location != null && db.Updateable(old.Location).UpdateColumns(l => new { l.N_CURRENT_NUM, l.T_MODIFY }).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鏇存柊[鏃ц揣浣峾褰撳墠瀹瑰櫒鏁伴噺]澶辫触!璐т綅='{old.Location.S_CODE}',鏁伴噺=>{old.Location.N_CURRENT_NUM}");
-                    }
-
-                    if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鎻掑叆[璐т綅瀹瑰櫒缁戝畾琛╙澶辫触!鏁版嵁:{LogObject(locCntrRel)}");
-                    }
-
-                    // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟
-                    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 NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{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 NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                    }
-                    if (db.Insertable(task).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                    }
-
-                    // 鎻愪氦鏁版嵁搴撴洿鏀�-                    tran.CommitTran();
-                    return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                }
+                var (ok, msg) = DbTranHelper.CreateTask(new CreateTaskObj {
+                    Old = old,
+                    New = new LocCntrCg { LocCntrRel = locCntrRel },
+                    StartLocToUpdate = startLoc,
+                    EndLocToUpdate = endLoc,
+                    TaskToInsert = task,
+                });
+                return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
                 return NewSimpleResult(ex, preLog);
@@ -201,6 +144,7 @@
         /// <returns></returns>
         public static SimpleResult EmptyInboundGoodpack(EmptyInboundInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+
             var taskInfo = ETask.K绌虹鍏ュ簱.Info();
             const string preLog = "API:绌虹鍏ュ簱:";
             const string cntrType = "濂借繍绠�;
@@ -225,7 +169,7 @@
                 var old = WCSHelper.GetLocCntrCg(model.CntrCode);
 
                 // 缁戝畾璐т綅瀹瑰櫒,璧风偣璐т綅褰撳墠鏁伴噺=1
-                var locCntrRel = WCSHelper.BindLocCntr(ref startLoc, model.CntrCode);
+                var locCntrRel = WCSHelper.BindLocCntr(startLoc, model.CntrCode);
                 locCntrRel.S_CNTR_TYPE = cntrType;
 
                 // 鏌ヨ缁堢偣璐т綅
@@ -237,43 +181,14 @@
 
                 var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
 
-                using (var tran = db.Ado.UseTran()) {
-                    if (old.CgDetail != null && db.Deleteable(old.CgDetail).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃х墿鏂欎俊鎭痌澶辫触!鏁版嵁:{LogObject(old.CgDetail)}");
-                    }
-                    if (old.LocCntrRel != null && db.Deleteable(old.LocCntrRel).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃ц揣浣嶅鍣ㄥ叧绯籡澶辫触!鏁版嵁:{LogObject(old.LocCntrRel)}");
-                    }
-                    if (old.Location != null && db.Updateable(old.Location).UpdateColumns(l => new { l.N_CURRENT_NUM, l.T_MODIFY }).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鏇存柊[鏃ц揣浣峾褰撳墠瀹瑰櫒鏁伴噺]澶辫触!璐т綅='{old.Location.S_CODE}',鏁伴噺=>{old.Location.N_CURRENT_NUM}");
-                    }
-
-                    if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鎻掑叆[璐т綅瀹瑰櫒鍏崇郴]澶辫触:" + LogObject(locCntrRel));
-                    }
-
-                    // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟
-                    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 NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{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 NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                    }
-                    if (db.Insertable(task).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                    }
-
-                    // 鎻愪氦鏁版嵁搴撴洿鏀�-                    tran.CommitTran();
-                    return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                }
+                var (ok, msg) = DbTranHelper.CreateTask(new CreateTaskObj {
+                    Old = old,
+                    New = new LocCntrCg { LocCntrRel = locCntrRel },
+                    StartLocToUpdate = startLoc,
+                    EndLocToUpdate = endLoc,
+                    TaskToInsert = task,
+                });
+                return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
                 return NewSimpleResult(ex, preLog);
@@ -287,6 +202,7 @@
         /// <returns></returns>
         public static SimpleResult EmptyOnlinePallet(EmptyOnlinePalletInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+
             var taskInfo = ETask.K绌烘墭涓婄嚎鍑哄簱.Info();
             const string preLog = "API:绌烘墭涓婄嚎鍑哄簱:";
             const string cntrType = "鎵樼洏";
@@ -327,32 +243,21 @@
 
                 var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName);
 
-                cntr.S_SOURCE = task.S_CODE; // 鐢ㄤ换鍔″彿浣滀负瀹瑰櫒鏇存柊鐨勪緷鎹�-                cntr.T_MODIFY = DateTime.Now;
-
-                using (var tran = db.Ado.UseTran()) {
-                    if (needUpdateContainer && db.Updateable(cntr).UpdateColumns(c => new { c.S_SPEC, c.S_SOURCE, c.T_MODIFY }).ExecuteCommand() <= 0) {
-                        return NewSimpleResult(500, preLog + $"鏇存柊[瀹瑰櫒琛╙澶辫触!鏁版嵁:{LogObject(cntr)}");
-                    }
-
-                    // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟
-                    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 NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{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 NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                    }
-                    if (db.Insertable(task).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                    }
-
-                    // 鎻愪氦鏁版嵁搴撴洿鏀�-                    tran.CommitTran();
-                    return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
+                if (needUpdateContainer) {
+                    cntr.S_SOURCE = task.S_CODE; // 鐢ㄤ换鍔″彿浣滀负瀹瑰櫒鏇存柊鐨勪緷鎹�+                    cntr.T_MODIFY = DateTime.Now;
                 }
+                else {
+                    cntr = null;
+                }
+
+                var (ok, msg) = DbTranHelper.CreateTask(new CreateTaskObj {
+                    ContainerToUpdate = cntr,
+                    StartLocToUpdate = startLoc,
+                    EndLocToUpdate = endLoc,
+                    TaskToInsert = task,
+                });
+                return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
                 return NewSimpleResult(ex, preLog);
@@ -366,6 +271,7 @@
         /// <returns></returns>
         public static SimpleResult EmptyOnlineGoodpack(EmptyOnlineGoodpackInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+
             var taskInfo = ETask.K绌虹涓婄嚎鍑哄簱.Info();
             const string preLog = "API:绌虹涓婄嚎鍑哄簱:";
             const string cntrType = "濂借繍绠�;
@@ -392,25 +298,12 @@
 
                 var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName);
 
-                using (var tran = db.Ado.UseTran()) {
-                    // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟
-                    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 NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{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 NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                    }
-                    if (db.Insertable(task).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                    }
-
-                    // 鎻愪氦鏁版嵁搴撴洿鏀�-                    tran.CommitTran();
-                    return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                }
+                var (ok, msg) = DbTranHelper.CreateTask(new CreateTaskObj {
+                    StartLocToUpdate = startLoc,
+                    EndLocToUpdate = endLoc,
+                    TaskToInsert = task,
+                });
+                return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
                 return NewSimpleResult(ex, preLog);
@@ -424,6 +317,7 @@
         /// <returns></returns>
         public static SimpleResult QualifiedBack(QualifiedBackInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+
             var taskInfo = ETask.C鎶芥鍚堟牸鍥炲簱.Info();
             const string preLog = "API:鎶芥鍚堟牸鍥炲簱";
 
@@ -457,30 +351,13 @@
                 var cntId = locCntrRel.S_CNTR_CODE;
                 var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskInfo.TaskName);
 
-                using (var tran = db.Ado.UseTran()) {
-                    if (db.Updateable(cgDetail).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE, it.T_MODIFY }).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鏇存柊[鐗╂枡鏄庣粏琛╙澶辫触!鐗╂枡鍙�'{cgDetail.S_ITEM_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 NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{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 NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                    }
-                    if (db.Insertable(task).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                    }
-
-                    // 鎻愪氦鏁版嵁搴撴洿鏀�-                    tran.CommitTran();
-                    return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                }
+                var (ok, msg) = DbTranHelper.CreateTask(new CreateTaskObj {
+                    CgDetailToUpdate = cgDetail,
+                    StartLocToUpdate = startLoc,
+                    EndLocToUpdate = endLoc,
+                    TaskToInsert = task,
+                });
+                return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
                 return NewSimpleResult(ex, preLog);
@@ -494,6 +371,7 @@
         /// <returns></returns>
         public static SimpleResult UnqualifiedShift(UnqualifiedShiftInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+
             var taskInfo = ETask.C鎶芥涓嶅悎鏍肩Щ搴�Info();
             const string preLog = "API:鎶芥涓嶅悎鏍肩Щ搴�";
 
@@ -529,30 +407,13 @@
 
                 var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
 
-                using (var tran = db.Ado.UseTran()) {
-                    if (db.Updateable(cgDetail).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE }).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鏇存柊[璐у搧鏄庣粏琛╙澶辫触!鐗╂枡鍙�'{cgDetail}',鐗╂枡鐘舵�=>'{cgDetail.S_ITEM_STATE}'");
-                    }
-
-                    // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟
-                    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 NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{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 NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                    }
-                    if (db.Insertable(task).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                    }
-
-                    // 鎻愪氦鏁版嵁搴撴洿鏀�-                    tran.CommitTran();
-                    return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                }
+                var (ok, msg) = DbTranHelper.CreateTask(new CreateTaskObj {
+                    CgDetailToUpdate = cgDetail,
+                    StartLocToUpdate = startLoc,
+                    EndLocToUpdate = endLoc,
+                    TaskToInsert = task,
+                });
+                return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
                 return NewSimpleResult(ex, preLog);
@@ -566,6 +427,7 @@
         /// <returns></returns>
         public static SimpleResult RestBack(RestBackInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+
             var taskInfo = ETask.W灏炬枡鍥炲簱.Info();
             const string preLog = "API:灏炬枡鍥炲簱:";
             
@@ -586,34 +448,14 @@
                     return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=0,鎵�湪搴撳尯={LogObject(endAreas)}");
                 }
 
-                var cntId = locCntrRel.S_CNTR_CODE;
+                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName);
 
-                var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskInfo.TaskName);
-
-                using (var tran = db.Ado.UseTran()) {
-                    //if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) {
-                    //    tran.RollbackTran();
-                    //    return NewSimpleResult(500, preLog + $"鎻掑叆[瀹瑰櫒璐т綅缁戝畾琛╙澶辫触!鏁版嵁:{LogObject(locCntrRel)}");
-                    //}
-
-                    // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟
-                    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 NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{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 NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                    }
-                    if (db.Insertable(task).ExecuteCommand() <= 0) {
-                        tran.RollbackTran();
-                        return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                    }
-
-                    // 鎻愪氦鏁版嵁搴撴洿鏀�-                    tran.CommitTran();
-                    return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                }
+                var (ok, msg) = DbTranHelper.CreateTask(new CreateTaskObj {
+                    StartLocToUpdate = startLoc,
+                    EndLocToUpdate = endLoc,
+                    TaskToInsert = task,
+                });
+                return NewSimpleResult(ok ? 0 : 500, preLog + msg);
             }
             catch (Exception ex) {
                 return NewSimpleResult(ex, preLog);
@@ -627,6 +469,7 @@
         /// <returns></returns>
         public static SimpleResult FinishedOutbound(FinishedOutboundInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+
             var taskInfo = ETask.C鎴愬搧鑳跺嚭搴�Info();
             const string preLog = "API:鎴愬搧鑳跺嚭搴�";
 
@@ -687,6 +530,8 @@
         /// <returns></returns>
         public static SimpleResult FinishedOutboundForce(FinishedOutboundInfo model) {
             var db = new SqlHelper<object>().GetInstance();
+            var (ok, msg) = (false, string.Empty);
+
             var taskInfo = ETask.C鎴愬搧鑳跺嚭搴�Info();
             const string preLog = "API:鎴愬搧鑳跺嚭搴�";
 

--
Gitblit v1.9.1