From 63e94e068622d4ef843cee0d19d4f2d231316304 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期五, 25 七月 2025 17:20:38 +0800
Subject: [PATCH] 完善查询语句, 日志记录的封装

---
 process/TaskProcess.cs |  168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 163 insertions(+), 5 deletions(-)

diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs
index 4151c3f..314d728 100644
--- a/process/TaskProcess.cs
+++ b/process/TaskProcess.cs
@@ -23,12 +23,12 @@
             if (load) {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚,璧风偣瑙g粦瀹瑰櫒{mst.S_CNTR_CODE}");
                 LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚,璧风偣瑙g粦瀹瑰櫒{mst.S_CNTR_CODE}");
-                LocationHelper.UnbindLocCntr(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
+                UnbindLocCntr(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
             }
             else {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚,缁堢偣缁戝畾瀹瑰櫒{mst.S_CNTR_CODE}");
                 LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚,缁堢偣缁戝畾瀹瑰櫒{mst.S_CNTR_CODE}");
-                LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
+                BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
             }
         }
 
@@ -42,13 +42,13 @@
                 //鏍规嵁瀹㈡埛鐜板満瑕佹眰,濡傛灉鍙栬揣瀹屾垚浠诲姟澶辫触浜哄伐鎷夊埌缁堢偣,鎴戜滑灏卞綋鍗歌揣瀹屾垚澶勭悊;濡傛灉鏄汉宸ユ媺璧板埌鍏跺畠鍖哄煙,鎴戜滑灏辫В閿佺粓鐐�鍒犻櫎鎵樼洏銆�                 //缁堢偣缁戝畾
                 BufferLocUpdate(mst, false);
-                LocationHelper.UnLockLoc(mst.S_END_LOC);
+                UnLockLoc(mst.S_END_LOC);
             }
             else {
 
                 //璧风偣缁堢偣瑙i攣
-                LocationHelper.UnLockLoc(mst.S_START_LOC);
-                LocationHelper.UnLockLoc(mst.S_END_LOC);
+                UnLockLoc(mst.S_START_LOC);
+                UnLockLoc(mst.S_END_LOC);
 
             }
 
@@ -99,6 +99,164 @@
             }
         }
 
