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 |  205 +++++++++++++--------------------------------------
 1 files changed, 52 insertions(+), 153 deletions(-)

diff --git a/core/Monitor.cs b/core/Monitor.cs
index 65bcc53..86fafc7 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -22,8 +22,6 @@
 
         public static void CheckInbound() {                
             var db = new SqlHelper<object>().GetInstance();
-            var info = "";
-            
             try {
                 // 鏌ヤ骇绾挎槸鍚︽湁鐗╂枡淇℃伅
                 foreach (var prod in Settings.ProductionLines) {
@@ -36,8 +34,7 @@
                     // TCPClient浼犻�淇℃伅鐨勬椂鍊�涓嶈鐢ㄦ柇鐐归樆濉炵▼搴�                     // {"item_code":"CG1001","batch_no":"BN1001","cntr_code":"CN2505111"}
                     if (!TcpClientHelper.TryReadProductionLine(out byte[] read)) {
-                        info = $"娴嬭瘯{prod.Id}鍙蜂骇绾縶prod.PlcIp}:{prod.PlcPort}:璇诲彇浜х嚎淇℃伅澶辫触";
-                        LogHelper.Info(info);
+                        LogHelper.Info($"娴嬭瘯{prod.Id}鍙蜂骇绾縶prod.PlcIp}:{prod.PlcPort}:璇诲彇浜х嚎淇℃伅澶辫触");
                         continue;
                     }
 
@@ -72,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 = "杞:鍑哄簱:";
 
@@ -142,44 +141,22 @@
                     }
                     
                     detail.N_B_STATE = 2;
+                    detail.T_MODIFY = DateTime.Now;
 
-                    var cntId = detail.S_CNTR_CODE;
-
-                    var task = WCSHelper.BuildTask(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";
                     }
 
-                    WCSHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�-                    WCSHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿�-
-                    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") {
@@ -199,16 +176,16 @@
 
         public static void CheckCheckOrder() {
             var db = new SqlHelper<object>().GetInstance();
-            var info = "";
+            var (ok, msg) = (false, string.Empty);
 
-            var taskInfo = Settings.GetTaskInfo(ETask.C鎶芥鍑哄簱);
+            var taskInfo = ETask.C鎶芥鍑哄簱.Info();
             var taskName = taskInfo.TaskName;
             const string preLog = "杞:鎶芥:";
 
             try {
                 var orderList = db.Queryable<TN_Spot_Check>().Where(c => c.N_B_STATE == 1).OrderBy(c => c.T_CREATE).ToList();
                 if (orderList.Count == 0) {
-                    LogHelper.Debug($"杞:{taskName}:鏆傛棤寰呮墽琛岀殑{taskName}鍗�);
+                    LogHelper.Debug(preLog + $"鏆傛棤寰呮墽琛岀殑{taskName}鍗�);
                     return;
                 }
 
@@ -229,7 +206,7 @@
                         .ToList();
 
                     if (checkDetailList.Count == 0) {
-                        LogHelper.Info($"杞:{taskName}:浠嶆湁浠诲姟鏈墽琛屽畬鎴�浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�);
+                        LogHelper.Info(preLog + $"浠嶆湁浠诲姟鏈墽琛屽畬鎴�浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�);
                         continue;
                     }
 
@@ -243,7 +220,7 @@
                         .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE).First();
 
                     if (startLoc == null) {
-                        LogHelper.Info($"杞:{taskName}:娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�");
+                        LogHelper.Info(preLog + $"娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�");
                         continue;
                     }
 
@@ -253,50 +230,24 @@
                         .Where(a => a.N_CURRENT_NUM == 0).First();
 
                     if (endLoc == null) {
-                        LogHelper.Info($"杞:{taskName}:娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�");
+                        LogHelper.Info(preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�");
                         continue;
                     }
 
                     detail.N_B_STATE = 2;
+                    detail.T_MODIFY = DateTime.Now;
 
                     var cntId = detail.S_CNTR_CODE;
-                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
+                    var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, cntId, taskName);
                     task.S_OP_CODE = detail.S_OO_NO;
 
-                    WCSHelper.LockStartLoc(ref startLoc);
-                    WCSHelper.LockEndLoc(ref endLoc);
-
-                    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();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}";
-                            LogHelper.Info(info);
-                            continue;
-                        }
-
-                        tran.CommitTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}";
-                        LogHelper.Info(info);
-                        continue;
-                    }
+                    (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj {
+                        SpotCheckDetailToUpdate = detail,
+                        StartLocToUpdate = startLoc,
+                        EndLocToUpdate = endLoc,
+                        TaskToInsert = task,
+                    });
+                    LogHelper.Info(preLog + msg);
                 }
             }
             catch (Exception ex) {
@@ -306,12 +257,12 @@
 
         public static void CheckShiftOrder() {                
             var db = new SqlHelper<object>().GetInstance();
-            var info = "";
+            var (ok, msg) = (false, string.Empty);
 
-            var taskInfo = Settings.GetTaskInfo(ETask.Y绉诲簱);
+            var taskInfo = ETask.Y绉诲簱.Info();
             var taskName = taskInfo.TaskName;
             const string preLog = "杞:绉诲簱:";
-
+            
             try {
                 var orderList = db.Queryable<TN_Relocation_List>()
                     .Where(c => c.N_B_STATE == 1)
@@ -319,7 +270,7 @@
                     .ToList();
 
                 if (orderList.Count == 0) {
-                    LogHelper.Debug($"杞:{taskName}:鏆傛棤寰呮墽琛岀殑{taskName}鍗�);
+                    LogHelper.Debug(preLog + $"鏆傛棤寰呮墽琛岀殑{taskName}鍗�);
                     return;
                 }
 
@@ -329,7 +280,7 @@
                         .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓�                     var allCount = db.Queryable<TN_RelocationList_Detail>()
                         .Count(d => d.S_OO_NO == order.S_NO);
-                    LogHelper.Info($"杞:{taskName}:缁熻{taskName}鍗�{order.S_NO}浠诲姟宸蹭笅鍙�{doingCount}/{allCount}");
+                    LogHelper.Info(preLog + $"缁熻{taskName}鍗�{order.S_NO}浠诲姟宸蹭笅鍙�{doingCount}/{allCount}");
 
                     if (doingCount == allCount) {
                         order.N_B_STATE = 2; // 鎵�湁浠诲姟閮藉凡鎵ц
@@ -342,7 +293,7 @@
                         .ToList();
 
                     if (checkDetailList.Count == 0) {
-                        LogHelper.Info($"杞:{taskName}:浠嶆湁浠诲姟鏈墽琛屽畬鎴�浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�);
+                        LogHelper.Info(preLog + $"浠嶆湁浠诲姟鏈墽琛屽畬鎴�浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�);
                         continue;
                     }
 
@@ -352,83 +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) {
-                        info = $"杞:{taskName}:娌℃湁鎵惧埌瀹瑰櫒鍙�{detail.S_CNTR_CODE}鐨勮捣鐐硅揣浣�闇�婊¤冻:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=1";
-                        LogHelper.Info(info);
+                        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) {
-                        info = $"杞:{taskName}:娌℃湁鎵惧埌缁堢偣璐т綅={detail.S_END_AREA}鐨勭粓鐐硅揣浣�闇�婊¤冻:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0";
-                        LogHelper.Info(info);
+                        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.BuildTask(startLoc, endLoc, cntId, taskName);
+                    var task = WCSHelper.BuildTaskAndLockLoc(startLoc, endLoc, cntId, taskName);
                     task.S_OP_CODE = detail.S_OO_NO;
 
-                    WCSHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�-                    WCSHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿�-
-                    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();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊璧风偣璐т綅{startLoc.S_CODE}閿佺姸鎬佸け璐�;
-                            LogHelper.Info(info);
-                            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();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊缁堢偣璐т綅{endLoc.S_CODE}閿佺姸鎬佸け璐�;
-                            LogHelper.Info(info);
-                            continue;
-                        }
-
-                        if (db.Insertable(task).ExecuteCommand() <= 0) {
-                            tran.RollbackTran();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}";
-                            LogHelper.Info(info);
-                            continue;
-                        }   
-
-                        tran.CommitTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}";
-                        LogHelper.Info(info);
-                        continue;
-                    }
+                    (ok, msg) = DbTran.CreateTaskOrderObj(new CreateTaskOrderObj {
+                        RelocationDetailToUpdate = detail,
+                        StartLocToUpdate = startLoc,
+                        EndLocToUpdate = endLoc,
+                        TaskToInsert = task,
+                    });
+                    LogHelper.Info(preLog + msg);
                 }
             }
             catch (Exception ex) {
@@ -438,7 +341,6 @@
 
         public static void CreateTaskReturnErp(TN_Task task) {
             var db = new SqlHelper<object>().GetInstance();
-            var info = "";
             var httpH = new HttpHelper();
 
             try {
@@ -447,8 +349,7 @@
                     .First();
 
                 if (plan == null) {
-                    info = $"璁″垝鍗曞彿{task.S_BS_NO}涓嶅瓨鍦�";
-                    LogHelper.Info(info);
+                    LogHelper.Info($"璁″垝鍗曞彿{task.S_BS_NO}涓嶅瓨鍦�");
                 }
 
                 var cgDetail = db.Queryable<TN_CG_Detail>()
@@ -456,11 +357,10 @@
                     .First();
 
                 if (cgDetail == null) {
-                    info = $"鐗╂枡缂栫爜涓嶅瓨鍦�";
-                    LogHelper.Info(info);
+                    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 , // 璁″垝绫诲埆
@@ -527,8 +427,7 @@
                 plan.HWZT = model.hwzt;
                 plan.PH = model.ph;
                 var success = db.Updateable(plan).UpdateColumns(p => new { p.HW, p.HWZT, p.PH }).ExecuteCommand() > 0;
-                info = "鏇存柊鍑哄簱璁″垝鍗曡褰曡〃" + (success ? "鎴愬姛" : "澶辫触");
-                LogHelper.Info(info);
+                LogHelper.Info("鏇存柊鍑哄簱璁″垝鍗曡褰曡〃" + (success ? "鎴愬姛" : "澶辫触"));
             }
             catch (Exception ex) {
                 LogHelper.InfoEx(ex);

--
Gitblit v1.9.1