using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GenerateCode_GEBrilliantFactory { /// /// 存储过程文件生成 /// public class Procedure_Generate : BaseGenerate { /// /// 生成存储过程文件 /// /// /// /// /// /// /// /// /// 模块简写 /// /// public static string CreateProcText(string TableName, string TableAlias, string Author, string ChinaComment, string PimaryKey, string filePrefixName, string orderByName, string Modulelogo, List columnNameList) { try { StringBuilder sbText = new StringBuilder(); var str_query_1 = StructStrHelper.GetQueryColumnsStr(columnNameList); var str_query_2 = StructStrHelper.GetQueryColumnsStr(columnNameList, TableAlias);//带前缀 //1、分页存储过程 sbText.Append(GetPageProcStr(columnNameList,TableName, TableAlias, Author, ChinaComment, str_query_1, str_query_2, filePrefixName)); sbText.Append("\n\n"); //2、列表存储过程 sbText.Append(GetListProcStr(TableName, TableAlias, Author, ChinaComment, str_query_2, filePrefixName, orderByName)); sbText.Append("\n\n"); //2、得到一个实体存储过程 sbText.Append(GetSingleObjectProcStr(TableName, TableAlias, Author, ChinaComment, str_query_2, PimaryKey, filePrefixName, columnNameList)); sbText.Append("\n\n"); //3、增加一条记录存储过程 sbText.Append(GetAddProcStr(TableName, TableAlias, Author, ChinaComment,filePrefixName, columnNameList)); sbText.Append("\n\n"); //4、更新一条记录存储过程 sbText.Append(GetUpdateProcStr(TableName, TableAlias, Author, ChinaComment, PimaryKey, filePrefixName, columnNameList)); sbText.Append("\n\n"); //5、更新一条记录存储过程2 sbText.Append(GetUpdateProcStr2(TableName, TableAlias, Author, ChinaComment, PimaryKey, filePrefixName, columnNameList)); sbText.Append("\n\n"); //存储过程名 ProcName procName = CommonHelper.GetProcName(Modulelogo); sbText = sbText.Replace("$AddProcName$", procName.AddProc); sbText = sbText.Replace("$UpdateProcName$", procName.UpdateProc); sbText = sbText.Replace("$GetSingleProcName$", procName.GetSingleProc); sbText = sbText.Replace("$GetListProcName$", procName.ListProc); sbText = sbText.Replace("$GetPageListProcName$", procName.PageListProc); return sbText.ToString(); } catch (Exception) { throw; } } /// /// 分页存储过程 /// /// /// /// /// /// /// /// private static string GetPageProcStr(List columnNameList,string TableName, string TableAlias, string Author, string ChinaComment, string str_query_1, string str_query_2, string filePrefixName) { var str_page_proc = TextHelper.ReadText(@"Templete\proc\分页存储过程.txt"); str_page_proc = str_page_proc.Replace("$ProcName$", filePrefixName + "_GetPageList");//存储过程名 str_page_proc = str_page_proc.Replace("$TableName$", TableName);//表名 str_page_proc = str_page_proc.Replace("$TableAlias$", TableAlias);//别名 str_page_proc = str_page_proc.Replace("$Author$", Author);//作者 str_page_proc = str_page_proc.Replace("$ChinaComment$", ChinaComment);//中文注释 str_page_proc = str_page_proc.Replace("$CurDate$", CommonHelper.GetCurDate());//当前时间 str_page_proc = str_page_proc.Replace("$page_cols_params$", StructStrHelper.GetInputParamColumnsStrForQueryPage(columnNameList)); str_page_proc = str_page_proc.Replace("$where_cols_params$", StructStrHelper.GetCols_AssignmentStrForWherePage(TableAlias, columnNameList)); str_page_proc = str_page_proc.Replace("$strQueryCol_1$", str_query_1); str_page_proc = str_page_proc.Replace("$strQueryCol_2$", str_query_2); return str_page_proc; } /// /// 列表存储过程(不分页) /// /// /// /// /// /// /// private static string GetListProcStr(string TableName, string TableAlias, string Author, string ChinaComment, string str_query, string filePrefixName, string orderByName) { var str_list_proc = TextHelper.ReadText(@"Templete\proc\列表存储过程.txt"); str_list_proc = str_list_proc.Replace("$ProcName$", filePrefixName + "_GetList");//存储过程名 str_list_proc = str_list_proc.Replace("$TableName$", TableName);//表名 str_list_proc = str_list_proc.Replace("$TableAlias$", TableAlias);//别名 str_list_proc = str_list_proc.Replace("$Author$", Author);//作者 str_list_proc = str_list_proc.Replace("$ChinaComment$", ChinaComment);//中文注释 str_list_proc = str_list_proc.Replace("$CurDate$", CommonHelper.GetCurDate());//当前时间 str_list_proc = str_list_proc.Replace("$strQueryCol$", str_query); str_list_proc = str_list_proc.Replace("$orderByName$", orderByName); return str_list_proc; } /// /// 得到一个实体存储过程 /// /// /// /// /// /// /// /// /// private static string GetSingleObjectProcStr(string TableName, string TableAlias, string Author, string ChinaComment, string str_query_2, string PimaryKey, string filePrefixName, List columnNameList) { try { var str_single_proc = TextHelper.ReadText(@"Templete\proc\得到一个实体存储过程.txt"); str_single_proc = str_single_proc.Replace("$ProcName$", filePrefixName + "_GetModel");//存储过程名 str_single_proc = str_single_proc.Replace("$TableName$", TableName);//表名 str_single_proc = str_single_proc.Replace("$TableAlias$", TableAlias);//别名 str_single_proc = str_single_proc.Replace("$Author$", Author);//作者 str_single_proc = str_single_proc.Replace("$ChinaComment$", ChinaComment);//中文注释 str_single_proc = str_single_proc.Replace("$CurDate$", CommonHelper.GetCurDate());//当前时间 str_single_proc = str_single_proc.Replace("$Primary$", PimaryKey); str_single_proc = str_single_proc.Replace("$strQueryCol$", str_query_2); var columnModel = StructStrHelper.GetColumnModelByName(PimaryKey, columnNameList); if (columnModel == null) throw new Exception("没有找到相应的主键值!"); if (columnModel.DataType.ToUpper() == "INT" || columnModel.DataType.ToUpper() == "BIGINT") { str_single_proc = str_single_proc.Replace("$DataType$", columnModel.DataType); } else { str_single_proc = str_single_proc.Replace("$DataType$", columnModel.DataType + "(" + columnModel.DataLength + ")"); } return str_single_proc; } catch (Exception) { throw; } } /// /// 增加一条记录存储过程 /// /// /// /// /// /// /// /// /// private static string GetAddProcStr(string TableName, string TableAlias, string Author, string ChinaComment, string filePrefixName, List columnNameList) { var str_proc = TextHelper.ReadText(@"Templete\proc\增加一条记录存储过程.txt"); str_proc = str_proc.Replace("$ProcName$", filePrefixName + "_ADD");//存储过程名 str_proc = str_proc.Replace("$TableName$", TableName);//表名 str_proc = str_proc.Replace("$TableAlias$", TableAlias);//别名 str_proc = str_proc.Replace("$Author$", Author);//作者 str_proc = str_proc.Replace("$ChinaComment$", ChinaComment);//中文注释 str_proc = str_proc.Replace("$CurDate$", CommonHelper.GetCurDate());//当前时间 string str_insert_cols = StructStrHelper.GetColumnsStrNoIDForAdd(columnNameList, ""); str_proc = str_proc.Replace("$insert_cols$", str_insert_cols); str_proc = str_proc.Replace("$insert_cols_values$", StructStrHelper.GetColumnsStrNoIDForAdd(columnNameList, "@")); str_proc = str_proc.Replace("$insert_cols_params$", StructStrHelper.GetInputParamColumnsStrForAdd(columnNameList)); return str_proc; } /// /// 编辑一条记录存储过程 /// /// /// /// /// /// /// /// private static string GetUpdateProcStr(string TableName, string TableAlias, string Author, string ChinaComment, string PimaryKey, string filePrefixName, List columnNameList) { var str_proc = TextHelper.ReadText(@"Templete\proc\修改一条记录存储过程.txt"); str_proc = str_proc.Replace("$ProcName$", filePrefixName + "_Update");//存储过程名 str_proc = str_proc.Replace("$TableName$", TableName);//表名 str_proc = str_proc.Replace("$TableAlias$", TableAlias);//别名 str_proc = str_proc.Replace("$Author$", Author);//作者 str_proc = str_proc.Replace("$ChinaComment$", ChinaComment);//中文注释 str_proc = str_proc.Replace("$CurDate$", CommonHelper.GetCurDate());//当前时间 str_proc = str_proc.Replace("$Primary$", PimaryKey); str_proc = str_proc.Replace("$update_cols_params$", StructStrHelper.GetInputParamColumnsStrForUpdate(columnNameList)); str_proc = str_proc.Replace("$update_cols_assignment$", StructStrHelper.GetCols_AssignmentStrForUpdate(columnNameList)); return str_proc; } private static string GetUpdateProcStr2(string TableName, string TableAlias, string Author, string ChinaComment, string PimaryKey, string filePrefixName, List columnNameList) { var str_proc = TextHelper.ReadText(@"Templete\proc\修改一条记录存储过程2.txt"); str_proc = str_proc.Replace("$ProcName$", filePrefixName + "_Update");//存储过程名 str_proc = str_proc.Replace("$TableName$", TableName);//表名 str_proc = str_proc.Replace("$TableAlias$", TableAlias);//别名 str_proc = str_proc.Replace("$Author$", Author);//作者 str_proc = str_proc.Replace("$ChinaComment$", ChinaComment);//中文注释 str_proc = str_proc.Replace("$CurDate$", CommonHelper.GetCurDate());//当前时间 str_proc = str_proc.Replace("$Primary$", PimaryKey); str_proc = str_proc.Replace("$update_cols_params$", StructStrHelper.GetInputParamColumnsStrForUpdate(columnNameList)); str_proc = str_proc.Replace("$update_cols_assignment2$", StructStrHelper.GetCols_AssignmentStrForUpdate2(columnNameList)); return str_proc; } } }