From d35bb711f8d3d267b44b4a80c20e31dabf309ae7 Mon Sep 17 00:00:00 2001 From: lu <99954486@qq.com> Date: 星期二, 14 一月 2025 08:17:18 +0800 Subject: [PATCH] 其它入库 --- DevApp/Gs.DevApp/DevFrm/QC/Frm_MesQmAql1.cs | 392 +++++++++++++++++++++++++++++++++---------------------- 1 files changed, 237 insertions(+), 155 deletions(-) diff --git a/DevApp/Gs.DevApp/DevFrm/QC/Frm_MesQmAql1.cs b/DevApp/Gs.DevApp/DevFrm/QC/Frm_MesQmAql1.cs index 0097fc2..84acee8 100644 --- a/DevApp/Gs.DevApp/DevFrm/QC/Frm_MesQmAql1.cs +++ b/DevApp/Gs.DevApp/DevFrm/QC/Frm_MesQmAql1.cs @@ -2,12 +2,13 @@ using Gs.DevApp.DevFrm.QC.Models; using Gs.DevApp.Entity; using Gs.DevApp.ToolBox; +using Gs.DevApp.UserControl; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; -using System.Drawing; +using System.Threading.Tasks; using System.Windows.Forms; namespace Gs.DevApp.DevFrm.QC @@ -25,26 +26,31 @@ this.toolBarMenu1.btnLoadClick += ToolBarMenu1_btnLoadClick; this.toolBarMenu1.btnDelClick += ToolBarMenu1_btnDelClick1; this.toolBarMenu1.btnEscClick += ToolBarMenu1_btnEscClick; + this.toolBarMenu1.btnQueryClick += ToolBarMenu1_btnQueryClick; toolBarMenu1.btnChkClick += ToolBarMenu1_btnChkClick; toolBarMenu1.btnFChkClick += ToolBarMenu1_btnFChkClick; toolBarMenu1.btnPiZhunClick += ToolBarMenu1_btnPiZhunClick; - gcMain.MouseDoubleClick += GcMain_MouseDoubleClick; - getPageList(1, UtilityHelper.GetPageSize()); + Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameterMx(gvMx1); + Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameterMx(gvMx2); + Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameter(gridView1, picCheckBox, this, "foneChecked", "", (value) => + { + Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 0); + }); + Gs.DevApp.ToolBox.UtilityHelper.SetTabParameter(gridView1, xtraTabControl1, pageBar1, (value) => + { + getModel(value); + }, (value) => + { + getPageList(this.pageBar1.CurrentPage); + }); + getPageList(1); pageBar1.PagerEvent += PageBar1_PagerEvent; - gridView1.CustomDrawRowIndicator += (s, e) => - { - if (e.Info.IsRowIndicator && e.RowHandle >= 0) - { - e.Info.DisplayText = (e.RowHandle + 1).ToString(); - } - }; - gridView1.CustomDrawEmptyForeground += (s, e) => - { - string str = "鏆傛湭鏌ユ壘鍒板尮閰嶇殑鏁版嵁!"; - Font f = new Font("寰蒋闆呴粦", 16); - Rectangle r = new Rectangle(gridView1.GridControl.Width / 2 - 100, e.Bounds.Top + 45, e.Bounds.Right - 5, e.Bounds.Height - 5); - e.Graphics.DrawString(str, f, Brushes.Gray, r); - }; + } + private void GridView1_ColumnFilterChanged(object sender, EventArgs e) + { + _filterList = Gs.DevApp.ToolBox.UtilityHelper.GetDilter(gridView1.Columns); + Task.Delay(100); + getPageList(1); } /// <summary> /// 鎵瑰噯 @@ -62,8 +68,7 @@ ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson); if (_rtn.rtnCode > 0) { - UtilityHelper.JumpToTab(xtraTabControl1, 0); - getPageList(1, UtilityHelper.GetPageSize()); + getPageList(this.pageBar1.CurrentPage); } ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg); } @@ -81,11 +86,7 @@ /// <exception cref="NotImplementedException"></exception> private void ToolBarMenu1_btnFChkClick(object sender, EventArgs e) { - toolBarMenu1.guidKey = ""; - string rowGuid, rowName; - (rowGuid, rowName) = UtilityHelper.GetCurrentRow(xtraTabControl1, - lbGuid, txt_sampleSizeNo, gridView1); - toolBarMenu1.guidKey = rowGuid; + _toolCk(0); } /// <summary> @@ -95,24 +96,9 @@ /// <param name="e"></param> private void ToolBarMenu1_btnChkClick(object sender, EventArgs e) { - toolBarMenu1.guidKey = ""; - string rowGuid, rowName; - (rowGuid, rowName) = UtilityHelper.GetCurrentRow(xtraTabControl1, - lbGuid, txt_sampleSizeNo, gridView1); - toolBarMenu1.guidKey = rowGuid; + _toolCk(1); } - - /// <summary> - /// 鍙屽嚮浜嬩欢 - /// </summary> - /// <param name="sender"></param> - /// <param name="e"></param> - private void GcMain_MouseDoubleClick(object sender, MouseEventArgs e) - { - string rowGuid = Gs.DevApp.ToolBox.UtilityHelper.GetCurrentDoubleRow(gridView1, e, "guid"); - if (!string.IsNullOrEmpty(rowGuid)) - getModel(rowGuid, false, 999); - } + /// <summary> /// 鍒嗛〉浜嬩欢 /// </summary> @@ -120,7 +106,21 @@ /// <param name="pageSize"></param> private void PageBar1_PagerEvent(int curPage, int pageSize) { - getPageList(curPage, pageSize); + getPageList(curPage); + } + /// <summary> + /// 鏌ヨ浜嬩欢 + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + private void ToolBarMenu1_btnQueryClick(object sender, EventArgs e) + { + gridView1.ColumnFilterChanged -= GridView1_ColumnFilterChanged; + gridView1.ActiveFilter.Clear(); + gridView1.ColumnFilterChanged += GridView1_ColumnFilterChanged; + var frm = new ShowFilter(gridView1.Columns, _filterList); + frm.UpdateParent += Frm_UpdateParent; + frm.ShowDialog(); } /// <summary> /// 鏌ヨ鍥炶皟 @@ -130,9 +130,8 @@ private void Frm_UpdateParent(object sender, UpdateParentEventArgs e) { _filterList = e.FilterList; - getPageList(1, pageBar1.RowsCount); + getPageList(1); } - /// <summary> /// 鍙栨秷浜嬩欢 /// </summary> @@ -140,7 +139,7 @@ /// <param name="e"></param> private void ToolBarMenu1_btnEscClick(object sender, EventArgs e) { - UtilityHelper.JumpToTab(xtraTabControl1, 0); + Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 1); } /// <summary> @@ -168,8 +167,10 @@ ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson); if (_rtn.rtnCode > 0) { - UtilityHelper.JumpToTab(xtraTabControl1, 0); - getPageList(1, UtilityHelper.GetPageSize()); + if (xtraTabControl1.SelectedTabPageIndex == 0) + getPageList(this.pageBar1.CurrentPage); + else + Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 2); } ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg); } @@ -187,9 +188,18 @@ private void ToolBarMenu1_btnLoadClick(object sender, EventArgs e) { if (xtraTabControl1.SelectedTabPageIndex == 1) - getModel(lbGuid.Text.Trim(), false, 999); + getModel(lbGuid.Text.Trim()); else - getPageList(1, UtilityHelper.GetPageSize()); + { + _filterList.Clear(); + if (gridView1.ActiveFilter.Count > 0) + { + gridView1.ColumnFilterChanged -= GridView1_ColumnFilterChanged; + gridView1.ActiveFilter.Clear(); + gridView1.ColumnFilterChanged += GridView1_ColumnFilterChanged; + } + getPageList(1); + } } /// <summary> /// 淇敼浜嬩欢 @@ -205,7 +215,17 @@ ToolBox.MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�"); return; } - getModel(rowGuid, true, 1); + Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 3); + if (xtraTabControl1.SelectedTabPageIndex == 1) + { + getModel(rowGuid); + } + else { + List<GridView> gridViews = new List<GridView>(); + gridViews.Add(gvMx1); + gridViews.Add(gvMx2); + UtilityHelper.ChangeEnableByControl(panel1.Controls, true, gridViews); + } } /// <summary> /// 鏂板浜嬩欢 @@ -214,8 +234,8 @@ /// <param name="e"></param> private void ToolBarMenu1_btnAddClick(object sender, EventArgs e) { - UtilityHelper.JumpToTab(xtraTabControl1, 1); lbGuid.Text = ""; + Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 4); List<GridView> gridViews = new List<GridView>(); gridViews.Add(gvMx1); gridViews.Add(gvMx2); @@ -250,98 +270,107 @@ gvMx1.UpdateCurrentRow(); gvMx2.CloseEditor(); gvMx2.UpdateCurrentRow(); - var qmaql2 = new List<MesQmAql2>(); - for (var i = 0; i < gvMx1.DataRowCount; i++) - { - var row = gvMx1.GetDataRow(i); - if (row != null) - qmaql2.Add(new MesQmAql2 - { - Guid = UtilityHelper.ToGuid(row["Guid"].ToString()), - LotFrom = Convert.ToInt32(row["LotFrom"].ToString()), - LotTo = Convert.ToInt32(row["LotTo"].ToString()), - FlevelS1 = row["FlevelS1"].ToString(), - FlevelS2 = row["FlevelS2"].ToString(), - FlevelS3 = row["FlevelS3"].ToString(), - FlevelS4 = row["FlevelS4"].ToString(), - FlevelI = row["FlevelI"].ToString(), - FlevelIi = row["FlevelIi"].ToString(), - FlevelIii = row["FlevelIii"].ToString(), - Memo = row["Memo"].ToString() - }); - } - var qmaql3 = new List<MesQmAql3>(); - for (var i = 0; i < gvMx2.DataRowCount; i++) - { - var row = gvMx2.GetDataRow(i); - if (row != null) - qmaql3.Add(new MesQmAql3 - { - Guid = UtilityHelper.ToGuid(row["Guid"].ToString()), - FsampleSizeWord = Convert.ToInt32(row["FsampleSizeWord"].ToString()), - SampleSizeWord = row["SampleSizeWord"].ToString(), - Aql00010 = Convert.ToInt32(row["Aql00010"].ToString()), - Aql00015 = Convert.ToInt32(row["Aql00015"].ToString()), - Aql00025 = Convert.ToInt32(row["Aql00025"].ToString()), - Aql00040 = Convert.ToInt32(row["Aql00040"].ToString()), - Aql00065 = Convert.ToInt32(row["Aql00065"].ToString()), - Aql0010 = Convert.ToInt32(row["Aql0010"].ToString()), - Aql0015 = Convert.ToInt32(row["Aql0015"].ToString()), - Aql0025 = Convert.ToInt32(row["Aql0025"].ToString()), - Aql0040 = Convert.ToInt32(row["Aql0040"].ToString()), - Aql0065 = Convert.ToInt32(row["Aql0065"].ToString()), - Aql0100 = Convert.ToInt32(row["Aql0100"].ToString()), - Aql0150 = Convert.ToInt32(row["Aql0150"].ToString()), - Aql0250 = Convert.ToInt32(row["Aql0250"].ToString()), - Aql0400 = Convert.ToInt32(row["Aql0400"].ToString()), - Aql0650 = Convert.ToInt32(row["Aql0650"].ToString()), - Aql1000 = Convert.ToInt32(row["Aql1000"].ToString()), - Memo = row["Memo"].ToString() - }); - } - if (qmaql2.Count <= 0) - { - Gs.DevApp.ToolBox.MsgHelper.Warning("鏍锋湰閲忓瓙鐮佷笉鑳戒负绌猴紒"); - return; - } - if (qmaql3.Count <= 0) - { - Gs.DevApp.ToolBox.MsgHelper.Warning("鎶芥牱鏂规涓嶈兘涓虹┖锛�"); - return; - } - var _obj = new MesQmAql1 - { - Guid = UtilityHelper.ToGuid(lbGuid.Text.Trim()), - SampleSizeNo = txt_sampleSizeNo.Text.Trim(), - SampleSizeName = txt_sampleSizeName.Text.Trim(), - Memo = txt_memo.Text.Trim(), - CreateDate = DateTime.Now, - FtwoChecked = false, - Isenabled = false, - FoneChecked = false, - Fversion = Convert.ToInt32(txt_fversion.Text.Trim()), - MesQmAql2s = qmaql2, - MesQmAql3s = qmaql3 - }; try { - string strJson = UtilityHelper.HttpPost("", _webServiceName + "EditModel", JsonConvert.SerializeObject(_obj)); - ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson); - ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg); - if (_rtn.rtnCode > 0) + var qmaql2 = new List<MesQmAql2>(); + for (var i = 0; i < gvMx1.DataRowCount; i++) { - lbGuid.Text = _rtn.rtnData; - toolBarMenu1.isSetBtn = true; - List<GridView> gridViews = new List<GridView>(); - gridViews.Add(gvMx1); - gridViews.Add(gvMx2); - UtilityHelper.ChangeEnableByControl(this.panel1.Controls, false, gridViews); + var row = gvMx1.GetDataRow(i); + if (row != null) + qmaql2.Add(new MesQmAql2 + { + Guid = UtilityHelper.ToGuid(row["Guid"].ToString()), + LotFrom = Convert.ToInt32(row["LotFrom"].ToString()), + LotTo = Convert.ToInt32(row["LotTo"].ToString()), + FlevelS1 = row["FlevelS1"].ToString(), + FlevelS2 = row["FlevelS2"].ToString(), + FlevelS3 = row["FlevelS3"].ToString(), + FlevelS4 = row["FlevelS4"].ToString(), + FlevelI = row["FlevelI"].ToString(), + FlevelIi = row["FlevelIi"].ToString(), + FlevelIii = row["FlevelIii"].ToString(), + Memo = row["Memo"].ToString() + }); + } + var qmaql3 = new List<MesQmAql3>(); + for (var i = 0; i < gvMx2.DataRowCount; i++) + { + var row = gvMx2.GetDataRow(i); + if (row != null) + qmaql3.Add(new MesQmAql3 + { + Guid = UtilityHelper.ToGuid(row["Guid"].ToString()), + FsampleSizeWord = Convert.ToInt32(row["FsampleSizeWord"].ToString()), + SampleSizeWord = row["SampleSizeWord"].ToString(), + Aql00010 = Convert.ToInt32(row["Aql00010"].ToString()), + Aql00015 = Convert.ToInt32(row["Aql00015"].ToString()), + Aql00025 = Convert.ToInt32(row["Aql00025"].ToString()), + Aql00040 = Convert.ToInt32(row["Aql00040"].ToString()), + Aql00065 = Convert.ToInt32(row["Aql00065"].ToString()), + Aql0010 = Convert.ToInt32(row["Aql0010"].ToString()), + Aql0015 = Convert.ToInt32(row["Aql0015"].ToString()), + Aql0025 = Convert.ToInt32(row["Aql0025"].ToString()), + Aql0040 = Convert.ToInt32(row["Aql0040"].ToString()), + Aql0065 = Convert.ToInt32(row["Aql0065"].ToString()), + Aql0100 = Convert.ToInt32(row["Aql0100"].ToString()), + Aql0150 = Convert.ToInt32(row["Aql0150"].ToString()), + Aql0250 = Convert.ToInt32(row["Aql0250"].ToString()), + Aql0400 = Convert.ToInt32(row["Aql0400"].ToString()), + Aql0650 = Convert.ToInt32(row["Aql0650"].ToString()), + Aql1000 = Convert.ToInt32(row["Aql1000"].ToString()), + Memo = row["Memo"].ToString() + }); + } + if (qmaql2.Count <= 0) + { + Gs.DevApp.ToolBox.MsgHelper.Warning("鏍锋湰閲忓瓙鐮佷笉鑳戒负绌猴紒"); + return; + } + if (qmaql3.Count <= 0) + { + Gs.DevApp.ToolBox.MsgHelper.Warning("鎶芥牱鏂规涓嶈兘涓虹┖锛�"); + return; + } + var _obj = new MesQmAql1 + { + Guid = UtilityHelper.ToGuid(lbGuid.Text.Trim()), + SampleSizeNo = txt_sampleSizeNo.Text.Trim(), + SampleSizeName = txt_sampleSizeName.Text.Trim(), + Memo = txt_memo.Text.Trim(), + CreateDate = DateTime.Now, + FtwoChecked = false, + Isenabled = false, + FoneChecked = false, + Fversion = Convert.ToInt32(txt_fversion.Text.Trim()), + MesQmAql2s = qmaql2, + MesQmAql3s = qmaql3 + }; + try + { + string strJson = UtilityHelper.HttpPost("", _webServiceName + "EditModel", JsonConvert.SerializeObject(_obj)); + ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson); + ToolBox.MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg); + if (_rtn.rtnCode > 0) + { + lbGuid.Text = _rtn.rtnData; + toolBarMenu1.isSetBtn = true; + List<GridView> gridViews = new List<GridView>(); + gridViews.Add(gvMx1); + gridViews.Add(gvMx2); + UtilityHelper.ChangeEnableByControl(this.panel1.Controls, false, gridViews); + } + } + catch (Exception ex) + { + ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message); } } catch (Exception ex) { - ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message); + + ToolBox.MsgHelper.ShowError("鎻愮ず锛�" + ex.Message); } + } /// <summary> @@ -349,14 +378,10 @@ /// </summary> /// <param name="curPage">绗嚑椤�</param> /// <param name="pageSize">姣忛〉鍑犳潯</param> - private void getPageList(int curPage, int pageSize) + private void getPageList(int curPage) { - System.Text.StringBuilder _sbSqlWhere = new System.Text.StringBuilder(); - foreach (FilterEntity itm in _filterList) - { - _sbSqlWhere.Append(" and " + itm.fileId + itm.fileOper + "'" + itm.fileValue + "'"); - } - PageQueryModel pgq = new PageQueryModel(curPage, pageSize, "create_date", "asc", "", _sbSqlWhere.ToString()); + var _sbSqlWhere = UtilityHelper.GetSearchWhere(_filterList); + PageQueryModel pgq = new PageQueryModel(curPage, this.pageBar1.RowsCount, "create_date", "asc", "", _sbSqlWhere.ToString()); string json = JsonConvert.SerializeObject(pgq); try { @@ -366,14 +391,18 @@ { DataTable dt = dd.rtnData.list; gcMain.BindingContext = new BindingContext(); - gcMain.DataSource = dt; - gcMain.ForceInitialize(); - int dddd = dd.rtnData.pages;//鎬婚〉 - pageBar1.TotalPages = dddd; - pageBar1.RecordCount = dd.rtnData.total;//璁板綍鎬绘暟 + gridView1.ColumnFilterChanged -= GridView1_ColumnFilterChanged; + if (dt.Rows.Count > 0) + { + gcMain.DataSource = dt; + gcMain.ForceInitialize(); + } + else + UtilityHelper.SetDefaultTable(gcMain, gridView1); + gridView1.ColumnFilterChanged += GridView1_ColumnFilterChanged; + pageBar1.TotalPages = dd.rtnData.pages;//鎬婚〉 pageBar1.CurrentPage = curPage;//褰撳墠椤� - pageBar1.RowsCount = pageSize;//姣忛〉鏄剧ず - pageBar1.setTxt(); + pageBar1.RecordCount = dd.rtnData.total;//鎬昏褰曟暟 } else { @@ -385,14 +414,16 @@ ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message); } } - private void getModel(string strGuid, bool isEdit, int tabIdx) + private void getModel(string strGuid) { + bool isEdit = false; + if (toolBarMenu1.currentAction == "add") return; + if (toolBarMenu1.currentAction == "edit") isEdit = true; if (string.IsNullOrEmpty(strGuid)) { ToolBox.MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�"); return; } - UtilityHelper.JumpToTab(xtraTabControl1, tabIdx); var _obj = new { guid = strGuid,//涓诲缓 @@ -427,12 +458,10 @@ { Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gcMx1, gvMx1); } - foreach (var a in _job["rtnData"]["mesQmAql3s"]) { mesQmAql3s.Add(a); } - DataTable dt1 = JsonConvert.DeserializeObject<DataTable>(mesQmAql3s.ToString()); if (dt1.Rows.Count > 0) { @@ -482,7 +511,7 @@ JsonConvert.SerializeObject(lst)); var _rtn = UtilityHelper.ReturnToDynamic(strJson); - if (_rtn.rtnCode > 0) getModel(lbGuid.Text, true, 1); + if (_rtn.rtnCode > 0) getModel(lbGuid.Text); MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg); } @@ -521,7 +550,7 @@ JsonConvert.SerializeObject(lst)); var _rtn = UtilityHelper.ReturnToDynamic(strJson); - if (_rtn.rtnCode > 0) getModel(lbGuid.Text, true, 1); + if (_rtn.rtnCode > 0) getModel(lbGuid.Text); MsgHelper.Warning("鎻愮ず锛�" + _rtn.rtnMsg); } @@ -531,5 +560,58 @@ } } } + + /// <summary> + /// 宸ュ叿鏉′簨浠� + /// </summary> + /// <param name="inFieldValue"></param> + private void _toolCk(int _inFieldValue) + { + string strMsg = ""; + switch (_inFieldValue) + { + case 1: + strMsg = "瀹℃牳"; + break; + case 0: + strMsg = "鍙嶅鏍�"; + break; + }; + toolBarMenu1.guidKey = ""; + string rowGuid, rowName; + (rowGuid, rowName) = UtilityHelper.GetCurrentRow(xtraTabControl1, lbGuid, txt_sampleSizeNo, gridView1, "sampleSizeNo"); + if (string.IsNullOrEmpty(rowGuid)) + { + MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�"); + return; + } + if (!MsgHelper.AskQuestion("浣犻�夋嫨浜嗐��" + rowName + "銆戯紝纭畾" + strMsg + "鍚楋紵")) + return; + + var _obj = new + { + guid = rowGuid, + ckValue = _inFieldValue, + parameter = "MES_QM_AQL1,FONE_CHECKDATE,FONE_CHECKED,FONE_CHECKOR,chk_mesQmAql1" + }; + try + { + var strJson = UtilityHelper.HttpPost("", "General/GeneralCheck", + JsonConvert.SerializeObject(_obj)); + var _rtn = UtilityHelper.ReturnToDynamic(strJson); + MsgHelper.Warning(_rtn.rtnData.outMsg.ToString()); + if (_rtn.rtnCode > 0) + { + if (xtraTabControl1.SelectedTabPageIndex == 1) + getModel(lbGuid.Text.Trim()); + else + getPageList(this.pageBar1.CurrentPage); + } + } + catch (Exception ex) + { + MsgHelper.Warning("鎻愮ず锛�" + ex.Message); + } + } } } \ No newline at end of file -- Gitblit v1.9.3