From 2ca90a404fa1ab94eb6374f50c6ddd47a2b7f0e6 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期四, 31 七月 2025 17:23:57 +0800
Subject: [PATCH] 删除有问题的TCP旧代码, 优化事务处理和ERP数据模型

---
 core/Monitor.cs |  146 ++++++++++++++----------------------------------
 1 files changed, 42 insertions(+), 104 deletions(-)

diff --git a/core/Monitor.cs b/core/Monitor.cs
index da491d5..86fafc7 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -69,7 +69,9 @@
 
         public static void CheckOutboundOrder() {
             var db = new SqlHelper<object>().GetInstance();
-            var taskInfo = Settings.GetTaskInfo(ETask.C鎴愬搧鑳跺嚭搴�;
+            var (ok, msg) = (false, string.Empty);
+
+            var taskInfo = ETask.C鎴愬搧鑳跺嚭搴�Info();
             var taskName = "鍑哄簱";
             const string preLog = "杞:鍑哄簱:";
 
@@ -139,41 +141,22 @@
                     }
                     
                     detail.N_B_STATE = 2;
+                    detail.T_MODIFY = DateTime.Now;
 
-                    var cntId = detail.S_CNTR_CODE;
-
-                    var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName);
+                    var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, detail.S_CNTR_CODE, taskName);
                     task.S_OP_CODE = detail.S_OO_NO;
                     if (string.IsNullOrEmpty(detail.S_BS_NO)) {
                         task.S_BS_NO = detail.S_BS_NO;
                         task.S_BS_TYPE = "ERP";
                     }
 
-                    using (var tran = db.Ado.UseTran()) {
-                        if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
-                            tran.RollbackTran();
-                            LogHelper.Info($"杞:{taskName}:淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚--澶辫触!");
-                            continue;
-                        }
-
-                        // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟
-                        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();
-                            LogHelper.Info(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();
-                            LogHelper.Info(preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                        }
-                        if (db.Insertable(task).ExecuteCommand() <= 0) {
-                            tran.RollbackTran();
-                            LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                        }
-
-                        // 鎻愪氦鏁版嵁搴撴洿鏀�-                        tran.CommitTran();
-                        LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}");
-                    }
+                    (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj {
+                        OutboundDetailToUpdate = detail,
+                        StartLocToUpdate = startLoc,
+                        EndLocToUpdate = endLoc,
+                        TaskToInsert = task,
+                    });
+                    LogHelper.Info(preLog + msg);
 
                     // 濡傛灉褰撳墠鍑哄簱鍗曟槑缁嗘槸ERP涓嬪彂鐨�浠诲姟鍒涘缓瀹屾垚鍙嶉璐т綅淇℃伅
                     if (detail.S_BS_TYPE == "ERP") {
@@ -193,7 +176,9 @@
 
         public static void CheckCheckOrder() {
             var db = new SqlHelper<object>().GetInstance();
-            var taskInfo = Settings.GetTaskInfo(ETask.C鎶芥鍑哄簱);
+            var (ok, msg) = (false, string.Empty);
+
+            var taskInfo = ETask.C鎶芥鍑哄簱.Info();
             var taskName = taskInfo.TaskName;
             const string preLog = "杞:鎶芥:";
 
@@ -250,40 +235,19 @@
                     }
 
                     detail.N_B_STATE = 2;
+                    detail.T_MODIFY = DateTime.Now;
 
                     var cntId = detail.S_CNTR_CODE;
-                    var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName);
+                    var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, cntId, taskName);
                     task.S_OP_CODE = detail.S_OO_NO;
 
