From 48654bac6d758d6426a0e659a7d7bd08634acfc8 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期四, 12 六月 2025 17:15:49 +0800
Subject: [PATCH] 修复细节错误,优化报错信息

---
 core/Monitor.cs |  106 ++++++++++++++++++++++++++++++----------------------
 1 files changed, 61 insertions(+), 45 deletions(-)

diff --git a/core/Monitor.cs b/core/Monitor.cs
index 9d959bb..5c83eba 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -20,10 +20,13 @@
             public string cntr_code { get; set; }
         }
 
-        public static void CheckInbound() {
-            var taskName = TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱;
+        public static void CheckInbound() {                
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
+
+            const string taskName = TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱;
+            const string cntrType = "鎵樼洏";
+
             try {
                 // 鏌ヤ骇绾挎槸鍚︽湁鐗╂枡淇℃伅
                 foreach (var prod in Settings.ProductionLines) {
@@ -68,6 +71,8 @@
 
                     var needInsertContainer = false;
                     var needUpdateContainer = false;
+
+                    // TEMP 鑷姩瑙﹀彂鐨勬墭鐩樹笅绾挎殏鏃朵笉鑰冭檻鍒ゆ柇锛岄粯璁ゆ病鏈夋椂鍐欏叆
                     // 鏌ュ鍣ㄤ俊鎭〃鏄惁宸茬粡鏈夎繖涓鍣�                     var cntr = db.Queryable<TN_Container>()
                         .Where(c => c.S_CODE == cntrCode).First();
@@ -78,9 +83,8 @@
 
                         cntr = new TN_Container {
                             S_CODE = cntrCode,
-                            S_TYPE = "鎵樼洏",
+                            S_TYPE = cntrType,
                             S_SPEC = itemCode,
-                            S_SOURCE = taskName,
                         };
                     }
                     else {
@@ -91,7 +95,6 @@
                                 $"涓庢墍闇�鐨勭墿鏂欎俊鎭瘂itemCode}涓嶇锛岀洿鎺ヨ鐩栫粨鏋�);
 
                             cntr.S_SPEC = itemCode;
-                            cntr.S_SOURCE = taskName;
                         }
                     }
 
@@ -105,14 +108,13 @@
                         info = $"璧风偣浣嶇疆 '{startLocCode}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�;
                         LogHelper.Info(info);
                         continue;
-                        //return;
                     }
 
                     // 缁戝畾璐т綅鍜屽鍣ㄥ彿
                     var locCntrRel = new TN_Loc_Container {
                         S_LOC_CODE = startLocCode,
                         S_CNTR_CODE = cgDetail.S_CNTR_CODE,
-                        S_CNTR_TYPE = "鎵樼洏",
+                        S_CNTR_TYPE = cntrType,
                     };
 
                     var endLoc = db.Queryable<TN_Location>()
@@ -134,6 +136,9 @@
                     LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�                     LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� 
+                    cntr.S_SOURCE = task.S_CODE;
+                    cntr.T_MODIFY = DateTime.Now;
+
                     using (var tran = db.Ado.UseTran()) {
                         if (needInsertContainer) {
                             if (db.Insertable<TN_Container>(cntr).ExecuteCommand() <= 0) {
@@ -144,7 +149,8 @@
                             }
                         }
                         else if (needUpdateContainer) {
-                            if (db.Updateable<TN_Container>(cntr).ExecuteCommand() <= 0) {
+                            if (db.Updateable<TN_Container>(cntr)
+                                .UpdateColumns(c => new { c.S_SPEC, c.S_SOURCE, c.T_MODIFY }).ExecuteCommand() <= 0) {
                                 info = $"鏇存柊瀹瑰櫒琛ㄥけ璐ワ細" + JsonConvert.SerializeObject(cntr);
                                 tran.RollbackTran();
                                 LogHelper.Info(info);
@@ -170,7 +176,8 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
+                            it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -182,7 +189,7 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -192,13 +199,13 @@
 
                         if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                             LogHelper.Info(info);
                             continue;
                         }
 
                         tran.CommitTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                         LogHelper.Info(info);
                         continue;
                     }
@@ -215,7 +222,7 @@
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
 
-            var taskName = TaskName.C鎴愬搧鑳跺嚭搴�
+            const string taskName = TaskName.C鎴愬搧鑳跺嚭搴�
 
             try {
                 var orderList = db.Queryable<TN_Outbound_Order>()
@@ -300,7 +307,9 @@
                     detail.N_B_STATE = 2;
 
                     var cntId = detail.S_CNTR_CODE;
-                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
+
+                    var erp_no = string.IsNullOrEmpty(detail.S_BS_NO) ? "" : detail.S_BS_NO;
+                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName, detail.S_OO_NO, erp_no);
 
                     LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�                     LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿�@@ -317,10 +326,11 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
+                            it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"杞锛歿taskName}锛氱敓鎴愪换鍔�{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
                             LogHelper.Info(info);
                             continue;
                         }
@@ -329,23 +339,23 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"杞锛歿taskName}锛氱敓鎴愪换鍔�{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
                             LogHelper.Info(info);
                             continue;
                         }
 
                         if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"杞锛歿taskName}锛氱敓鎴愪换鍔�{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                             LogHelper.Info(info);
                             continue;
                         }
 
                         tran.CommitTran();
