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