diff --git a/ZR.Admin.WebApi/Extensions/TasksExtension.cs b/ZR.Admin.WebApi/Extensions/TasksExtension.cs index b1b11b1..80faf6b 100644 --- a/ZR.Admin.WebApi/Extensions/TasksExtension.cs +++ b/ZR.Admin.WebApi/Extensions/TasksExtension.cs @@ -1,4 +1,5 @@ using Quartz.Spi; +using SqlSugar; using SqlSugar.IOC; using ZR.Model.System; using ZR.Tasks; @@ -49,5 +50,29 @@ namespace ZR.Admin.WebApi.Extensions return app; } + /// + /// 初始化字典 + /// + /// + /// + public static IApplicationBuilder UseInit(this IApplicationBuilder app) + { + Console.WriteLine("初始化字典数据..."); + var db = DbScoped.SugarScope; + var types = db.Queryable() + .Where(it => it.Status == "0") + .Select(it => it.DictType) + .ToList(); + + //上面有耗时操作写在Any上面,保证程序启动后只执行一次 + if (!db.ConfigQuery.Any()) + { + foreach (var type in types) + { + db.ConfigQuery.SetTable(it => SqlFunc.ToString(it.DictValue), it => it.DictLabel, type, it => it.DictType == type); + } + } + return app; + } } } diff --git a/ZR.Admin.WebApi/Program.cs b/ZR.Admin.WebApi/Program.cs index dabf9d1..1ba7715 100644 --- a/ZR.Admin.WebApi/Program.cs +++ b/ZR.Admin.WebApi/Program.cs @@ -120,6 +120,9 @@ if (builder.Environment.IsProduction()) //恢复/启动任务 app.UseAddTaskSchedulers(); } +//初始化字典数据 +app.UseInit(); + //使用swagger app.UseSwagger(); //启用客户端IP限制速率 diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt index 7cdf38a..bf94f8b 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplControllers.txt @@ -136,7 +136,7 @@ $if(replaceDto.ShowBtnExport) { parm.PageNum = 1; parm.PageSize = 100000; - var list = _${replaceDto.ModelTypeName}Service.GetList(parm).Result; + var list = _${replaceDto.ModelTypeName}Service.ExportList(parm).Result; if (list == null || list.Count <= 0) { return ToResponse(ResultCode.FAIL, "没有要导出的数据"); diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt index 802ed6f..57c2131 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplDto.txt @@ -38,7 +38,7 @@ $if(item.IsRequired) $end $if(replaceDto.ShowBtnExport) $if(item.IsExport) - [ExcelColumn(Name = "$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}"$if(item.CsharpType == "DateTime"), Format = "yyyy-MM-dd HH:mm:ss"$end)] + [ExcelColumn(Name = "$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}"$if(item.CsharpType == "DateTime"), Format = "yyyy-MM-dd HH:mm:ss", Width = 20$end)] [ExcelColumnName("$if(item.ColumnComment == "")${item.CsharpField}${else}${item.ColumnComment}${end}")] $else [ExcelIgnore] @@ -63,6 +63,13 @@ $if(replaceDto.ShowBtnExport) [ExcelIgnore] $end public List<${genTable.SubTable.ClassName}Dto> ${genTable.SubTable.ClassName}Nav { get; set; } +$end +$foreach(column in dicts) +$if(column.IsExport) + [ExcelColumn(Name = "$if(column.ColumnComment == "")${column.CsharpField}${else}${column.ColumnComment}${end}")] + public string ${column.CsharpField}Label { get; set; } + +$end $end } } \ No newline at end of file diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt index b2ae84b..a481b64 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplIService.txt @@ -18,6 +18,7 @@ namespace ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNam $if(genTable.TplCategory == "tree") List<${replaceDto.ModelTypeName}> GetTreeList(${replaceDto.ModelTypeName}QueryDto parm); $end + ${replaceDto.ModelTypeName} Add${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm); int Update${replaceDto.ModelTypeName}(${replaceDto.ModelTypeName} parm); @@ -28,5 +29,9 @@ $end $if(replaceDto.ShowBtnImport) (string, object, object) Import${replaceDto.ModelTypeName}(List<${replaceDto.ModelTypeName}> list); $end + +$if(replaceDto.ShowBtnExport) + PagedInfo<${replaceDto.ModelTypeName}Dto> ExportList(${replaceDto.ModelTypeName}QueryDto parm); +$end } } diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt index 8cd6983..cd8715e 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplService.txt @@ -27,28 +27,8 @@ namespace ${options.ServicesNamespace}.${options.SubNamespace} /// public PagedInfo<${replaceDto.ModelTypeName}Dto> GetList(${replaceDto.ModelTypeName}QueryDto parm) { - var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>(); + var predicate = QueryExp(parm); -$foreach(column in genTable.Columns) -$if(column.IsQuery) -$if(column.HtmlType == "selectMulti") - predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => parm.${column.CsharpField}.Contains(it.${column.CsharpField})); -$elseif(column.CsharpType == "string") - predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; -$elseif(column.CsharpType == "DateTime") -$if(column.HtmlType == "month") - DateTime monthEnd = Convert.ToDateTime(parm.${column.CsharpField}).AddMonths(1); - predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.${column.CsharpField} && it.${column.CsharpField} < monthEnd); -$else - predicate = predicate.AndIF(parm.Begin${column.CsharpField} == null, it => it.${column.CsharpField} >= DateTime.Now.ToShortDateString().ParseToDateTime()); - predicate = predicate.AndIF(parm.Begin${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.Begin${column.CsharpField}); - predicate = predicate.AndIF(parm.End${column.CsharpField} != null, it => it.${column.CsharpField} <= parm.End${column.CsharpField}); -$end -$elseif(column.CsharpType == "int" || column.CsharpType == "long") - predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; -$end -$end -$end var response = Queryable() $if(null != genTable.SubTableName && "" != genTable.SubTableName) //.Includes(x => x.${genTable.SubTable.ClassName}Nav) //填充子对象 @@ -199,5 +179,63 @@ $end return (msg, x.ErrorList, x.IgnoreList); } $end + +$if(replaceDto.ShowBtnExport) + /// + /// 导出${genTable.FunctionName} + /// + /// + /// + public PagedInfo<${replaceDto.ModelTypeName}Dto> ExportList(${replaceDto.ModelTypeName}QueryDto parm) + { + var predicate = QueryExp(parm); + + var response = Queryable() + .Where(predicate.ToExpression()) + .Select((it) => new ${replaceDto.ModelTypeName}Dto() + { +$foreach(column in dicts) +$if(column.DictType != "") + ${column.CsharpField}Label = it.${column.CsharpField}.GetConfigValue("${column.DictType}"), +$end +$end + }, true) + .ToPage(parm); + + return response; +$end + } + + /// + /// 查询导出表达式 + /// + /// + /// + private static Expressionable<${replaceDto.ModelTypeName}> QueryExp(${replaceDto.ModelTypeName}QueryDto parm) + { + var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>(); + +$foreach(column in genTable.Columns) +$if(column.IsQuery) +$if(column.HtmlType == "selectMulti") + predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => parm.${column.CsharpField}.Contains(it.${column.CsharpField})); +$elseif(column.CsharpType == "string") + predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; +$elseif(column.CsharpType == "DateTime") +$if(column.HtmlType == "month") + DateTime monthEnd = Convert.ToDateTime(parm.${column.CsharpField}).AddMonths(1); + predicate = predicate.AndIF(parm.${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.${column.CsharpField} && it.${column.CsharpField} < monthEnd); +$else + predicate = predicate.AndIF(parm.Begin${column.CsharpField} == null, it => it.${column.CsharpField} >= DateTime.Now.ToShortDateString().ParseToDateTime()); + predicate = predicate.AndIF(parm.Begin${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.Begin${column.CsharpField}); + predicate = predicate.AndIF(parm.End${column.CsharpField} != null, it => it.${column.CsharpField} <= parm.End${column.CsharpField}); +$end +$elseif(column.CsharpType == "int" || column.CsharpType == "long") + predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; +$end +$end +$end + return predicate; + } } } \ No newline at end of file