-                        info = $"杞锛歿taskName}锛氱敓鎴愪换鍔�{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                         LogHelper.Info(info);
                         continue;
                     }
@@ -393,7 +403,7 @@
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
 
-            var taskName = TaskName.C鎶芥_鍑哄簱;
+            const string taskName = TaskName.C鎶芥_鍑哄簱;
 
             try {
                 var orderList = db.Queryable<TN_Spot_Check>()
@@ -412,7 +422,7 @@
                         .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓�                     var allCount = db.Queryable<TN_SpotCheck_Detail>()
                         .Count(d => d.S_OO_NO == order.S_NO);
-                    LogHelper.Info($"杞--{taskName}--缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}");
+                    LogHelper.Info($"杞锛歿taskName}锛氱粺璁taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}");
 
                     if (doingCount == allCount) {
                         order.N_B_STATE = 2; // 鎵�湁浠诲姟閮藉凡鎵ц
@@ -425,7 +435,7 @@
                         .ToList();
 
                     if (checkDetailList.Count == 0) {
-                        LogHelper.Info($"杞--{taskName}--浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�);
+                        LogHelper.Info($"杞锛歿taskName}锛氫粛鏈変换鍔℃湭鎵ц瀹屾垚锛屼絾褰撳墠娌℃湁宸蹭笅鍙戠殑浠诲姟");
                         continue;
                     }
 
@@ -441,7 +451,7 @@
                         .First();
 
                     if (startLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�);
+                        LogHelper.Info($"杞锛歿taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�);
                         continue;
                     }
 
@@ -451,14 +461,14 @@
                         .Where(a => a.N_CURRENT_NUM == 0).First();
 
                     if (endLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�);
+                        LogHelper.Info($"杞锛歿taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�);
                         continue;
                     }
 
                     detail.N_B_STATE = 2;
 
                     var cntId = detail.S_CNTR_CODE;
-                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
+                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName, detail.S_OO_NO);
 
                     LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�                     LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿�@@ -466,7 +476,7 @@
                     using (var tran = db.Ado.UseTran()) {
                         if (db.Updateable<TN_SpotCheck_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            LogHelper.Info($"杞--{taskName}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�);
+                            LogHelper.Info($"杞锛歿taskName}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�);
                             continue;
                         }
 
@@ -474,7 +484,8 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
+                            it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -486,7 +497,7 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -496,13 +507,13 @@
 
                         if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                             LogHelper.Info(info);
                             continue;
                         }
 
                         tran.CommitTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                         LogHelper.Info(info);
                         continue;
                     }
@@ -513,10 +524,12 @@
             }
         }
 
-        public static void CheckShiftOrder() {
-            var taskName = TaskName.Y绉诲簱;
+        public static void CheckShiftOrder() {                
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
+
+            const string taskName = TaskName.Y绉诲簱;
+
             try {
                 var orderList = db.Queryable<TN_Relocation_List>()
                     .Where(c => c.N_B_STATE == 1)
@@ -524,7 +537,7 @@
                     .ToList();
 
                 if (orderList.Count == 0) {
-                    LogHelper.Info($"杞--{taskName}--鏆傛棤寰呮墽琛岀殑{taskName}鍗�);
+                    LogHelper.Info($"杞锛歿taskName}锛氭殏鏃犲緟鎵ц鐨剓taskName}鍗�);
                     return;
                 }
 
@@ -534,7 +547,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($"杞锛歿taskName}锛氱粺璁taskName}鍗�{order.S_NO}浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}");
 
                     if (doingCount == allCount) {
                         order.N_B_STATE = 2; // 鎵�湁浠诲姟閮藉凡鎵ц
@@ -547,7 +560,7 @@
                         .ToList();
 
                     if (checkDetailList.Count == 0) {
-                        LogHelper.Info($"杞--{taskName}--浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�);
+                        LogHelper.Info($"杞锛歿taskName}锛氫粛鏈変换鍔℃湭鎵ц瀹屾垚锛屼絾褰撳墠娌℃湁宸蹭笅鍙戠殑浠诲姟");
                         continue;
                     }
 
@@ -565,7 +578,8 @@
                         .First();
 
                     if (startLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�);
+                        info = $"杞锛歿taskName}锛氭病鏈夋壘鍒板鍣ㄥ彿={detail.S_CNTR_CODE}鐨勮捣鐐硅揣浣嶏紒闇�婊¤冻锛氭湭涓婇攣銆佸綋鍓嶅鍣ㄦ暟閲�1";
+                        LogHelper.Info(info);
                         continue;
                     }
 
@@ -575,14 +589,15 @@
                         .Where(a => a.N_CURRENT_NUM == 0).First();
 
                     if (endLoc == null) {
-                        LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�);
+                        info = $"杞锛歿taskName}锛氭病鏈夋壘鍒扮粓鐐硅揣浣�{detail.S_END_AREA}鐨勭粓鐐硅揣浣嶏紒闇�婊¤冻锛氭湭涓婇攣銆佸綋鍓嶅鍣ㄦ暟閲�0";
+                        LogHelper.Info(info);
                         continue;
                     }
 
                     detail.N_B_STATE = 2;
 
                     var cntId = detail.S_CNTR_CODE;
-                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName);
+                    var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName, detail.S_OO_NO);
 
                     LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�                     LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿�@@ -590,7 +605,7 @@
                     using (var tran = db.Ado.UseTran()) {
                         if (db.Updateable<TN_RelocationList_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            LogHelper.Info($"杞--{taskName}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�);
+                            LogHelper.Info($"杞锛歿taskName}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�);
                             continue;
                         }
 
@@ -598,7 +613,8 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
+                            it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -610,7 +626,7 @@
                             it.N_LOCK_STATE,
                             it.S_LOCK_STATE,
                             it.S_LOCK_OP,
-                            it.T_MODIFY
+                            it.T_MODIFY,
                         }).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
                             info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�;
@@ -620,13 +636,13 @@
 
                         if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) {
                             tran.RollbackTran();
-                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                            info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                             LogHelper.Info(info);
                             continue;
-                        }
+                        }   
 
                         tran.CommitTran();
-                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}";
+                        info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}";
                         LogHelper.Info(info);
                         continue;
                     }

--
Gitblit v1.9.1