/// <summary>
/// 生成新增的单据ID的方法
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="KeyName">关键字名</param>
/// <param name="MaskSymbol">隐码字符格式,如:"RK-YYYY-MM-0001","沪发(-YYYY-)-001-号"</param>
/// <returns>返回一个新的单据的ID</returns>
private string BuileNewID(string TableName, string KeyName, string MaskSymbol)
{
StringBuilder strSql = new StringBuilder();
//SQL语句的拼接
strSql.Append("SELECT ");
strSql.Append(KeyName);
strSql.Append(" FROM ");
strSql.Append(TableName);
strSql.Append(" ORDER BY ");
strSql.Append(KeyName);
strSql.Append(" DESC");
//初始化新增组织的ID
string NewID = "";
string ID = "";
string ys = "Y"; //出现y的字符
string ms = "M"; //出现m的字符
if (MaskSymbol.Contains("y")) //判断如果存在小写y的就返回。证明格式不正确
{
return null;
}
if (MaskSymbol.Contains("m")) //判断如果存在小写m的就返回。证明格式不正确
{
return null;
}
NewID += MaskSymbol.Substring(0, MaskSymbol.IndexOf('-'));
int y = (MaskSymbol.Length - MaskSymbol.Replace(ys, "").Length) / ys.Length;
int m = (MaskSymbol.Length - MaskSymbol.Replace(ms, "").Length) / ys.Length;
string Year = System.DateTime.Now.Year.ToString(); //年份
string Modth = System.DateTime.Now.Month.ToString(); //月份
if (y == 4) //如果出现4个Y 格式是2010
{
NewID += Year;
}
else if (y == 2)// 如果是两位 格式是10
{
NewID += Year.Substring(Year.Length - 2);
}
if (m == 2) //如果格式是两MM证明是有月份
{
if (Modth.Length == 1)
{
NewID += Modth.PadLeft(2, '0');
}
else
{
NewID += Modth;
}
}
using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionString))
{
object obj = SqlHelper.ExecuteScalar(conn, CommandType.Text, strSql.ToString(), null);
if (obj != null)
{
ID = (string)obj;
NewID += ID.Substring(ID.Length - 2).ToString().PadLeft(4, '0');
}
else
{
NewID += ID.PadLeft(3, '0') + "1";
}
}
return NewID;
}