+        /// <summary>
+        /// 鍙栬揣瀹岃В閿佽捣鐐�鍗歌揣瀹岃В閿佺粓鐐�鍙楠岄攣鐨勬潵婧�涔熷彲浠ヤ笉鏍¢獙
+        /// </summary>
+        /// <param name="loc"></param>
+        /// <returns></returns>
+        public static bool UnLockLoc(string loc) {
+            LogHelper.Info("UnLockLoc:" + loc);
+            var res = false;
+            var db = new SqlHelper<object>().GetInstance();
+            var model = db.Queryable<TN_Location>().Where(a => a.S_CODE == loc).First();
+            if (model != null) {
+                model.S_LOCK_STATE = "鏃�;
+                model.N_LOCK_STATE = 0;
+                model.S_LOCK_OP = "";
+                model.T_MODIFY = System.DateTime.Now;
+                res = db.Updateable(model).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() > 0;
+                LogHelper.Info("UnLockLoc:瑙i攣缁撴灉" + res);
+            }
+            else {
+                LogHelper.Info("UnLockLoc 澶辫触" + loc);
+            }
+            return res;
+        }
+
+        /// <summary>
+        /// 璐т綅瑙g粦瀹瑰櫒
+        /// </summary>
+        /// <param name="loc"></param>
+        /// <param name="cntrs"></param>
+        /// <returns></returns>
+        public static string UnbindLocCntr(string loc, List<string> cntrs) {
+            var db = new SqlHelper<object>().GetInstance();
+            var logs = $"璐т綅:{loc},瀹瑰櫒:{JsonConvert.SerializeObject(cntrs)}";
+            try {
+                var lcrList = db.Queryable<TN_Loc_Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE) && a.S_LOC_CODE == loc).ToList();
+                if (lcrList.Count == 0) {
+                    LogHelper.Info($"璐т綅鏃犻渶瑙g粦瀹瑰櫒,鍦ㄦ暟鎹簱涓湭鎵惧埌{JsonConvert.SerializeObject(cntrs)}鐩稿叧鐨勮揣浣嶅鍣ㄥ叧绯昏〃淇℃伅");
+                }
+                cntrs = lcrList.Select(a => a.S_CNTR_CODE).ToList();
+
+                var log = JsonConvert.SerializeObject(cntrs);
+                var location = db.Queryable<TN_Location>().First(a => a.S_CODE == loc);
+                if (location != null) {
+                    location.N_CURRENT_NUM = 0;
+                    location.S_LOCK_STATE = "鏃�;
+                    location.N_LOCK_STATE = 0;
+
+                    using (var tran = db.Ado.UseTran()) {
+                        if (db.Deleteable<TN_Loc_Container>().Where(it => cntrs.Contains(it.S_CNTR_CODE) && it.S_LOC_CODE == loc).ExecuteCommand() > 0) {
+                            LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔�{log}");
+                        }
+                        else {
+                            tran.RollbackTran();
+
+                            LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�{log}");
+
+                            return "璐т綅瑙g粦瀹瑰櫒澶辫触," + logs;
+                        }
+
+                        log = JsonConvert.SerializeObject(location);
+                        if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0) {
+                            tran.CommitTran();
+
+                            LogHelper.Info($"鏇存柊璐т綅琛ㄦ垚鍔�{log}");
+                        }
+                        else {
+                            tran.RollbackTran();
+
+                            LogHelper.Info($"鏇存柊璐т綅琛ㄥけ璐�{log}");
+
+                            return "璐т綅瑙g粦瀹瑰櫒澶辫触," + logs;
+                        }
+                    }
+                }
+                else {
+                    LogHelper.Info($"鍦ㄦ暟鎹簱涓湭鎵惧埌璇ヨ揣浣�鏃犻渶鏇存柊,璐т綅:{loc}");
+                }
+                return "璐т綅瑙g粦瀹瑰櫒鎴愬姛," + logs;
+            }
+            catch (Exception ex) {
+                LogHelper.Info($"鍙戠敓浜嗗紓甯�璐т綅瑙g粦瀹瑰櫒澶辫触,{ex.Message}");
+                return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs;
+            }
+        }
+
+        /// <summary>
+        /// 璐т綅缁戝畾瀹瑰櫒
+        /// </summary>
+        /// <param name="loc"></param>
+        /// <param name="cntrs"></param>
+        /// <returns></returns>
+        public static string BindingLoc(string loc, List<string> cntrs) {
+            var db = new SqlHelper<object>().GetInstance();
+            var logs = $"璐т綅:{loc},瀹瑰櫒:{JsonConvert.SerializeObject(cntrs)}";
+            try {
+                // 鍒犻櫎宸茬粡缁戝畾杩囩殑瀹瑰櫒璁板綍
+                var lcrList = db.Queryable<TN_Loc_Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE) && a.S_LOC_CODE == loc).ToList();
+                if (lcrList.Count > 0) {
+                    cntrs = cntrs.Except(lcrList.Select(a => a.S_CNTR_CODE).ToList()).ToList();
+                }
+
+                var bindLocCntList = new List<TN_Loc_Container>();
+                foreach (var item in cntrs) {
+                    // 閽堝瀹瑰櫒绫诲瀷娣诲姞鐨勬柊閫昏緫
+                    var cntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == item).First();
+
+                    if (cntr == null) {
+                        LogHelper.Info($"璐т綅瑙g粦鏃�瀹瑰櫒{item}娌℃湁鍦ㄥ鍣ㄤ俊鎭〃涓煡鍒�涓嶈褰曞鍣ㄧ被鍨�);
+                        bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item });
+                    }
+                    else {
+                        bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item, S_CNTR_TYPE = cntr.S_TYPE });
+                    }
+                }
+
+                var log = JsonConvert.SerializeObject(bindLocCntList);
+
+                using (var tran = db.Ado.UseTran()) {
+                    if (db.Insertable(bindLocCntList).ExecuteCommand() <= 0) {
+                        db.RollbackTran();
+                        LogHelper.Info($"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�{log}");
+                        return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs;
+                    }
+                    LogHelper.Info($"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔�{log}");
+
+                    var location = db.Queryable<TN_Location>().First(a => a.S_CODE == loc);
+                    if (location != null) {
+                        location.N_CURRENT_NUM += cntrs.Count;
+                        location.S_LOCK_STATE = "鏃�;
+                        location.N_LOCK_STATE = 0;
+                        log = JsonConvert.SerializeObject(location);
+
+                        if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0) {
+                            db.CommitTran();
+
+                            LogHelper.Info($"鏇存柊璐т綅琛ㄦ垚鍔�{log}");
+                        }
+                        else {
+                            db.RollbackTran();
+
+                            LogHelper.Info($"鏇存柊璐т綅琛ㄥけ璐�{log}");
+
+                            return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs;
+                        }
+                    }
+                    else {
+                        db.RollbackTran();
+                        LogHelper.Info($"鏈壘鍒拌璐т綅{loc},鎴栬�宸查攣瀹�{log}");
+                    }
+                }
+                return "璐т綅缁戝畾瀹瑰櫒鎴愬姛," + logs;
+            }
+            catch (Exception ex) {
+                LogHelper.Info($"鍙戠敓浜嗗紓甯�璐т綅缁戝畾瀹瑰櫒澶辫触,");
+                return "璐т綅缁戝畾瀹瑰櫒澶辫触," + ex.Message;
+            }
+        }
+
         private static object locLocker = new object();
 
 

--
Gitblit v1.9.1