From fc25dda9baf3b5f4df23d35914f3dd343cf492e3 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期一, 28 七月 2025 17:30:21 +0800
Subject: [PATCH] 优化WCSHelper / 序列号生成逻辑 , 添加强制任务处理模块

---
 core/WCSCore.cs |  114 +++++++++++++++-----------------------------------------
 1 files changed, 31 insertions(+), 83 deletions(-)

diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index 5f1e56a..f197ee2 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -61,10 +61,10 @@
                     WCSHelper.Begin(TN_Task, model.forklift_no); // 宸叉帹閫佺殑浠诲姟鐨勭姸鎬佹敼鎴愭墽琛�                     break;
                 case 3: // 寮�鍙栬揣
-                    WCSHelper.UpdateStatus(TN_Task, "寮�鍙栬揣"); // 浠诲姟鐘舵�鏀规垚寮�鍙栬揣
+                    WCSHelper.UpdateTaskState(TN_Task, "寮�鍙栬揣"); // 浠诲姟鐘舵�鏀规垚寮�鍙栬揣
                     break;
                 case 4: // 鍙栬揣瀹屾垚
-                    WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚
+                    WCSHelper.UpdateTaskState(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚
                     TaskProcess.OperateStatus(TN_Task, 4); // 璧风偣瀹瑰櫒璐т綅瑙g粦,瑙i攣璧风偣
 
                     if (TN_Task.S_TYPE == ETask.C鎴愬搧鑳跺嚭搴�Name()) {
@@ -78,10 +78,10 @@
 
                     break;
                 case 5: // 寮�鍗歌揣
-                    WCSHelper.UpdateStatus(TN_Task, "寮�鍗歌揣"); // 浠诲姟鐘舵�鏀规垚寮�鍗歌揣
+                    WCSHelper.UpdateTaskState(TN_Task, "寮�鍗歌揣"); // 浠诲姟鐘舵�鏀规垚寮�鍗歌揣
                     break;
                 case 6: // 鍗歌揣瀹屾垚
-                    WCSHelper.UpdateStatus(TN_Task, "鍗歌揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍗歌揣瀹屾垚
+                    WCSHelper.UpdateTaskState(TN_Task, "鍗歌揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍗歌揣瀹屾垚
                     TaskProcess.OperateStatus(TN_Task, 6); // 缁堢偣瀹瑰櫒璐т綅缁戝畾,瑙i攣缁堢偣
                     break;
                 case 2: // 瀹屾垚
@@ -113,7 +113,6 @@
 
         private static void RecordTaskTable(TN_Task task) {
             var db = new SqlHelper<object>().GetInstance();
-            var info = "";
 
             try {
                 var cgDetail = new TN_CG_Detail(); // 濡傛灉娌℃湁淇℃伅,榛樿灏辨槸绌哄�,鍙互鐩存帴濉叆,涓嶉渶瑕佸垽鏂�@@ -128,8 +127,7 @@
                         .First();
 
                     if (cgDetail == null) {
-                        info = $"浠诲姟{task.S_CODE}瀹屾垚,璁板綍鍑哄叆搴撳瓨鍦ㄩ棶棰�鏃犳硶鍦ㄥ鍣ㄨ揣鍝佹槑缁嗚〃涓壘鍒版墭鐩榹task.S_CNTR_CODE}瀵瑰簲鐨勭墿鏂�;
-                        LogHelper.Info(info);
+                        LogHelper.Info($"浠诲姟{task.S_CODE}瀹屾垚,璁板綍鍑哄叆搴撳瓨鍦ㄩ棶棰�鏃犳硶鍦ㄥ鍣ㄨ揣鍝佹槑缁嗚〃涓壘鍒版墭鐩榹task.S_CNTR_CODE}瀵瑰簲鐨勭墿鏂�);
                         //return;
                         cgDetail = new TN_CG_Detail() ;
                         cgDetail.S_ITEM_CODE = "寮傚父";
@@ -150,8 +148,7 @@
                     .Where(r => r.S_TASK_NO == task.S_CODE).First();
                 if (record != null) {
                     //needUpdateRecordTable = true;
-                    info = $"鍑哄叆搴撹褰曡〃涓凡缁忓瓨鍦ㄤ换鍔″彿{task.S_CODE}"; // 闃叉娴嬭瘯鏃跺弽澶嶈皟鐢�34562瀵艰嚧閲嶅璁板綍
-                    LogHelper.Info(info);
+                    LogHelper.Info($"鍑哄叆搴撹褰曡〃涓凡缁忓瓨鍦ㄤ换鍔″彿{task.S_CODE}"); // 闃叉娴嬭瘯鏃跺弽澶嶈皟鐢�34562瀵艰嚧閲嶅璁板綍
                     return;
                 }
 
@@ -175,13 +172,11 @@
 
                 // 鏁版嵁搴撴搷浣�                 if (db.Insertable(record).ExecuteCommand() <= 0) {
-                    info = "鎻掑叆鍑哄叆搴撹褰曡〃澶辫触:" + JsonConvert.SerializeObject(record);
-                    LogHelper.Info(info);
+                    LogHelper.Info("鎻掑叆鍑哄叆搴撹褰曡〃澶辫触:" + JsonConvert.SerializeObject(record));
                     return;
                 }
 
-                info = "鎻掑叆鍑哄叆搴撹褰曡〃鎴愬姛";
-                LogHelper.Info(info);
+                LogHelper.Info("鎻掑叆鍑哄叆搴撹褰曡〃鎴愬姛");
             }
             catch (Exception ex) {
                 LogHelper.InfoEx(ex);
@@ -313,7 +308,6 @@
 
         public static void PickUpReturnErp(TN_Task task) {
             var db = new SqlHelper<object>().GetInstance();
-            var info = "";
             var httpH = new HttpHelper();
             
             try {
@@ -322,8 +316,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>()
@@ -331,8 +324,7 @@
                     .First();
 
                 if (cgDetail == null) {
-                    info = $"鐗╂枡缂栫爜涓嶅瓨鍦�";
-                    LogHelper.Info(info);
+                    LogHelper.Info($"鐗╂枡缂栫爜涓嶅瓨鍦�");
                 }
 
                 var model = new OtherModel.PickUpReturnErpInfo {
@@ -402,8 +394,7 @@
                 plan.SFSL = model.sfsl;
                 plan.HWZT = model.hwzt;
                 var success = db.Updateable(plan).UpdateColumns(p => new { p.SFJS, p.SFSL, p.HWZT }).ExecuteCommand() > 0;
-                info = "鏇存柊鍑哄簱璁″垝鍗曡褰曡〃" + (success ? "鎴愬姛" : "澶辫触");
-                LogHelper.Info(info);
+                LogHelper.Info("鏇存柊鍑哄簱璁″垝鍗曡褰曡〃" + (success ? "鎴愬姛" : "澶辫触"));
             }
             catch (Exception ex) {
                 LogHelper.InfoEx(ex);
@@ -454,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 {
@@ -475,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);
                 }
@@ -494,9 +488,8 @@
         /// <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 info = "";
 
             var taskInfo = Settings.GetTaskInfo(ETask.M婊℃墭涓嬬嚎鍏ュ簱);
             var taskName = taskInfo.TaskName;
@@ -511,11 +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) {
-                    info = $"娌℃湁鎵惧埌璧风偣璐т綅'{startLocCode}',鎴栦笉婊¤冻瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0";
-                    LogHelper.Info(info);
-                    return new Result<bool>(false, info);
+                    return (false, $"娌℃湁鎵惧埌璧风偣璐т綅'{startLocCode}'!!瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0");
                 }
 
                 var locCntrRelOld = db.Queryable<TN_Loc_Container>()
@@ -536,83 +527,50 @@
                     .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�:绌鸿揣浣�                     .OrderBy(l => l.N_LAYER)
                     .First();
-
+                
                 if (endLoc == null) {
-                    info = $"娌℃湁鎵惧埌鍚堥�鐨勩�缁堢偣璐т綅銆�闇�婊¤冻瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0";
-                    LogHelper.Info(info);
-                    return new Result<bool>(false, info);
+                    return (false, $"娌℃湁鎵惧埌鍚堥�鐨刐缁堢偣璐т綅]!!瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0");
                 }
 
                 var cntId = locCntrRel.S_CNTR_CODE;
-                var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
-
-                WCSHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�-                WCSHelper.LockEndLoc(ref 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();
-                            info = $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯昏〃澶辫触:璐т綅缂栫爜{locCntrRelOld.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRelOld.S_CNTR_CODE}";
-                            LogHelper.Info(info);
-                            return new Result<bool>(false, info);
+                            return (false, $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯昏〃澶辫触:璐т綅缂栫爜{locCntrRelOld.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRelOld.S_CNTR_CODE}");
                         }
                     }
 
                     if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        info = $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�璐т綅缂栫爜{locCntrRel.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRel.S_CNTR_CODE}";
-                        LogHelper.Info(info);
-                        return new Result<bool>(false, info);
+                        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) {
+                    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);
-                        return new Result<bool>(false, info);
+                        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) {
+                    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);
-                        return new Result<bool>(false, info);
+                        return (false, $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊缁堢偣璐т綅{endLoc.S_CODE}閿佺姸鎬佸け璐�);
                     }
 
                     if (db.Insertable(task).ExecuteCommand() <= 0) {
                         tran.RollbackTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}";
-                        LogHelper.Info(info);
-                        return new Result<bool>(false, info);
+                        return (false, $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}");
                     }
 
                     tran.CommitTran();
-                    info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}";
-                    LogHelper.Info(info);
-                    return new Result<bool>(true, info);
+                    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);
         }
 
     }
@@ -622,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