-                    using (var tran = db.Ado.UseTran()) {
-                        if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
-                            tran.RollbackTran();
-                            LogHelper.Info(preLog + $"淇敼{taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触!");
-                            continue;
-                        }
-
-                        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();
-                            LogHelper.Info(preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�");
-                            continue;
-                        }
-
-                        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();
-                            LogHelper.Info(preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                            continue;
-                        }
-
-                        if (db.Insertable(task).ExecuteCommand() <= 0) {
-                            tran.RollbackTran();
-                            LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}");
-                            continue;
-                        }
-
-                        tran.CommitTran();
-                        LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}");
-                        continue;
-                    }
+                    (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj {
+                        SpotCheckDetailToUpdate = detail,
+                        StartLocToUpdate = startLoc,
+                        EndLocToUpdate = endLoc,
+                        TaskToInsert = task,
+                    });
+                    LogHelper.Info(preLog + msg);
                 }
             }
             catch (Exception ex) {
@@ -293,7 +257,9 @@
 
         public static void CheckShiftOrder() {                
             var db = new SqlHelper<object>().GetInstance();
-            var taskInfo = Settings.GetTaskInfo(ETask.Y绉诲簱);
+            var (ok, msg) = (false, string.Empty);
+
+            var taskInfo = ETask.Y绉诲簱.Info();
             var taskName = taskInfo.TaskName;
             const string preLog = "杞:绉诲簱:";
             
@@ -337,63 +303,35 @@
                 }
 
                 foreach (var detail in detailList) {
-                    var startLoc = db.Queryable<TN_Location>()
-                        .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE)
-                        .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE)
-                        .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�:鏈笂閿�-                        .Where(l => l.N_CURRENT_NUM == 1)
-                        .First();
+                    var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE)
+                        .Where(DbExpr.StartLoc()).Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE).First();
 
                     if (startLoc == null) {
-                        LogHelper.Info(preLog + $"娌℃湁鎵惧埌缁堢偣璐т綅={detail.S_END_AREA}鐨勭粓鐐硅揣浣�闇�婊¤冻:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0");
+                        LogHelper.Info(preLog + LogMsg.StartLocNotFound() + $"缁戝畾瀹瑰櫒='{detail.S_CNTR_CODE}'");
                         continue;
                     }
 
                     var endLoc = db.Queryable<TN_Location>()
-                        .Where(l => l.S_AREA_CODE == detail.S_END_AREA)
-                        .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�:鏈笂閿�-                        .Where(a => a.N_CURRENT_NUM == 0).First();
-
+                        .Where(DbExpr.EndLoc(areas: new List<string> { detail.S_END_AREA })).First();
                     if (endLoc == null) {
-                        LogHelper.Info(preLog + $"娌℃湁鎵惧埌缁堢偣璐т綅={detail.S_END_AREA}鐨勭粓鐐硅揣浣�闇�婊¤冻:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0");
+                        LogHelper.Info(preLog + LogMsg.EndLocNotFound(areas: new List<string> { detail.S_END_AREA }));
                         continue;
                     }
 
                     detail.N_B_STATE = 2;
+                    detail.T_MODIFY = DateTime.Now;
 
                     var cntId = detail.S_CNTR_CODE;
-                    var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskName);
+                    var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, cntId, taskName);
                     task.S_OP_CODE = detail.S_OO_NO;
 
-                    using (var tran = db.Ado.UseTran()) {
-                        if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
-                            tran.RollbackTran();
-                            LogHelper.Info($"杞:{taskName}:淇敼{taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触!");
-                            continue;
-                        }
-
-                        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();
-                            LogHelper.Info(preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�");
-                            continue;
-                        }
-
-                        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();
-                            LogHelper.Info(preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�");
-                            continue;
-                        }
-
-                        if (db.Insertable(task).ExecuteCommand() <= 0) {
-                            tran.RollbackTran();
-                            LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}");
-                            continue;
-                        }
-
-                        tran.CommitTran();
-                        LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}");
-                        continue;
-                    }
+                    (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj {
+                        RelocationDetailToUpdate = detail,
+                        StartLocToUpdate = startLoc,
+                        EndLocToUpdate = endLoc,
+                        TaskToInsert = task,
+                    });
+                    LogHelper.Info(preLog + msg);
                 }
             }
             catch (Exception ex) {
@@ -422,7 +360,7 @@
                     LogHelper.Info($"璁″垝鍗曞彿{task.S_BS_NO}涓嶅瓨鍦�");
                 }
 
-                var model = new OtherModel.CreateTaskReturnErpInfo {
+                var model = new ErpModel.CreateTaskReturnErpInfo {
                     jhdh = plan.JHDH , // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) 
                     ckzt = plan.CKZT , // 鍑哄簱鐘舵� (闇�杩斿洖) 
                     jhlb = plan.JHLB , // 璁″垝绫诲埆

--
Gitblit v1.9.1