From a985e84471d68d7bcb886ef96655a9178447884c Mon Sep 17 00:00:00 2001 From: yxj <yxj@hz-kingdee.com> Date: 星期三, 28 六月 2023 17:03:12 +0800 Subject: [PATCH] 新增其他入库、生产领料、委外出库、分步式调出、分步式调入扫描源单调用方法 --- WebAPI/Controllers/WebAPIController.cs | 415 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 404 insertions(+), 11 deletions(-) diff --git a/WebAPI/Controllers/WebAPIController.cs b/WebAPI/Controllers/WebAPIController.cs index 905fee0..7ac5333 100644 --- a/WebAPI/Controllers/WebAPIController.cs +++ b/WebAPI/Controllers/WebAPIController.cs @@ -3910,21 +3910,24 @@ } - #region [鏌ヨ鑿滃崟鍒楄〃] + #region [浠庢暟鎹簱鍔犺浇鑿滃崟] [Route("Web/MenuList")] [HttpGet] - public object MenuList() + public object MenuList(string HMakeName) { try { - List<Menu> mu = new List<Menu>(); - SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); - ds = oCn.RunProcReturn("Select * from Gy_Menu_1 Order by HItemID ", "Gy_Menu"); - //List<Menu> mu1 = ds.Tables[0].AsEnumerable().Select(t => new Menu()).ToList(); - //List<Menu> users = ModelConvertHelper<Menu>.ConvertToModel(ds.Tables[0]); - //var dd = ToHierarchy.ToHierarchyList(users); - //string json = JsonConvert.SerializeObject(dd); - for (int i = 0; i < ds.Tables[0].Rows.Count; i++) //杩欓噷鏄惊鐜墍鏈� + List<Menu> mu = new List<Menu>(); //浠ョ埗瀛愮骇缁撴瀯瀛樻斁鑿滃崟娓呭崟淇℃伅 + SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); //鏁版嵁搴撴搷浣滃伐鍏� + string sql = "select HItemID,HPartentID,HNumber,HName,HLevel,Hurl,HType from Gy_MenuDefineSet where HMakeName = '" + HMakeName + "' order by HItemID"; + ds = oCn.RunProcReturn(sql, "Gy_MenuDefineSet"); //鏌ヨ褰撳墠鐢ㄦ埛鐨勮嚜瀹氫箟鑿滃崟鏁版嵁 + if (ds.Tables[0]==null || ds.Tables[0].Rows.Count == 0) //鍒ゆ柇褰撳墠鐢ㄦ埛鏄惁鏈夎缃繃鑷畾涔変俊鎭紝鑻ヨ褰曟暟涓�0锛屽垯娌℃湁璁剧疆杩囷紝鍔犺浇鎵�鏈夌殑鑿滃崟淇℃伅 + { + sql = "Select * from Gy_Menu_1 Order by HItemID "; + ds = oCn.RunProcReturn(sql, "Gy_Menu"); + } + + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) //灏嗚彍鍗曠殑鏍硅妭鐐逛繚瀛樺埌鍒楄〃menu涓� { if (ds.Tables[0].Rows[i]["HPartentID"].ToString() == "0" || ds.Tables[0].Rows[i]["HitemID"].ToString() == ds.Tables[0].Rows[i]["HPartentID"].ToString()) //鍒ゆ柇鏄惁鏈�澶栧眰鏍硅妭鐐� { @@ -3938,7 +3941,7 @@ mu.Add(tbj); } } - ToHierarchy.digui(ds.Tables[0], mu); + ToHierarchy.digui(ds.Tables[0], mu); //浣跨敤閫掑綊锛屽皢闇�瑕佸姞杞界殑鏁版嵁浠ョ埗瀛愮骇鐨勭粨鏋勫瓨鏀惧湪mu涓� objJsonResult.code = "1"; @@ -3959,6 +3962,396 @@ #endregion + #region [鑿滃崟鐩綍鑷畾涔塢 + + #region 璇诲彇鑷畾涔夋暟鎹� + + //瀵瑰簲Gy_Menu_1琛ㄤ腑鐨勮褰曪紝璁板綍鑿滃崟娓呭崟锛屼互鍙婅彍鍗曚腑鍝簺琚�変腑 + public class MenuInit + { + public string HitemID; + public string HPartentID; + public string HNumber; + public string HName; + public int HLevel; + public string Hurl; + public string HType; + public bool HSelected; + } + + //鑾峰彇鏍戠姸鐨勮嚜瀹氫箟鏁版嵁锛岀被涓殑姣忎釜灞炴�ч兘鏄痩ayui涓爲缁勪欢鐨勬覆鏌撳弬鏁皁ption鐨刣ata灞炴�у�肩殑鍙傛暟 + public class MenuDefineList + { + public string title { get; set; } + public string id { get; set; } + public string field { get; set; } + + public List<MenuDefineList> children { get; set; } + public bool spread { get; set; } + public bool selected { get; set; } + + } + + //鍦ㄨ嚜瀹氫箟鑿滃崟鐣岄潰锛岃幏鍙栬嚜瀹氫箟鑿滃崟淇℃伅鏃讹紝閫氳繃璇ョ被瀵硅薄杩斿洖 + public class MenuDefineResult + { + public List<MenuInit> dt; //璁板綍Gy_Menu_1涓殑鑿滃崟娓呭崟锛屼互鍙婃槸鍚﹁閫変腑 + public List<MenuDefineList> tree; //鏍硅妭鐐瑰垪琛紝鍦ㄥ墠绔粡杩囬�掑綊鑾峰彇鎵�鏈夎妭鐐逛互鍙婂悇鑺傜偣鏄惁閫変腑 + } + + //鑷畾涔夎彍鍗曪細鑾峰彇鏍戠粍浠舵暟鎹� + [Route("Web/MenuDefineSet")] + [HttpGet] + public object MenuDefineSet(string HMakeName) + { + try + { + //鑾峰彇鏋勫缓鏍戠姸缁撴瀯鐨勬暟鎹� + List<MenuInit> menuInitList = new List<MenuInit>(); //鐢ㄤ互鑾峰彇Gy_Menu_1涓殑鎵�鏈夎彍鍗曚俊鎭紝浠ュ強瀵瑰簲鑺傜偣鏄惁琚�変腑闇�瑕佸姞杞芥樉绀� + + SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); + ds = oCn.RunProcReturn("Select * from Gy_Menu_1 Order by HItemID ", "Gy_Menu"); //鑾峰彇Gy_Menu_1涓殑鎵�鏈夎彍鍗曚俊鎭紝鐢ㄤ簬涓簃enuInitList鍒楄〃鍏呭疄鏁版嵁 + + DataSet ds1 = new DataSet(); + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) //灏咷y_Menu_1涓殑鑿滃崟淇℃伅鍙婇�変腑鎯呭喌淇濆瓨鍒癿enuInitList鍒楄〃涓紝 + { + //濉厖鍩烘湰鏁版嵁 + MenuInit menuInit = new MenuInit(); + menuInit.HitemID = ds.Tables[0].Rows[i]["HItemID"].ToString(); + menuInit.HPartentID = ds.Tables[0].Rows[i]["HPartentID"].ToString(); + menuInit.HNumber = ds.Tables[0].Rows[i]["HNumber"].ToString(); + menuInit.HName = ds.Tables[0].Rows[i]["HName"].ToString(); + menuInit.HLevel = int.Parse(ds.Tables[0].Rows[i]["HLevel"].ToString()); + menuInit.Hurl = ds.Tables[0].Rows[i]["Hurl"].ToString(); + menuInit.HType = ds.Tables[0].Rows[i]["HType"].ToString(); + menuInit.HSelected = false; + + //鍒ゆ柇鐢ㄦ埛鏄惁閫変腑鏄剧ず璇ヨ彍鍗� + String sql = "Select * from Gy_MenuDefineSet where HItemID = '" + ds.Tables[0].Rows[i]["HItemID"] + "' and HMakeName='" + HMakeName + "'"; + ds1 = oCn.RunProcReturn(sql, "Gy_MenuDefineSet"); + if (ds1.Tables[0].Rows.Count > 0) //瀵逛簬Gy_Menu_1琛ㄤ腑鐨勮彍鍗曡妭鐐癸紝閫氳繃妫�绱㈠湪Gy_MenuDefineSet琛ㄤ腑瀵瑰簲鐢ㄦ埛鏄惁瀛樺湪璇ヨ妭鐐圭殑淇℃伅锛屽垽鏂鐢ㄦ埛鏄惁閫変腑璇ヨ妭鐐归渶瑕佸姞杞芥樉绀哄湪渚ц彍鍗曟爮 + { + menuInit.HSelected = true; + } + menuInitList.Add(menuInit); //灏咷y_Menu_1琛ㄤ腑鐨勮彍鍗曡妭鐐逛俊鎭�愪竴娣诲姞鍒癿enuInitList鍒楄〃涓� + } + + + //瀛樺偍鏍戠姸缁撴瀯鐨勬暟鎹� + List<MenuDefineList> tree = new List<MenuDefineList>(); //鐢ㄤ互鑾峰彇鑿滃崟娓呭崟鍦╨ayui涓爲缁勪欢娓叉煋鍙傛暟option涓璬ata鍊煎�肩殑鍙傛暟 + for (int i = 0; i < menuInitList.Count; i++) //鑾峰彇鑿滃崟娓呭崟涓殑鏍硅妭鐐圭殑娓叉煋鏁版嵁 + { + if (menuInitList[i].HPartentID == "0" || menuInitList[i].HitemID == menuInitList[i].HPartentID) //鍒ゆ柇鏄惁鏄牴鑺傜偣 + { + MenuDefineList define = new MenuDefineList(); + define.id = menuInitList[i].HitemID; + define.field = menuInitList[i].HitemID; + define.title = menuInitList[i].HName; + define.spread = false; + define.selected = false; + if (menuInitList[i].HSelected == true) + { + define.selected = true; + } + tree.Add(define); + } + } + + MenuDefineResult res = new MenuDefineResult(); + res.dt = menuInitList; + res.tree = tree; + + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "鏌ヨ鎴愬姛锛�"; + objJsonResult.data = res; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏌ヨ澶辫触锛�"; + objJsonResult.data = e.ToString(); + return objJsonResult; + } + } + #endregion + + #region 淇濆瓨鑷畾涔夋暟鎹� + //鐢ㄦ埛鎺ユ敹鍓嶇浼犻�掔殑鍊硷細瀵逛簬鍓嶇浼犻�掔殑琚�変腑鑺傜偣鐨勬暟鎹紝鍙渶瑕佸悇鑺傜偣鐨刬d鍜宼itle灞炴�у�硷紝瀵逛簬绫籗aveDefineMenu鐨凥ItemID銆丠Name灞炴�� + public class SaveDefineMenu + { + public string HItemID; + public string HName; + } + + //鑾峰彇鑷畾涔夎彍鍗曟暟鎹� + [Route("Web/SaveMenuDefineSet")] + [HttpPost] + public object SaveMenuDefineSet([FromBody] JObject sMainSub) + { + try + { + //鑾峰彇浼犲弬鐨勮嚜瀹氫箟鏁版嵁 + var _value = sMainSub["sMainSub"].ToString(); + string msg = _value.ToString(); + string[] sArray = msg.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + string HMakeName = sArray[1].ToString(); + string saveData = sArray[0].ToString(); + List<SaveDefineMenu> saveDataList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SaveDefineMenu>>(saveData); + + //澹版槑鏁版嵁搴撴搷浣滃伐鍏� + SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); + + //璁剧疆鏁版嵁搴撴搷浣滅殑鍥炴粴鐐癸紝鑻ュ湪鎻愪氦鍓嶆姤閿欙紝鍒欏洖婊氬埌璇ョ偣锛屾湡闂存搷浣滃彇娑� + oCN.BeginTran(); + + //鍒犻櫎褰撳墠鐢ㄦ埛鐨勮嚜瀹氫箟鏁版嵁 + string sql = "delete from Gy_MenuDefineSet where HMakeName = '" + HMakeName + "'"; + oCN.RunProc(sql); + + //鎻掑叆褰撳墠鐢ㄦ埛鏈�鏂扮殑鑷畾涔夋暟鎹� + for(int i=0;i< saveDataList.Count; i++) + { + sql = "select * from Gy_Menu_1 where HItemID = '" + saveDataList[i].HItemID + "'"; + ds = oCn.RunProcReturn(sql,"Gy_Menu_1"); + if (ds.Tables[0].Rows.Count > 0) + { + string HPartentID = ds.Tables[0].Rows[0]["HPartentID"].ToString(); + string HNumber = ds.Tables[0].Rows[0]["HNumber"].ToString(); + int HLevel = int.Parse(ds.Tables[0].Rows[0]["HLevel"].ToString()); + string Hurl = ds.Tables[0].Rows[0]["Hurl"].ToString(); + string HType = ds.Tables[0].Rows[0]["HType"].ToString(); + + sql = "insert into Gy_MenuDefineSet values('" + saveDataList[i].HItemID + "','" + HPartentID + "','" + HNumber + "','" + saveDataList[i].HName + "'," + HLevel + ",'" + Hurl + "','" + HType + "','" + HMakeName + "')"; + oCN.RunProc(sql); + } + } + //鎻愪氦鏁版嵁搴撴搷浣� + oCN.Commit(); + + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "淇濆瓨鎴愬姛锛�"; + objJsonResult.data = null; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏌ヨ澶辫触锛�"; + objJsonResult.data = e.ToString(); + return objJsonResult; + } + } + + + #endregion + + #endregion + + + + #region 鐢ㄦ埛鑿滃崟蹇嵎鏂瑰紡鑷畾涔� + + #region 鑾峰彇鐢ㄦ埛蹇嵎鏂瑰紡閫夋嫨鑿滃崟 + + //蹇嵎鏂瑰紡鑷畾涔夎彍鍗曪細鑾峰彇鏍戠粍浠舵暟鎹� + [Route("Web/Xt_UserFastMenu_Display")] + [HttpGet] + public object Xt_UserFastMenu_Display(string HMakeName) + { + try + { + //鑾峰彇鏋勫缓鏍戠姸缁撴瀯鐨勬暟鎹� + List<MenuInit> menuInitList = new List<MenuInit>(); //鐢ㄤ互鑾峰彇Gy_Menu_1涓殑鎵�鏈夎彍鍗曚俊鎭紝浠ュ強瀵瑰簲鑺傜偣鏄惁琚�変腑闇�瑕佸姞杞芥樉绀� + + SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); + ds = oCn.RunProcReturn("Select * from Gy_Menu_1 Order by HItemID ", "Gy_Menu"); //鑾峰彇Gy_Menu_1涓殑鎵�鏈夎彍鍗曚俊鎭紝鐢ㄤ簬涓簃enuInitList鍒楄〃鍏呭疄鏁版嵁 + + DataSet ds1 = new DataSet(); + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) //灏咷y_Menu_1涓殑鑿滃崟淇℃伅鍙婇�変腑鎯呭喌淇濆瓨鍒癿enuInitList鍒楄〃涓紝 + { + //濉厖鍩烘湰鏁版嵁 + MenuInit menuInit = new MenuInit(); + menuInit.HitemID = ds.Tables[0].Rows[i]["HItemID"].ToString(); + menuInit.HPartentID = ds.Tables[0].Rows[i]["HPartentID"].ToString(); + menuInit.HNumber = ds.Tables[0].Rows[i]["HNumber"].ToString(); + menuInit.HName = ds.Tables[0].Rows[i]["HName"].ToString(); + menuInit.HLevel = int.Parse(ds.Tables[0].Rows[i]["HLevel"].ToString()); + menuInit.Hurl = ds.Tables[0].Rows[i]["Hurl"].ToString(); + menuInit.HType = ds.Tables[0].Rows[i]["HType"].ToString(); + menuInit.HSelected = false; + + //鍒ゆ柇鐢ㄦ埛鏄惁閫変腑鏄剧ず璇ヨ彍鍗� + String sql = "Select * from Xt_UserFastMenu where HSubFuncID = '" + ds.Tables[0].Rows[i]["HItemID"] + "' and HUserID='" + HMakeName + "'"; + ds1 = oCn.RunProcReturn(sql, "Xt_UserFastMenu"); + if (ds1.Tables[0].Rows.Count > 0) //瀵逛簬Gy_Menu_1琛ㄤ腑鐨勮彍鍗曡妭鐐癸紝閫氳繃妫�绱㈠湪Gy_MenuDefineSet琛ㄤ腑瀵瑰簲鐢ㄦ埛鏄惁瀛樺湪璇ヨ妭鐐圭殑淇℃伅锛屽垽鏂鐢ㄦ埛鏄惁閫変腑璇ヨ妭鐐归渶瑕佸姞杞芥樉绀哄湪渚ц彍鍗曟爮 + { + menuInit.HSelected = true; + } + menuInitList.Add(menuInit); //灏咷y_Menu_1琛ㄤ腑鐨勮彍鍗曡妭鐐逛俊鎭�愪竴娣诲姞鍒癿enuInitList鍒楄〃涓� + } + + + //瀛樺偍鏍戠姸缁撴瀯鐨勬暟鎹� + List<MenuDefineList> tree = new List<MenuDefineList>(); //鐢ㄤ互鑾峰彇鑿滃崟娓呭崟鍦╨ayui涓爲缁勪欢娓叉煋鍙傛暟option涓璬ata鍊煎�肩殑鍙傛暟 + for (int i = 0; i < menuInitList.Count; i++) //鑾峰彇鑿滃崟娓呭崟涓殑鏍硅妭鐐圭殑娓叉煋鏁版嵁 + { + if (menuInitList[i].HPartentID == "0" || menuInitList[i].HitemID == menuInitList[i].HPartentID) //鍒ゆ柇鏄惁鏄牴鑺傜偣 + { + MenuDefineList define = new MenuDefineList(); + define.id = menuInitList[i].HitemID; + define.field = menuInitList[i].HitemID; + define.title = menuInitList[i].HName; + define.spread = false; + define.selected = false; + if (menuInitList[i].HSelected == true) + { + define.selected = true; + } + tree.Add(define); + } + } + + MenuDefineResult res = new MenuDefineResult(); + res.dt = menuInitList; + res.tree = tree; + + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "鏌ヨ鎴愬姛锛�"; + objJsonResult.data = res; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏌ヨ澶辫触锛�"; + objJsonResult.data = e.ToString(); + return objJsonResult; + } + } + + #endregion + + #region 淇濆瓨鐢ㄦ埛蹇嵎鏂瑰紡閫夋嫨鑿滃崟 + + //淇濆瓨鐢ㄦ埛蹇嵎鏂瑰紡閫夋嫨鑿滃崟 + [Route("Web/Xt_UserFastMenu_Save")] + [HttpPost] + public object Xt_UserFastMenu_Save([FromBody] JObject sMainSub) + { + try + { + //鑾峰彇浼犲弬鐨勮嚜瀹氫箟鏁版嵁 + var _value = sMainSub["sMainSub"].ToString(); + string msg = _value.ToString(); + string[] sArray = msg.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + string HMakeName = sArray[1].ToString(); + string saveData = sArray[0].ToString(); + List<SaveDefineMenu> saveDataList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SaveDefineMenu>>(saveData); + + //澹版槑鏁版嵁搴撴搷浣滃伐鍏� + SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); + + //璁剧疆鏁版嵁搴撴搷浣滅殑鍥炴粴鐐癸紝鑻ュ湪鎻愪氦鍓嶆姤閿欙紝鍒欏洖婊氬埌璇ョ偣锛屾湡闂存搷浣滃彇娑� + oCN.BeginTran(); + + //鍒犻櫎褰撳墠鐢ㄦ埛鐨勮嚜瀹氫箟鏁版嵁 + string sql = "delete from Xt_UserFastMenu where HUserID = '" + HMakeName + "'"; + oCN.RunProc(sql); + + //鎻掑叆褰撳墠鐢ㄦ埛鏈�鏂扮殑鑷畾涔夋暟鎹� + for (int i = 0; i < saveDataList.Count; i++) + { + sql = "select * from Gy_Menu_1 where HPartentID = '" + saveDataList[i].HItemID + "'"; + ds = oCn.RunProcReturn(sql, "Gy_Menu_1"); + if (ds.Tables[0].Rows.Count == 0) //鍒ゆ柇璇ヨ妭鐐规槸鍚︿负鏈�涓嬬骇鑺傜偣锛屽嵆涓嶅瓨鍦ㄥ瓙鑺傜偣 + { + sql = "select * from Gy_Menu_1 where HItemID = '" + saveDataList[i].HItemID + "'"; + ds = oCn.RunProcReturn(sql, "Gy_Menu_1"); + if (ds.Tables[0].Rows.Count > 0) + { + string HUserID = HMakeName; + string HSubFuncID = ds.Tables[0].Rows[0]["HItemID"].ToString(); + string HCaption = ds.Tables[0].Rows[0]["HName"].ToString(); + + sql = "insert into Xt_UserFastMenu(HUserID,HSubFuncID,HCaption) values('" + HUserID + "','" + HSubFuncID + "','" + HCaption + "')"; + oCN.RunProc(sql); + } + } + } + //鎻愪氦鏁版嵁搴撴搷浣� + oCN.Commit(); + + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "淇濆瓨鎴愬姛锛�"; + objJsonResult.data = null; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏌ヨ澶辫触锛�"; + objJsonResult.data = e.ToString(); + return objJsonResult; + } + } + + #endregion + + #region 鍔犺浇console.html椤甸潰鐨勫揩鎹锋柟寮� + //蹇嵎鏂瑰紡鑷畾涔夎彍鍗曪細鑾峰彇鏍戠粍浠舵暟鎹� + [Route("Web/Xt_UserFastMenu_Init")] + [HttpGet] + public object Xt_UserFastMenu_Init(string HMakeName) + { + try + { + SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); + string sql = "select a.HSubFuncID, a.HCaption,a.HPicNum,b.Hurl from Xt_UserFastMenu as a join Gy_Menu_1 as b on a.HSubFuncID = b.HItemID where a.HUserID = '" + HMakeName + "' Order by a.HItemID"; + ds = oCn.RunProcReturn(sql, "Xt_UserFastMenu"); //鑾峰彇Xt_UserFastMenu涓鐢ㄦ埛璁剧疆鐨勮嚜瀹氫箟鑿滃崟淇℃伅锛岀敤浜庡湪鍓嶇鍔犺浇 + + objJsonResult.code = "1"; + objJsonResult.count = 1; + objJsonResult.Message = "鏌ヨ鎴愬姛锛�"; + objJsonResult.data = ds.Tables[0]; + return objJsonResult; + } + catch (Exception e) + { + objJsonResult.code = "0"; + objJsonResult.count = 0; + objJsonResult.Message = "鏌ヨ澶辫触锛�"; + objJsonResult.data = e.ToString(); + return objJsonResult; + } + } + #endregion + #endregion + + + + + + + + + + + + + + + + + ///// <summary> ///// 浜у搧鍏ュ簱缂撳瓨鍒楄〃鍒锋柊淇℃伅 ///// </summary> -- Gitblit v1.9.1