From 7b3b93e4d0f551d16869b92f5056ed3ca5c6c4eb Mon Sep 17 00:00:00 2001
From: yangle <admin@YINMOU>
Date: 星期四, 17 十一月 2022 16:08:49 +0800
Subject: [PATCH] Merge branch 'master' of http://101.37.171.70:10101/r/MES-WEB-API
---
WebAPI/Controllers/BaseSet/Gy_MaterialController.cs | 357 +++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 297 insertions(+), 60 deletions(-)
diff --git a/WebAPI/Controllers/BaseSet/Gy_MaterialController.cs b/WebAPI/Controllers/BaseSet/Gy_MaterialController.cs
index 22d506f..8c07c4e 100644
--- a/WebAPI/Controllers/BaseSet/Gy_MaterialController.cs
+++ b/WebAPI/Controllers/BaseSet/Gy_MaterialController.cs
@@ -1,4 +1,5 @@
-锘縰sing Newtonsoft.Json.Linq;
+锘縰sing Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
using Pub_Class;
using System;
using System.Collections;
@@ -6,6 +7,7 @@
using System.Data;
using System.Data.SqlClient;
using System.Web.Http;
+using System.Windows.Forms;
using WebAPI.Models;
using WebAPI.Service;
@@ -20,6 +22,36 @@
DataSet ds;
+
+ ////妫�娴� 褰撳墠閫変腑琛岀殑 椤圭洰鐘舵��
+ //[Route("Gy_Material/CheckUseStatus")]
+ //[HttpGet]
+ //public void Sub_CheckUseStatus(int grd, int IDCol, string sProcName)
+ //{
+ // SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
+ // Int64 sItemID;
+ // try
+ // {
+ // //寰幆褰撳墠缃戞牸閫変腑椤圭洰
+ // for (int i = 0; i < grd.SelectedRows.Count; i++)
+ // {
+ // //寰楀埌鍐呯爜
+ // sItemID = DBUtility.ClsPub.isLong(grd.Rows[grd.SelectedRows[i].Index].Cells[IDCol].Value);
+ // //璋冪敤鍌ㄥ瓨杩囩▼ h_p_Gy_CheckUseDept
+ // oCn.RunProc("exec " + sProcName + " " + sItemID.ToString(), ref ClsPub.sExeReturnInfo);
+ // }
+ // }
+ // catch (Exception e)
+ // {
+ // MessageBox.Show("妫�娴嬮敊璇紒鍘熷洜锛�" + ClsPub.sExeReturnInfo);
+ // //objJsonResult.code = "0";
+ // //objJsonResult.count = 0;
+ // //objJsonResult.Message = "妫�娴嬮敊璇紒鍘熷洜锛�" + ClsPub.sExeReturnInfo;
+ // //objJsonResult.data = null;
+ // //return objJsonResult;
+ // }
+ //}
+
/// <summary>
/// 杩斿洖鐗╂枡鍒楄〃
///鍙傛暟锛歴tring sql銆�
@@ -27,10 +59,20 @@
/// </summary>
[Route("Gy_Material/list")]
[HttpGet]
- public object list(string sWhere, string Organization)
+ public object list(string sWhere,string user, string Organization)
{
try
{
+ List<object> columnNameList = new List<object>();
+ //缂栬緫鏉冮檺
+ if (!DBUtility.ClsPub.Security_Log_second("Gy_Material", 1, false, user))
+ {
+ objJsonResult.code = "0";
+ objJsonResult.count = 0;
+ objJsonResult.Message = "鏃犳煡鐪嬫潈闄愶紒";
+ objJsonResult.data = null;
+ return objJsonResult;
+ }
string sql1 = string.Format(@"select * from h_v_Gy_MaterialList where 缁勭粐鍚嶇О='" + Organization + "'");
if (sWhere == null || sWhere.Equals(""))
{
@@ -42,9 +84,18 @@
ds = oCN.RunProcReturn(sql, "h_v_Gy_MaterialList");
}
+ //娣诲姞鍒楀悕
+ foreach (DataColumn col in ds.Tables[0].Columns)
+ {
+ Type dataType = col.DataType;
+ string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}";
+ columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//鑾峰彇鍒癉ataColumn鍒楀璞$殑鍒楀悕
+ }
+
objJsonResult.code = "1";
objJsonResult.count = 1;
objJsonResult.Message = "Sucess锛�";
+ objJsonResult.list = columnNameList;
objJsonResult.data = ds.Tables[0];
return objJsonResult;
}
@@ -80,12 +131,24 @@
{
DataSet ds;
var _value = msg["msg"].ToString();
- string msg1 = _value.ToString();
- //string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
- //string msg2 = sArray[0].ToString();
- //string msg3 = sArray[1].ToString();
+ string msg3 = _value.ToString();
+ string[] sArray = msg3.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
+ string msg1 = sArray[0].ToString();
+ string msg2 = sArray[1].ToString();
+ string msg_HUSEORGID = sArray[2].ToString();
Int64 HItemID = 0;
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
+
+ //缂栬緫鏉冮檺
+ if (!DBUtility.ClsPub.Security_Log_second("Gy_Material_Edit", 1, false, msg2))
+ {
+ objJsonResult.code = "0";
+ objJsonResult.count = 0;
+ objJsonResult.Message = "鏃犱繚瀛樻潈闄愶紒";
+ objJsonResult.data = null;
+ return objJsonResult;
+ }
+
//鑾峰彇鏈�澶D鍊艰祴鍊�
DataSet Maxds = oCN.RunProcReturn("select MAX(HItemID) HItemID from Gy_Material ", "Gy_Material");
if (Maxds != null || Maxds.Tables[0].Rows.Count > 0)
@@ -96,6 +159,7 @@
HItemID = maxid;
}
ListModels oListModels = new ListModels();
+
try
{
DLL.ClsGy_Material_Ctl oBill = new DLL.ClsGy_Material_Ctl();
@@ -221,7 +285,7 @@
objJsonResult.data = 1;
return objJsonResult;
}
-
+ oItem.HUSEORGID = Convert.ToInt32(msg_HUSEORGID); //缁勭粐id
oItem.HShortNumber = sShortNumber;//鐭唬鐮�
oItem.HEndFlag = true;//鏈骇鏍囧織
oItem.HLevel = DBUtility.ClsPub.GetLevel(oItem.HNumber.Trim()); //绛夌骇
@@ -276,21 +340,20 @@
/// <returns></returns>
[Route("Gy_Material/Delete")]
[HttpGet]
- public object DeltetGy_Material(string HItemID)
+ public object DeltetGy_Material(string HItemID,string user)
{
DataSet ds;
- //string ModRightNameCheck = "Sc_ProcessReport_check";
try
{
//鍒犻櫎鏉冮檺
- //if (!DBUtility.ClsPub.Security_Log(ModRightNameCheck, 1, false, CurUserName))
- //{
- // objJsonResult.code = "0";
- // objJsonResult.count = 0;
- // objJsonResult.Message = "瀹℃牳澶辫触锛佹棤鏉冮檺锛�";
- // objJsonResult.data = null;
- // return objJsonResult;
- //}
+ if (!DBUtility.ClsPub.Security_Log("Gy_Material_Delete", 1, false, user))
+ {
+ objJsonResult.code = "0";
+ objJsonResult.count = 0;
+ objJsonResult.Message = "鏃犲垹闄ゆ潈闄�";
+ objJsonResult.data = null;
+ return objJsonResult;
+ }
SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
if (string.IsNullOrWhiteSpace(HItemID))
@@ -322,7 +385,7 @@
return objJsonResult;
}
- oCN.RunProc("update Gy_Material set HStopflag=1 where HItemID=" + HItemID);
+ oCN.RunProc("delete from Gy_Material where HItemID=" + HItemID);
oCN.Commit();//鎻愪氦浜嬪姟
objJsonResult.code = "0";
objJsonResult.count = 1;
@@ -363,30 +426,31 @@
}
if (sWhere == null || sWhere.Equals(""))
{
- ds = oCN.RunProcReturn("select * from h_v_Gy_MouldFileList " + sWhere + "order by hmainid desc", "h_v_Gy_MouldFileList");
+ ds = oCN.RunProcReturn("select * from h_v_Gy_MouldFileList " + sWhere + "order by 鏃ユ湡 desc", "h_v_Gy_MouldFileList");
}
else
{
string sql1 = "select * from h_v_Gy_MouldFileList where 1 = 1 ";
- string sql = sql1 + sWhere + "order by hmainid desc";
+ string sql = sql1 + sWhere + "order by 鏃ユ湡 desc";
ds = oCN.RunProcReturn(sql, "h_v_Gy_MouldFileList");
}
- if (ds == null || ds.Tables[0].Rows.Count == 0)
- {
- objJsonResult.code = "0";
- objJsonResult.count = 0;
- objJsonResult.Message = "false锛�";
- objJsonResult.data = null;
- return objJsonResult;
- }
- else
- {
- objJsonResult.code = "1";
- objJsonResult.count = 1;
- objJsonResult.Message = "Sucess锛�";
- objJsonResult.data = ds.Tables[0];
- return objJsonResult;
- }
+
+ //if (ds.Tables[0].Rows.Count != 0 || ds != null)
+ //{
+ objJsonResult.code = "1";
+ objJsonResult.count = 1;
+ objJsonResult.Message = "Sucess锛�";
+ objJsonResult.data = ds.Tables[0];
+ return objJsonResult;
+ //}
+ //else
+ //{
+ //objJsonResult.code = "0";
+ //objJsonResult.count = 0;
+ //objJsonResult.Message = "鏃犳暟鎹�";
+ //objJsonResult.data = null;
+ //return objJsonResult;
+ //}
}
catch (Exception e)
{
@@ -481,22 +545,23 @@
string sql = sql1 + sWhere + "order by hmainid desc";
ds = oCN.RunProcReturn(sql, "h_v_IF_BarCodeBillList");
}
- if (ds == null || ds.Tables[0].Rows.Count == 0)
- {
- objJsonResult.code = "0";
- objJsonResult.count = 0;
- objJsonResult.Message = "false锛�";
- objJsonResult.data = null;
- return objJsonResult;
- }
- else
- {
- objJsonResult.code = "1";
- objJsonResult.count = 1;
- objJsonResult.Message = "Sucess锛�";
- objJsonResult.data = ds.Tables[0];
- return objJsonResult;
- }
+
+ //if (ds.Tables[0].Rows.Count != 0 || ds != null)
+ //{
+ objJsonResult.code = "1";
+ objJsonResult.count = 1;
+ objJsonResult.Message = "Sucess锛�";
+ objJsonResult.data = ds.Tables[0];
+ return objJsonResult;
+ //}
+ //else
+ //{
+ //objJsonResult.code = "0";
+ //objJsonResult.count = 0;
+ //objJsonResult.Message = "鏃犳暟鎹�";
+ //objJsonResult.data = null;
+ //return objJsonResult;
+ //}
}
catch (Exception e)
{
@@ -508,6 +573,74 @@
}
}
+ #region [杩斿洖鏉$爜妗f鍒犻櫎鍔熻兘]
+ /// <summary>
+ /// 杩斿洖鏉$爜妗f鍒犻櫎鍔熻兘
+ /// </summary>
+ /// <returns></returns>
+ [Route("Gy_MaterialController/DeltetBarCodeBill")]
+ [HttpGet]
+ public object DeltetBarCodeBill(string HInterID, string user)
+ {
+ //缂栬緫鏉冮檺
+ if (!DBUtility.ClsPub.Security_Log("Gy_BarCodeBillList_Edit", 1, false, user))
+ {
+ objJsonResult.code = "0";
+ objJsonResult.count = 0;
+ objJsonResult.Message = "鏃犲垹闄ゆ潈闄愶紒";
+ objJsonResult.data = null;
+ return objJsonResult;
+ }
+
+ try
+ {
+ Int64 lngBillKey = 0;
+ lngBillKey = DBUtility.ClsPub.isLong(HInterID);
+ if (lngBillKey == 0)
+ {
+ objJsonResult.code = "0";
+ objJsonResult.count = 0;
+ objJsonResult.Message = "鍗曟嵁ID涓虹┖锛�";
+ objJsonResult.data = null;
+ return objJsonResult;
+ }
+ DataSet Ds;
+ Ds = oCN.RunProcReturn("Select * from h_v_IF_BarCodeBillList Where HItemID=" + lngBillKey.ToString(), "h_v_IF_BarCodeBillList");
+ if (Ds.Tables[0].Rows.Count != 0)
+ {
+ oCN.BeginTran();
+ oCN.RunProc("Delete from Gy_BarCodeBill Where HItemID=" + lngBillKey.ToString());
+
+ oCN.Commit();
+ objJsonResult.code = "1";
+ objJsonResult.count = 1;
+ objJsonResult.Message = "鍒犻櫎鎴愬姛";
+ objJsonResult.data = null;
+ return objJsonResult;
+
+
+ }
+ else
+ {
+ objJsonResult.code = "0";
+ objJsonResult.count = 0;
+ objJsonResult.Message = "鍗曟嵁鏈壘鍒�";
+ objJsonResult.data = null;
+ return objJsonResult;
+ }
+ }
+ catch (Exception e)
+ {
+ oCN.RollBack();
+ objJsonResult.code = "0";
+ objJsonResult.count = 0;
+ objJsonResult.Message = e.Message;
+ objJsonResult.data = null;
+ return objJsonResult;
+ }
+
+ }
+ #endregion
/// <summary>
@@ -567,6 +700,7 @@
int HYear = DBUtility.ClsPub.isInt(DateTime.Now.Year);
double HPeriod = DBUtility.ClsPub.isLong(DateTime.Now.Month);
string HMouldNo = mainList[0].HMouldNo;
+ string HBarCode = mainList[0].HBarCode;
string HName = mainList[0].HName;
string HModel = mainList[0].HModel;
string HModel2 = mainList[0].HModel2;
@@ -619,7 +753,7 @@
",HOutComDate,HOutComNo,HDeptID,HSupID,HSupNumber" +
",HPrintQty,HMouldStatus,HWhID,HRoutingID,HCaveQty" +
",HBomID,HVersion,HSPGroupID,HSPID,HDesignLife,HNowSupID,HNowSupTypeID" +
- ",HUseLife,HLeaveLife,HProdQty,HProdWeight,HMouldOWNER,HSaveLife,HMouldDotCheckRuleInterID,HMouldMaintainRuleInterID" +
+ ",HUseLife,HLeaveLife,HProdQty,HProdWeight,HMouldOWNER,HSaveLife,HMouldDotCheckRuleInterID,HMouldMaintainRuleInterID,HBarCode" +
") " +
" values('" + BillType + "','" + BillType + "'," + HInterID + ",'" + HBillNo + "','" + HDate + "'" +
"," + HYear + "," + HPeriod + ",'" + HRemark + "','" + HMaker + "',getdate()" +
@@ -629,7 +763,7 @@
",'" + HOutComDate + "','" + HOutComNo + "'," + HDeptID + "," + HSupID + ",'" + HSupNumber + "'" +
"," + HPrintQty + ",'" + HMouldStatus + "'," + HWHID + "," + HRoutingID +","+ HCaveQty+
"," + HBOMID + ",'" + HVersion + "'," + HSPGroupID + "," + HSPID + ",'" + HDesignLife + "','" + HNowSupID+"','"+ HNowSupTypeID+"'"+
- ",'" + HUseLife + "','" + HLeaveLife + "','" + HProdQty + "','" + HProdWeight + "','" + HMouldOWNER + "','" + HSaveLife + "','" + HMouldDotCheckRuleInterID+"','"+ HMouldMaintainRuleInterID+"'"+
+ ",'" + HUseLife + "','" + HLeaveLife + "','" + HProdQty + "','" + HProdWeight + "','" + HMouldOWNER + "','" + HSaveLife + "','" + HMouldDotCheckRuleInterID+"','"+ HMouldMaintainRuleInterID+"','"+ HBarCode+"'"+
") ");
@@ -707,6 +841,7 @@
int HYear = DBUtility.ClsPub.isInt(DateTime.Now.Year);
double HPeriod = DBUtility.ClsPub.isLong(DateTime.Now.Month);
string HMouldNo = mainList[0].HMouldNo;
+ string HBarCode = mainList[0].HBarCode;
string HName = mainList[0].HName;
string HModel = mainList[0].HModel;
string HModel2 = mainList[0].HModel2;
@@ -787,16 +922,17 @@
",HSPGroupID=" + HSPGroupID.ToString() +
",HSPID=" + HSPID.ToString() +
",HDesignLife=" + HDesignLife.ToString() +
- ",HCaveQty="+ HCaveQty.ToString()+
+ ",HCaveQty=" + HCaveQty.ToString() +
",HUseLife=" + HUseLife.ToString() +
",HLeaveLife=" + HLeaveLife.ToString() +
",HProdQty=" + HProdQty.ToString() +
- ",HMouldDotCheckRuleInterID="+ HMouldDotCheckRuleInterID.ToString()+
+ ",HMouldDotCheckRuleInterID=" + HMouldDotCheckRuleInterID.ToString() +
",HMouldMaintainRuleInterID=" + HMouldMaintainRuleInterID.ToString() +
",HMouldOWNER='" + HMouldOWNER + "'" +
- ",HNowSupID="+HNowSupID.ToString()+
- ",HNowSupTypeID="+HNowSupTypeID.ToString()+
+ ",HNowSupID=" + HNowSupID.ToString() +
+ ",HNowSupTypeID=" + HNowSupTypeID.ToString() +
",HProdWeight=" + HProdWeight.ToString() +
+ ",HBarCode="+ HBarCode.ToString()+
" where HInterID=" + HInterID.ToString());
//淇敼瀛愰」鐩唬鐮�
@@ -949,12 +1085,13 @@
objJsonResult.code = "0";
objJsonResult.count = 1;
- objJsonResult.Message = "鍒濆鍖栨垚鍔燂紒";
+ objJsonResult.Message = "鍒濆鍖栨垚鍔燂紝鍗曟嵁鍙蜂负"+ HBillNo;
//WebAPIController.Add_Log("閫佽揣鍗曚笅鎺�", UserName, "鐢熸垚閫佽揣鍗�");
objJsonResult.data = 1;
return objJsonResult;
+
}
- catch (Exception e)
+ catch (Exception)
{
objJsonResult.code = "0";
objJsonResult.count = 0;
@@ -1103,5 +1240,105 @@
}
}
#endregion
+
+ #region [妯″叿妗f鎵归噺鐢熸垚]
+ [Route("Gy_Mould/SaveBatchGen_MouldFile")]
+ [HttpGet]
+ public object SaveBatchGen_MouldFile(long HInterID, string StarNum, string EndNum)
+ {
+ int StarNum1 = int.Parse(StarNum);
+ int EndNum1 = int.Parse(EndNum);
+ string j;
+ List<object> list = new List<object>();
+ try
+ {
+ DataSet ds = new DataSet();
+ ds = oCN.RunProcReturn("select * from Gy_MouldFileMain where HInterID=" + HInterID, "Gy_MouldFileMain");
+ DataRow dr = ds.Tables[0].Rows[0];
+ string Num = dr["HBarCode"].ToString();
+ string Num1 = Num.Substring(0,(Num.Length)-5);
+ oCN.BeginTran();
+ for (int i = StarNum1; i <= EndNum1; i++)
+ {
+ if (i<10)
+ {
+ j = "0000" + i;
+ }
+ else if (i<100)
+ {
+ j = "000" + i;
+ }
+ else if (i<1000)
+ {
+ j = "00" + i;
+ }
+ else if (i < 10000)
+ {
+ j = "0" + i;
+ }
+ else
+ {
+ j = ""+i;
+ }
+ DataSet ds1= oCN.RunProcReturn("select * from Gy_MouldFileMain where hbillno='" + (Num1 + j)+"'", "Gy_MouldFileMain");
+ if (ds1.Tables[0].Rows.Count == 0 || ds1 == null)
+ {
+ long HItemID = DBUtility.ClsPub.CreateBillID("3899", ref DBUtility.ClsPub.sExeReturnInfo);
+ //string HBillNo = DBUtility.ClsPub.CreateBillCode("3899", ref DBUtility.ClsPub.sExeReturnInfo, true);
+ string sql = string.Format(@"Insert Into Gy_MouldFileMain " +
+ "(HBillType,HBillSubType,HInterID,HBillNo,HDate" +
+ ",HYear,HPeriod,HRemark,HMaker,HMakeDate,HBarCode" +
+ ",HMouldNo,HName,HModel,HModel2,HDiameter" +
+ ",HSubjoin,HSubjoin2,HPICNo,HWorkMaterModel" +
+ ",HMaterID,HMaterNumber,HMouldType,HUnitID" +
+ ",HOutComDate,HOutComNo,HDeptID,HSupID,HSupNumber" +
+ ",HPrintQty,HMouldStatus,HWhID,HRoutingID,HCaveQty" +
+ ",HBomID,HVersion,HSPGroupID,HSPID,HDesignLife,HNowSupID,HNowSupTypeID" +
+ ",HUseLife,HLeaveLife,HProdQty,HProdWeight,HMouldOWNER,HSaveLife,HMouldDotCheckRuleInterID,HMouldMaintainRuleInterID" +
+ ") " +
+ " values('3899','3899'," + HItemID + ",'" + Num1 + j + "',getdate()" +
+ "," + dr["HYear"] + "," + dr["HPeriod"] + ",'" + dr["HRemark"] + "','" + dr["HMaker"] + "',getdate(),'" + Num1 + j +
+ "','" + Num1 + j + "','" + dr["HName"] + "','" + dr["HModel"] + "','" + dr["HModel2"] + "','" + dr["HDiameter"] + "'" +
+ ",'" + dr["HSubjoin"] + "','" + dr["HSubjoin2"] + "','" + dr["HPICNo"] + "','" + dr["HWorkMaterModel"] + "'" +
+ "," + dr["HMaterID"] + ",'" + dr["HMaterNumber"] + "',0," + dr["HUnitID"] +
+ ",'" + dr["HOutComDate"] + "','" + dr["HOutComNo"] + "'," + dr["HDeptID"] + "," + dr["HSupID"] + ",'" + dr["HSupNumber"] + "'" +
+ "," + dr["HPrintQty"] + ",'" + dr["HMouldStatus"] + "'," + dr["HWHID"] + "," + dr["HRoutingID"] + ",'" + dr["HCaveQty"] +
+ "'," + dr["HBOMID"] + ",'" + dr["HVersion"] + "'," + dr["HSPGroupID"] + "," + dr["HSPID"] + ",'" + dr["HDesignLife"] + "','" + dr["HNowSupID"] + "','" + dr["HNowSupTypeID"] + "'" +
+ ",'" + dr["HUseLife"] + "','" + dr["HLeaveLife"] + "','" + dr["HProdQty"] + "','" + dr["HProdWeight"] + "','" + dr["HMouldOWNER"] + "','" + dr["HSaveLife"] + "','" + dr["HMouldDotCheckRuleInterID"] + "','" + dr["HMouldMaintainRuleInterID"] + "'" +
+ ") ");
+ oCN.RunProc(sql);
+
+ //瀛愯〃
+ oCN.RunProc("Insert into Gy_MouldFileSub " +
+ " (HInterID,HEntryID,HRemark" +
+ ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
+ ") " +
+ " values('" + HItemID + "',0,''" +
+ ",0,0,'','',0,0 " +
+ ") ");
+ }
+ else
+ {
+ list.Add(ds1.Tables[0].Rows[0]["HBillNo"].ToString());
+ }
+ }
+ oCN.Commit();
+ objJsonResult.code = "1";
+ objJsonResult.count = 1;
+ objJsonResult.Message = "鎵归噺鐢熸垚鎴愬姛锛�";
+ objJsonResult.list = list;
+ return objJsonResult;
+ }
+ catch (Exception e)
+ {
+ oCN.RollBack();
+ objJsonResult.code = "0";
+ objJsonResult.count = 0;
+ objJsonResult.Message = "鎵归噺鐢熸垚澶辫触锛�" + e.ToString();
+ objJsonResult.data = null;
+ return objJsonResult;
+ }
+ }
+ #endregion
}
}
\ No newline at end of file
--
Gitblit v1.9.1